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

Langchain+Pinecone+Gemini部分查询返回空响应问题求助

问题:Langchain检索链调用Gemini返回空响应
  • 已将《孙子兵法》嵌入向量存储至Pinecone,通过Langchain调用Gemini-pro查询时,部分问题返回空响应
  • 典型案例:查询"what is art of war?"可正常返回有效结果,但"what are considerations while attack by fire?"稳定返回空
  • 直接调用LLM能获取该问题的正确响应,但通过Langchain检索链调用失败;已禁用全部Gemini安全设置,问题仍存在

排查分析

  1. 检索召回异常:检索链的核心逻辑是先从Pinecone召回相关文档,再传给LLM生成回答。既然直接传入正确文档时LLM能正常响应,问题大概率出在检索阶段的文档召回或文档格式处理环节。
  2. 文档格式干扰:Langchain的create_stuff_documents_chain会自动拼接Document对象的page_content作为上下文,若召回文档存在换行、特殊字符等格式混乱情况,可能导致Gemini无法解析上下文,进而返回空。
  3. 检索参数适配问题:当前设置k=3召回3篇文档,但该问题的相关文档可能未被召回,或匹配度较低未进入结果集。

解决步骤

1. 调试检索召回结果

在调用检索链前,先打印召回的文档内容,确认是否获取到火攻相关的正确内容:

# 在创建retrieval_chain后添加调试代码
query = "what are considerations while attack by fire?"
docs = retriever.invoke(query)
print("召回的文档:")
for doc in docs:
    print(doc.page_content)
    print("---")

若召回文档为空或无关,需调整Pinecone检索参数:

  • 确认嵌入模型与存储向量时使用的模型一致
  • 增大召回数量或设置匹配度阈值:
    retriever = vectorstore.as_retriever(search_kwargs={"k": 5, "score_threshold": 0.7})
    

2. 优化上下文拼接格式

修改prompt模板,给每个文档添加编号,让上下文结构更清晰,避免格式混乱影响LLM解析:

template = """
你是《孙子兵法》专业解读助手,仅根据提供的上下文回答问题。
如果上下文没有相关信息,回答"我没有足够的信息回答这个问题。"

上下文:
{% for doc in context %}
{{ loop.index }}. {{ doc.page_content }}
{% endfor %}

问题:{input}

回答:
"""
prompt = PromptTemplate.from_template(template)

3. 检查完整响应对象

当前异常捕获仅处理顶层错误,Gemini返回空响应可能未抛出异常,需打印完整响应确认answer和context字段的具体内容:

response = retrieval_chain.invoke({"input": query})
print("完整响应对象:", response)
print("上下文内容:", response.get("context", []))

4. 更换LLM模型测试

尝试切换到gemini-1.5-flash,该模型对长文本和格式兼容性更好:

llm = ChatGoogleGenerativeAI(
    model= "gemini-1.5-flash",
    safety_settings={
        HarmCategory.HARM_CATEGORY_UNSPECIFIED: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_DEROGATORY: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_TOXICITY: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_VIOLENCE: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_SEXUAL: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_MEDICAL: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_DANGEROUS: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE,
    },
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:41:04