檢索增強生成

检索增强生成(,縮寫:)是一种使大语言模型(LLM)能够从外部数据源中检索并整合新信息的技术。 在RAG框架下,大语言模型首先查阅指定的文档集合,再对用户查询作出回应。这些文档补充了模型预训练数据中已有的信息,使模型能够利用训练数据中未包含的领域特定信息和/或最新信息。

RAG还降低了为纳入新数据而重新训练大语言模型的需求,从而节省计算资源与资金成本。

RAG与LLM的局限性
大语言模型可能提供错误信息。例如,谷歌首次演示其大语言模型工具 Google Bard(后更名为Gemini)时,该模型就詹姆斯·韦布空间望远镜提供了错误信息。这一失误导致该公司的市值蒸发约1000亿美元。

流程
RAG通过引入信息检索机制来增强大语言模型的能力,使模型能够访问并利用原始训练集之外的额外数据。Ars Technica指出:“当新信息出现时,无需重新训练模型,只需用更新后的信息扩充模型的外部知识库即可”(即“增强”)。 部分模型还引入额外优化步骤以提升输出质量,例如对检索结果进行重排序(re-ranking)、上下文筛选以及微调(finetuning)。

改进
上述基础流程可在RAG工作流的不同阶段进行优化。

编码器
这些方法聚焦于将文本编码为稠密向量或稀疏向量。稀疏向量用于编码词语身份,通常具有词典长度,且大部分元素为零。稠密向量则用于编码语义,结构更为紧凑且零值较少。多种增强技术可改进向量存储(数据库)中相似度的计算方式。

  • 通过优化向量相似度计算可提升性能。点积可增强相似度评分,而近似最近邻搜索(ANN)相比K近邻算法(KNN)能提高检索效率。
  • 晚交互(Late Interactions)技术可在检索后更精确地进行词语比对,有助于优化文档排序并提升搜索相关性,从而提高准确性。
  • 混合向量方法可将稠密向量表示与稀疏独热编码向量相结合,利用稀疏点积在计算效率上优于稠密向量运算的优势。

以检索器为中心的方法
这些方法旨在提升向量数据库中文档检索的质量:

  • 通过“逆完形填空任务”(ICT)对检索器进行预训练,该技术通过预测文档中被遮蔽的文本来帮助模型学习检索模式。
  • 有监督的检索器优化使检索概率与生成模型的似然分布对齐。具体做法是:针对给定提示检索前k个向量,评估生成回答的困惑度,并通过最小化检索器选择结果与模型似然分布之间的KL散度来优化检索效果。
  • 重排序技术可在训练过程中优先选择最相关的检索文档,从而优化检索器性能。

语言模型
通过针对检索器重新设计语言模型,一个规模缩小25倍的网络即可获得与更大模型相当的困惑度表现。 由于该方法(Retro)需从头开始训练,因此产生了原始RAG方案所避免的高昂训练成本。其假设是:在训练过程中注入领域知识后,Retro无需过多关注领域细节,可将有限的参数资源专注于语言语义建模。重新设计的语言模型结构如图所示。

有报告指出Retro难以复现, 因此研究者对其进行了改进以提升可复现性。改进后的版本称为Retro++,并集成了上下文内RAG能力。

分块策略
分块涉及将数据切分为向量的各种策略,以便检索器能够从中定位细节信息。

三种主要分块策略包括:

  • 固定长度重叠分块:实现简单高效。相邻分块间的重叠有助于维持跨块的语义连贯性。
  • 基于语法的分块:可将文档按句子边界切分。spaCy或NLTK等库可辅助实现。
  • 基于文件格式的分块:特定文件类型具有天然分块结构,应予以尊重。例如,代码文件宜以完整函数或类为单位进行分块与向量化;HTML文件应保持标签或base64编码的元素完整;PDF文件也需考虑类似因素。Unstructured或LangChain等库可协助实现此类分块。

混合搜索
有时仅依靠向量数据库搜索可能遗漏回答用户问题所需的关键事实。一种缓解策略是:先执行传统文本搜索,将结果与向量搜索返回的文本块合并,再将融合后的混合文本输入语言模型进行生成。

评估与基准测试
RAG系统通常使用专门设计的基准测试进行评估,以检验可检索性、检索准确率与生成质量。常用数据集包括BEIR(涵盖多领域信息检索任务的测试套件)以及Natural Questions或Google QA(用于开放域问答评估)。

挑战
RAG并不能完全防止大语言模型产生幻觉。据Ars Technica报道:“这(RAG)并非直接解决方案,因为大语言模型在回应中仍可能围绕检索到的源材料产生幻觉。”

尽管RAG提升了大语言模型(LLM)的准确性,但它并未消除所有挑战。其局限性之一在于:虽然RAG减少了频繁重新训练模型的需求,但并未完全消除这一需求。此外,大语言模型可能难以识别自身是否缺乏足够信息来提供可靠回答。若未经专门训练,模型即便在应当表明不确定性的情况下仍可能生成答案。据IBM指出,当模型缺乏评估自身知识局限性的能力时,此类问题便可能出现。

RAG投毒
RAG系统可能检索到事实正确但具有误导性的来源,从而导致解读错误。在某些情况下,大语言模型可能从来源中提取语句而未考虑其上下文,进而得出错误结论。此外,当面对相互矛盾的信息时,RAG模型可能难以判断哪个来源更为准确。此类局限性的最坏结果是,模型可能融合多个来源的细节,生成将过时信息与更新信息以误导性方式混合的回答。据《麻省理工科技评论》指出,这些问题的产生源于RAG系统可能对其检索到的数据产生误读。

参考
參見

  • 大型語言模型
  • 推理語言模型
  • 生成式人工智能

评论 (0)

  • 还没有评论,来抢沙发吧。