基于Azure OpenAI与Embeddings的RAG聊天应用知识库调用异常排查
问题分析:Azure OpenAI RAG应用调用模型自身知识库的原因
可能的原因及对应解决方法
1. Azure OpenAI部署的模型配置异常
- 检查Azure OpenAI Studio中
gpt-35-turbo部署的附加功能,部分部署可能默认开启了平台层面的知识增强选项,导致模型优先调用自身训练数据而非仅依赖传入的RAG上下文。 - 解决:在Azure OpenAI Studio的部署管理页面,关闭不必要的知识增强类附加配置,确保模型仅使用prompt中传入的上下文内容。
2. Prompt指令约束强度不足
- 当前system prompt中"Don't use any other data sources except the provided pdf"的表述对Azure版本模型的约束性不够,模型可能忽略该指令。
- 解决:强化指令表述,例如修改为:
同时确认你必须完全依赖下方提供的PDF上下文内容回答问题,绝对禁止使用自身知识库中的任何信息。如果上下文无相关内容,直接回答"我不知道"。{context}变量在prompt中的位置正确,确保上下文内容被模型正确识别。
3. 文本分割参数不合理导致检索失效
- 你设置的
RecursiveCharacterTextSplitter参数chunk_size=10过小,生成的文本碎片几乎不具备有效语义信息,检索器无法匹配到相关内容,模型只能 fallback 到自身知识库。 - 解决:调整分割参数,建议将
chunk_size设为500-1000,chunk_overlap设为50-100,保证生成的文本块具备足够的语义信息供检索匹配。
4. AzureChatOpenAI实例缺失部署名称参数
- 你的
AzureChatOpenAI实例未指定azure_deployment参数,LangChain可能无法关联到你在Azure上创建的特定模型部署,导致使用默认配置(可能包含额外知识增强)。 - 解决:补充部署名称参数:
client = AzureChatOpenAI( api_key = os.getenv("AZURE_OPENAI_API_KEY"), api_version = os.getenv("AZURE_OPENAI_API_VERSION"), azure_endpoint = os.getenv("AZURE_OPENAI_API_BASE"), azure_deployment="你的gpt-35-turbo部署名称" # 新增此参数 )
5. Embeddings与LLM的API版本不兼容
AzureOpenAIEmbeddings使用的api_version为2024-04-01-preview,而AzureChatOpenAI使用环境变量中的版本,两者版本不一致可能导致检索匹配精度下降,最终模型 fallback 到自身知识。- 解决:确保两者使用相同的
api_version,例如统一设置为2024-04-01-preview。
内容的提问来源于stack exchange,提问作者Khair Ahammed
相关产品推荐
相关产品推荐

