1. Chroma 是什么?
Chroma 是一个开源的向量数据库,专为 AI 应用设计,特别是用于存储和检索嵌入向量(embedding vectors)。它允许开发者高效地存储、索引和查询大量的文本嵌入或其他向量数据。Chroma 特别适合构建基于语义搜索、推荐系统和 RAG(检索增强生成)等应用程序,可以作为 LLM(大型语言模型)应用的记忆组件。
2. win 本地如何部署 Chroma?
在 Windows 上部署 Chroma 有几种方式,以下是最常用的方法:
方法一:使用 pip 安装(Python 客户端)
-
确保已安装 Python(建议 3.8+)
-
打开命令提示符或 PowerShell,运行:
pip install chromadb
-
这将安装 Chroma 的 Python 客户端,默认以嵌入式模式运行
方法二:使用 Docker 部署(服务器模式)
-
安装 Docker Desktop for Windows
-
打开命令提示符或 PowerShell,运行:
docker pull ghcr.io/chroma-core/chroma:latest
-
启动 Chroma 服务器:
docker run -p 8000:8000 ghcr.io/chroma-core/chroma:latest
-
安装 Python 客户端来连接服务器:
pip install chromadb
3. LangChain 如何使用 Chroma?
LangChain 提供了与 Chroma 的集成,可以轻松将其用作向量存储。以下是基本使用方法:
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.document_loaders import TextLoader
# 1. 加载文档
loader = TextLoader("path/to/your/document.txt")
documents = loader.load()
# 2. 分割文档
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
# 3. 初始化嵌入模型
embedding_function = OpenAIEmbeddings()
# 4. 创建 Chroma 向量存储
db = Chroma.from_documents(
documents=docs,
embedding=embedding_function,
persist_directory="./chroma_db" # 可选:持久化存储路径
)
# 5. 搜索相似内容
query = "你的查询问题"
docs = db.similarity_search(query)
print(docs[0].page_content)
# 6. 使用 LangChain 链式调用 (可选)
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
qa = RetrievalQA.from_chain_type(
llm=OpenAI(),
chain_type="stuff",
retriever=db.as_retriever()
)
result = qa.run(query)
print(result)
如果您使用的是客户端-服务器模式,可以这样连接:
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
embedding_function = OpenAIEmbeddings()
# 连接到运行中的 Chroma 服务器
db = Chroma(
client_settings=chromadb.config.Settings(
chroma_api_impl="rest",
chroma_server_host="localhost",
chroma_server_http_port="8000"
),
embedding_function=embedding_function,
collection_name="your_collection"
)
这是基础用法,您可以根据需求进一步定制搜索参数、过滤条件以及与其他 LangChain 组件的集成。