在 LangChain 中,Chroma 是一个向量存储(Vector Store)的实现,用于高效地存储和检索嵌入向量(embeddings)。当你执行:
1 | from langchain_community.vectorstores import Chroma |
你实际上是导入了 LangChain 对 Chroma 向量数据库的封装接口。
Chroma 的主要作用包括:
存储嵌入向量(Embeddings)
将文本(如文档、段落、句子)通过嵌入模型(如 OpenAI Embeddings、Sentence Transformers 等)转换为高维向量,并将这些向量连同原始文本一起存入 Chroma 数据库。支持语义相似性搜索(Semantic Search)
给定一个查询(query),将其也转换为嵌入向量,然后在 Chroma 中查找与之最相似的向量(通常使用余弦相似度或 L2 距离),从而返回语义上最相关的文本片段。与 LangChain 无缝集成
在 RAG(Retrieval-Augmented Generation)等应用中,Chroma 常被用作检索器(Retriever),为大语言模型(LLM)提供上下文信息。例如:1
2retriever = vectorstore.as_retriever()
docs = retriever.invoke("你的问题")支持元数据过滤
除了向量本身,Chroma 还允许为每个文档附加元数据(如来源、时间、类别等),并在检索时按条件过滤。本地/内存/持久化支持
Chroma 可以运行在内存中(用于测试),也可以持久化到磁盘,甚至支持客户端-服务器模式(通过 Chroma Server)。
简单示例:
1 | from langchain_community.vectorstores import Chroma |
总结:
Chroma 在 LangChain 中的作用是作为一个轻量级、易用、高效的向量数据库,用于存储文本的嵌入表示,并支持基于语义的快速检索,是构建 RAG 应用、问答系统、智能搜索等场景的核心组件之一。