使用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
相关产品推荐
相关产品推荐

