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

使用LangChain与OpenAI Embeddings时无法获取源文档问题

问题排查:LangChain检索返回文档数量为0的解决办法

可能的原因及对应方案

  • 文档拆分后无有效文本
    先验证拆分后的texts是否包含有效内容,在拆分步骤后添加代码检查:

    print(f"拆分后文档块数量:{len(texts)}")
    print(f"首个文档块内容预览:{texts[0].page_content[:100]}")
    

    如果len(texts)为0,需排查:

    • ./files/目录下是否存在PDF文件,路径是否与脚本运行目录匹配
    • PyPDFLoader是否正常安装,脚本是否有文件读取权限
    • 文档拆分参数是否合理(比如RecursiveCharacterTextSplitter的chunk_size是否过大)
  • Embedding实例不匹配
    存储和加载Chroma时必须使用完全相同类型、同参数的Embeddings实例,不能存储用A模型加载换B模型,哪怕是同模型也要保证实例一致,建议直接复用存储时的embeddings对象。

  • 检索查询与文档相关性极低
    可调整检索规则强制返回符合条件的文档:

    retriever = docsearch.as_retriever(
        search_type="similarity_score_threshold",
        search_kwargs={"k":5, "score_threshold":0.5}
    )
    

    也可先降低k值(比如设为1)测试基础检索是否生效。

  • Chroma持久化未完成
    存储文档后必须调用persist()确保数据写入磁盘:

    docsearch = Chroma.from_documents(texts, embeddings, persist_directory=persist_directory)
    docsearch.persist()  # 缺失这行会导致持久化目录无数据
    

    同时检查persist_directory下是否生成chroma.sqlite3和embeddings文件夹,没有则说明存储环节失败。

内容的提问来源于stack exchange,提问作者Diego Quirós

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:08:16