为了检测 RAG 生成的回答中的幻觉,开发者可以使用将生成输出与检索到的源文本进行比较的技术来验证事实一致性。三种主要方法包括语义相似度检查、蕴含关系验证和实体/关系验证。这些方法侧重于确保回答中的每个事实性陈述都与检索到的文档中的证据一致。例如,如果 RAG 模型声称“地球核心温度为 6000°C”,开发者可以将其与检索到的来源进行交叉引用,以确认温度值和上下文是否匹配。
实现这一目标的一种实用方法是将生成的回答分解为单个陈述,并将每个陈述与检索到的文本进行比较。对于语义相似度,句子嵌入模型(例如 SBERT)等工具可以将陈述和源文本编码成向量,然后计算余弦相似度分数。相似度分数较低(例如低于 0.7)的陈述可能表明存在幻觉。对于蕴含关系验证,谷歌的 T5 或基于 BERT 的自然语言推理(NLI)模型等模型可以判断一个陈述是否被源文本支持(蕴含)、矛盾或与源文本无关。例如,如果生成的文本声称“研究 X 发现效率提高了 30%”,但源文本只说“研究 X 观察到效率有所提高”,蕴含关系模型会将其标记为不具体或未经证实。
开发者还可以使用命名实体识别(NER)和关系提取来验证实体(例如人物、日期)及其关系。spaCy 或 Stanza 等库可以从回答和源文本中提取实体,从而可以直接比较。例如,如果回答中提到“史密斯博士在 2023 年进行了试验”,但源文本只提及“研究人员在 2021 年进行的一项研究”,实体和日期的不匹配就会被标记出来。FAISS 或 Annoy 等工具可以为检索到的文档建立索引以进行快速相似度搜索,而自定义脚本可以自动实现陈述与源文本的对齐。将这些技术整合成一个流程——分割回答、检索相关的源片段并应用验证模型——提供了一种系统化的方法来检测和减少 RAG 输出中的幻觉。