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

Langchain CSV查询仅返回4条结果?排查向量检索问题

排查CSV查询仅返回少量结果的建议

问题背景

使用Langchain结合OpenAI API查询500行的CSV文件,代码可正常运行,但仅返回4条结果。已确认CSVLoader能加载所有记录,推测问题出在嵌入/向量环节。

排查步骤

  • 检查文本拆分后的文档数量:打印len(documents),确认拆分后的文档总数是否与CSV行数匹配。CharacterTextSplitter按字符数拆分,若CSV单条记录过长被拆分,或拆分逻辑误将多条记录合并,会导致文档数量异常。
  • 调整检索器返回条数:默认检索器仅返回4条结果,可通过指定search_kwargs调整返回数量:
    retriever = persisted_vectorstore.as_retriever(search_kwargs={"k": 20})
    
    增加返回条数后,观察结果是否包含更多目标数据。
  • 验证嵌入与检索的相关性:
    1. 手动挑选几条符合查询条件(2024年3月1日之后的交易)的文档。
    2. 生成查询向量:query_vector = embeddings.embed_query(query)
    3. 执行向量检索:results = vectorstore.similarity_search_by_vector(query_vector, k=10)
      检查返回结果是否包含目标数据,若不包含,说明嵌入模型未能正确捕捉查询与文档的语义关联,需调整文档格式或查询表述。
  • 确认CSVLoader的输出格式:打印data中的几条Document内容,检查日期、金额等字段的格式是否清晰(比如日期是否为YYYY-MM-DD标准格式)。格式不规范会导致嵌入模型无法准确识别关键信息,影响检索结果。
  • 更换文本拆分策略:CSV的每行记录本身是独立语义单元,可尝试跳过拆分直接使用原加载数据:
    documents = data  # 替代splitter.split_documents(data)
    
    或改用RecursiveCharacterTextSplitter,避免CharacterTextSplitter破坏单条记录的完整性。
  • 验证FAISS向量库的存储量:打印vectorstore.index.ntotal,确认向量总数与拆分后的文档数量一致。若数量不匹配,说明部分文档生成嵌入时丢失(比如空内容文档),需检查documents中是否存在无效条目。

原代码

csv_loader = CSVLoader(csv_file_path)
data = csv_loader.load()

splitter = CharacterTextSplitter(separator = "\n",
                            chunk_size=500, 
                            chunk_overlap=0,
                            length_function=len)
documents = splitter.split_documents(data)

embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(documents, embeddings)
vectorstore.save_local("faiss_index_constitution")
persisted_vectorstore = FAISS.load_local("faiss_index_constitution", embeddings, allow_dangerous_deserialization=True)
query = "What's the sum of amount of the transactions since 1 March 2024?"

retriever = persisted_vectorstore.as_retriever()

chain = RetrievalQA.from_llm(llm=model, retriever=retriever, verbose=True)

chain_input = {"query": query, "context": None}
result = chain(chain_input)

return result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:42:05