为了减少 RAG 流水线中的幻觉,请关注三个关键领域:提高检索质量、改进提示设计以及在生成过程中实施验证。 每个步骤都解决了特定故障点,在这些故障点中,不相关的信息或含糊不清的指令可能会导致模型发明不正确的细节。
1. 增强检索相关性 可靠输出的基础在于检索高质量的上下文。 首先,升级用于文档相似性搜索的嵌入模型。 例如,将通用的 sentence-transformers 替换为在您的数据上微调的特定领域模型(例如,用于医疗保健查询的生物医学模型)。 实施两阶段检索过程:首先使用快速向量搜索来获取 50-100 个候选对象,然后应用像交叉编码器这样的重新排序器来重新评分前 20 个结果。 这减少了传递给生成器的上下文中的噪声。 此外,在检索期间强制执行元数据过滤器(例如,日期范围或来源可信度)。 例如,法律聊天机器人可以优先考虑过去五年的法规,同时排除过时的判例。
2. 设计精确提示 明确指示生成器避免假设。 不要使用像“回答问题”这样的通用提示,而是使用约束模板
"Use ONLY the provided documents below. If the answer isn't found, say 'Not found.'
Documents: [context]
Question: [query]"
在提示本身中添加验证步骤
1. Check if any document explicitly answers the question.
2. If yes, quote the relevant text.
3. If no, state 'Insufficient data.'
对于技术领域,包括格式要求,例如“引用所有声明的文档 ID”。 使用评估数据集测试变体以衡量幻觉率。
3. 在生成期间/之后进行验证 配置语言模型以优先考虑事实一致性。 降低温度(例如,0.3)以减少创造性的猜测,并设置 max_length 以防止冗长、无根据的解释。 使用像 Guidance 或 LMQL 这样的约束解码库来强制模型逐字引用检索到的文档片段。 生成后,运行检查器模型(例如,较小的 BERT 分类器)通过将响应与原始上下文进行比较来标记不支持的声明。 对于像医疗建议这样的关键应用,对超过置信度阈值的输出实施人工审查循环。
通过结合这些策略 - 更好的上下文检索、明确的指令和输出验证 - 开发人员可以系统地减少幻觉,而无需完全的模型重新训练。