如何通过编程判断Azure OpenAI未在索引文档中找到结果?
检测Azure OpenAI结合Azure Search自带数据场景下的答案匹配状态
以下是几种可靠的编程检测方法:
借助Azure Search检索元数据判断
单独调用Azure Search的检索API,查看返回结果的@search.score字段,设定合理的得分阈值(比如0.1)。当得分低于阈值时,说明检索到的文档与用户查询相关性极低,对应AI生成的“未找到有效信息”场景。同时可辅助检查@search.highlights字段,若没有高亮内容,进一步印证文档与查询无关。通过提示词强制返回结构化标记
在系统提示词中明确要求AI返回固定标记区分结果状态:- 当检索文档能回答问题时,在答案末尾添加
[FOUND_VALID_ANSWER] - 当无法从文档获取有效信息时,添加
[NO_VALID_ANSWER]
示例提示词片段:
你必须基于提供的检索文档回答用户问题。若文档包含有效回答信息,回答结束后必须添加标记[FOUND_VALID_ANSWER];若文档无相关内容,回答结束后必须添加标记[NO_VALID_ANSWER]。编程时只需检查返回结果中是否包含对应标记即可,完全规避AI生成表述不一致的问题。
- 当检索文档能回答问题时,在答案末尾添加
语义相似度分析检索文档与查询的匹配度
利用Azure OpenAI的Embeddings API,对用户查询和检索到的文档内容做语义相似度计算:- 提取用户查询文本和每个检索文档的内容
- 分别生成两者的Embedding向量
- 计算余弦相似度并取平均值
- 设定相似度阈值(比如0.7),低于阈值则判定为未找到有效答案
启用严格检索模式固定返回逻辑
在调用Azure OpenAI自带数据API时,设置retrieval_mode=strict参数。该模式下,若检索文档无法回答问题,系统会返回配置中预设的固定提示消息,而非AI动态生成的表述。此时只需匹配预设的固定字符串即可判断结果状态。
内容的提问来源于stack exchange,提问作者Element
相关产品推荐
相关产品推荐

