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

如何用LangChain获取向量数据库查询结果的信息来源?

解决LangChain查询时获取信息来源的问题

核心问题出在你导入数据时没有给documents对象添加包含来源信息的元数据,导致查询时无法返回来源。以下是具体解决步骤:

1. 给文档添加元数据

在创建LangChain的Document对象时,必须传入metadata参数,把来源信息(URL、文档ID等)存进去。示例代码:

from langchain.docstore.document import Document

# 假设你有原始文本和对应的来源列表
raw_texts = ["企业简介内容...", "产品介绍内容..."]
sources = ["www.site.com/about", "document_156"]

# 构建带元数据的Document对象列表
documents = []
for text, source in zip(raw_texts, sources):
    doc = Document(
        page_content=text,
        metadata={"source": source}  # 这里存入来源信息
    )
    documents.append(doc)

2. 重新导入向量数据库

用上面带元数据的documents对象重新执行你的导入代码:

db = ElasticVectorSearch.from_documents(
        documents,
        embeddings,
        elasticsearch_url="http://localhost:9200",
        index_name="elastic-index",
    )

3. 查询时获取来源信息

执行similarity_search后,每个返回结果的metadata字段里就会包含你存入的来源信息,直接提取即可:

results = db.similarity_search("你的查询内容")
for result in results:
    print(f"内容:{result.page_content}")
    print(f"来源:{result.metadata.get('source', '未知来源')}")
    print("---")

注意事项

  • 如果你的原始数据是从文件/网页批量导入的,确保在加载阶段就把来源信息提取出来并加入metadata
  • 元数据字段名可以自定义,比如用url、doc_id等,只要保持前后一致即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:52:56