You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用LangChain对接Docker部署的Chroma DB实现指定知识库问答?

基于Docker部署的Chroma DB与LangChain实现专属知识库问答

1. 连接Docker部署的Chroma DB

由于Chroma是Docker部署的,需通过HTTP远程连接而非本地文件存储。先确认Chroma容器的端口映射(默认容器内8000端口映射到主机8000),然后初始化Chroma向量存储时指定目标collection为"president",必须保证嵌入模型与文件上传时使用的完全一致,否则检索会失效。

代码示例:

from langchain.vectorstores import Chroma
from langchain.embeddings.openai import OpenAIEmbeddings
# 若用开源嵌入模型,可替换为以下代码
# from langchain.embeddings import HuggingFaceEmbeddings

# 初始化嵌入模型(和文件上传时的模型保持一致)
embeddings = OpenAIEmbeddings(api_key="你的API密钥")
# 开源模型示例
# embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")

# 连接Docker部署的Chroma DB,指定目标collection
chroma_db = Chroma(
    collection_name="president",
    embedding_function=embeddings,
    persist_directory="http://localhost:8000"  # Docker容器映射的主机地址+端口
)

2. 构建检索式问答链

使用LangChain的RetrievalQA链,将Chroma作为检索源结合LLM实现专属知识库问答。小知识库推荐用stuff链类型,大知识库可根据上下文限制切换为map_reduce或refine。

代码示例:

from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
# 若用开源LLM,可替换为以下代码
# from langchain.llms import HuggingFacePipeline

# 初始化LLM
llm = OpenAI(api_key="你的API密钥", temperature=0)
# 开源LLM示例(需提前配置HuggingFacePipeline)
# llm = HuggingFacePipeline(pipeline=你的LLM管道)

# 构建问答链
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=chroma_db.as_retriever(search_kwargs={"k": 3}),  # 检索前3条相关文档
    return_source_documents=True  # 可选:返回参考的源文档
)

# 测试问答
query = "关于总统的主要政策有哪些?"
result = qa_chain({"query": query})
print("回答:", result["result"])
# 可选:打印参考的源文档片段
print("\n参考文档:")
for doc in result["source_documents"]:
    print(doc.page_content[:200] + "...")

3. 关键注意事项

  • 嵌入模型一致性:文件上传生成嵌入的模型必须和问答阶段的模型完全相同,否则向量无法匹配,检索结果失效。
  • 容器网络配置:若Web应用与Chroma容器不在同一主机,需将persist_directory改为Chroma容器的可访问IP+端口,同时确保容器防火墙允许该端口的HTTP请求。
  • 链类型与检索参数调优:文档数量多、单篇篇幅长时,替换为map_reduce或refine链类型;通过search_kwargs={"k": N}调整检索文档数量,平衡上下文负担与信息完整性。

内容的提问来源于stack exchange,提问作者Christoffer Nielsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:22:48