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

如何在LangChain中将字符串格式的问答数据存入Chroma DB?

如何直接将字符串格式的问答存入LangChain的Chroma DB

Chroma的from_documents方法不支持直接传入原始字符串,必须将字符串包装成LangChain的Document对象才能存储,下面是具体实现方案:

方案1:将问答对合并为单个文档存储

这种方式适合把查询和对应答案作为整体存储,方便后续检索时直接获取完整问答:

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.docstore.document import Document

def store_query_and_answer(query, answer):
    embeddings = OpenAIEmbeddings()
    # 拼接问答内容,添加元数据用于标识和检索
    qa_content = f"查询:{query}\n答案:{answer}"
    qa_doc = Document(page_content=qa_content, metadata={"category": "qa_pair", "query": query})
    # 初始化Chroma并存储文档,持久化到本地目录
    db = Chroma.from_documents(documents=[qa_doc], embedding=embeddings, persist_directory="./chroma_db")
    db.persist()

方案2:分别存储查询和答案,用元数据关联

如果需要单独管理查询和答案,可以给它们添加相同的标识元数据,方便后续关联:

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.docstore.document import Document
import uuid

def store_query_and_answer(query, answer):
    embeddings = OpenAIEmbeddings()
    # 生成唯一ID关联问答对
    qa_uuid = str(uuid.uuid4())
    # 创建查询和答案的Document对象
    query_doc = Document(page_content=query, metadata={"type": "query", "qa_id": qa_uuid})
    answer_doc = Document(page_content=answer, metadata={"type": "answer", "qa_id": qa_uuid})
    # 批量存入Chroma数据库
    db = Chroma.from_documents(documents=[query_doc, answer_doc], embedding=embeddings, persist_directory="./chroma_db")
    db.persist()

注意事项

  • 每次调用from_documents时,指定相同的persist_directory会追加数据到现有数据库,若需重建可以手动清理目录或使用版本支持的reset_db=True参数。
  • 元数据可以根据业务需求自定义字段,比如添加时间戳、用户ID等,便于后续精准检索。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:00:16