一、引言
在大模型的实际应用落地过程中,幻觉(Hallucination)是一个核心挑战。对于语言模型而言,当生成的文本语法正确流畅,但与原文不符(Faithfulness)或事实不符(Factualness)时,模型便出现了幻觉的问题。在传统自然语言处理中,幻觉一般指模型输出与原文信息存在冲突,或添加不在原文的额外信息。在大模型时代,不局限于特定任务,幻觉往往指的是与世界知识不一致,即不符合事实。
尤其是在对输出内容真实性的容忍度较低的场景下(如医疗、法律、金融),大模型的幻觉现象会严重影响其落地效果,甚至引发合规风险。因此,纠正这些幻觉现象,构建可信的大模型应用,是一个值得长期关注的问题。
1.1 幻觉产生的原因
大模型产生幻觉的原因复杂多样,主要包括以下几个方面:
- 数据缺陷:从训练数据中获得事实知识的利用率较低。回答敏感问题时,大模型需要使用足够客观的回答依据、输出安全的回复和应答策略。而训练数据中往往存在不可控的错误信息和带有主观意识的偏见信息,这样的知识在解决敏感问题案例中是不允许被使用的。
- 知识边界:敏感问题往往具有高时效性的特点,比如时政新闻、最新赛事结果等。而大模型往往存在领域知识缺陷和过时的事实知识,训练数据都有严重的滞后性,导致大模型在回答最新的敏感问题时产生幻觉。
- 模式依赖:训练过程中,大模型往往会过度依赖训练数据的一些统计模式。例如,如果训练数据中频繁共现'加拿大'和'多伦多',那么大模型可能会错误地将多伦多识别为加拿大的首都。此外,大模型还可能会出现长尾知识回忆不足、难以应对复杂推理的情况。
二、检索增强生成(RAG)原理
检索增强生成(Retrieval Augmented Generation,RAG)在 LLM 诞生之前已由 Facebook 在 2020 年提出,用于改进 BART 模型效果。其主要思路是将检索组件与生成组件相结合,利用检索结果辅助答案的生成。
在大模型时代,纯粹参数化的语言模型(LLM)将从大量语料库中获取的世界知识存储在模型参数中。为了解决上述的大语言模型在安全领域的局限性问题,语言模型可以采用半参数化方法,将非参数化语料库与参数化模型整合在一起。这种方法被称为检索增强生成(RAG)。
在推理过程中,RAG 使用检索到的数据作为参考来组织答案,从外部知识源中动态检索信息。这大大提高了响应的准确性和相关性,有效地解决了 LLM 中存在的幻觉问题。RAG 巧妙地将生成模型强大的能力与检索模块的灵活性相结合,为纯参数化模型固有的不完整和不充分的知识问题提供了一种有效的解决方案。
2.1 RAG 标准流程
常规的 RAG 范式主要包含两个阶段:
- 数据准备阶段:这是一个离线过程,主要包括数据提取、文本分割(Chunking)、向量化(Embedding)、数据入库等环节。私域数据经过处理后构建索引并存入向量数据库。
- 应用阶段:这是一个在线过程。用户提问后,系统通过高效的检索方法召回与提问最相关的知识片段,将其融入 Prompt;大模型参考当前提问和相关知识,生成相应的答案。
关键环节包括:数据检索(召回)、注入 Prompt、LLM 生成答案。
2.2 常规 RAG 的局限性
虽然 RAG 有效缓解了幻觉,但在处理高敏感、高时效性问题时,常规 RAG 仍面临挑战:
- 检索精度不足:简单的向量相似度匹配可能无法捕捉复杂的语义意图,导致召回无关信息。
- 时效性滞后:静态向量库更新频率低,难以应对实时变化的热点事件。
- 上下文限制:检索到的信息过多可能导致超出模型上下文窗口,或引入噪声干扰生成。
三、优化方案与实践
针对传统 RAG 的局限性和安全领域的痛点,业界提出了多种优化方案,主要集中在提升检索质量、增强生成能力和保障安全性三个方面。
3.1 检索质量优化
检索是 RAG 的基础,检索结果的准确性直接决定了最终回答的质量。
- 多路召回融合:结合稀疏检索(如 BM25)和稠密检索(Dense Retrieval)。稀疏检索擅长关键词匹配,适合精确查询;稠密检索擅长语义理解,适合模糊查询。融合两者可以显著提升召回率。
- 重排序(Re-ranking):初步召回的结果可能包含噪声,通过重排序模型(如 Cross-Encoder)对候选文档进行精细化打分,筛选出最相关的 Top-K 文档。
- 查询改写(Query Rewriting):用户的原始提问往往简略或缺乏上下文。通过 LLM 对查询进行扩写、澄清或分解,使其更适合检索系统理解。


