QCon北京2024上涉及了很多大模型应用落地场景,出现比较多的应用模式关键词是:AI Agent和RAG(RAG也常被在Agent的Cot或是Mutil-Agent协作的流程中)。上篇针对AI Agent有过初步讲解,那什么是RAG?本文将结合Qcon的见闻,基于RAG的核心组件、RAG的常见范式,RAG的应用场景及RAG的评估,介绍当前各大公司使用RAG进行相应应用落地实践情况。在LLM时代,RAG的具体定义指的是,当回答问题或生成文本时,首先从大量文档中检索相关信息。随后,利用这些检索到的信息来生成响应或文本,从而提高预测质量。一个通用的RAG管道 它主要由3个步骤组成:- 索引:文档被分割成块,编码成向量,并存储在向量数据库中;
- 检索:根据语义相似性检索与问题最相关的前 k 个块;
- 生成:将原问题和检索到的词块一起输入大语言模型中,生成最终答案。
大型语言模型展示了强大的能力,但也面临着幻觉、过时知识和不透明推理等挑战。检索增强生成(RAG)通过整合外部数据库的知识,提高了生成内容的准确性和可信度。RAG将大型语言模型的内在知识与外部数据库融合,为知识密集型任务带来了前景。 | |
| 通过整合外部数据库的知识,提升生成的准确性和可信度 |
| |
| RAG将LLMs固有的知识与外部数据库庞大、动态的知识库有机结合,提高透明度和可追溯性 |
在大语言模型的优化方法中,RAG经常与Fine-tuning(FT)和提示工程相比较。我们用象限图从外部知识需求和模型适配需求两个维度来说明三种方法的差异。
提示工程:利用模型的固有功能,而对外部知识和模型适应的需求最少。
RAG:可以比作为信息检索提供量身定制的教科书模型,非常适合精确的信息检索任务。早期阶段(Naive RAG),几乎不需要对模型进行修改
FT:需要进一步训练模型,针对不同下游特定任务,需要重新训练整个庞大的模型;相当于学生随着时间的推移内化知识,适用于需要复制特定结构、风格或格式的场景。
有人提出过这个疑问,为什么要用RAG来做增强,而不选择比较容易想到的微调来做,这里提及了RAG的优势以及和微调的差异,在这里列出两者的对比,主要是为了让大家在进行问题定位和解决方案思考时能参考,权衡好什么时候该用哪些部分。
| RAG | 微调 (Fine-tuning) |
知识更新 | 直接更新检索知识库,确保信息持续更新,无需频繁重新训练,非常适合动态变化的数据环境。 | 存储静态数据,需要重新训练用于知识和数据的更新。 |
外部知识 | 擅长利用外部资源,特别适合处理文档或其他结构化/非结构化数据库。 | 可用于将预训练中外部学习到的知识与大语言模型保持一致,但对于频繁变化的数据源可能不太实用。 |
数据处理 | 对数据的处理和操作要求极低。 | 依赖于构建高质量的数据集,有限的数据集可能无法显著提高性能。 |
模型定制 | 侧重于信息检索和融合外部知识,但可能无法充分定制模型行为或写作风格。 | 允许根据特定风格或术语调整 LLM 行为、写作风格或特定领域知识。 |
可解释性 | 答案能够追溯到具体的数据来源,提供更高的可解释性和可追踪性。 | 就像一个黑盒子,并不总是清楚模型为什么会做出某种反应,可解释性相对较低。 |
计算资源 | 需要计算资源来支持检索策略和数据库相关技术。外部数据源的整合和更新需保持维护。 | 有必要准备和整理高质量的训练数据集,确定微调目标,并提供相应的计算资源。 |
延迟要求 | 因涉及数据检索,可能带来较高的延迟。 | 经过微调的大语言模型 (LLM) 可以不通过检索直接回应,降低延迟。 |
降低幻觉 | 由于每个回答都基于检索到的实际证据,因此本质上更不容易产生错误或虚构的回答。 | 根据特定领域的数据训练模型,有助于减少幻觉,但面对未训练过的输入时仍可能出现幻觉。 |
伦理和隐私问题 | 从外部数据库存储和检索文本可能引起伦理和隐私方面的担忧。 | 训练数据中的敏感内容可能会引起伦理和隐私方面的问题。 |
RAG研究范式在不断发展和演进,我们将其分为三个阶段:初级 RAG、高级 RAG 和模块化 RAG。虽然早期的 RAG 在成本效益上表现良好,并且性能优于传统的大语言模型 (LLM),但它仍面临着诸多挑战。高级 RAG 和模块化 RAG 的设计是为了解决原始 RAG (Naive RAG) 的特定不足。下面是三种开发范式解释和相应用组件部分示意图:朴素RAG:主要由三部分组成:索引、检索和生成,直接将输入数据向量化,然后对向量数据库进行匹配,最后将输入数据与向量数据库匹配结果共同放入大模型中生成最终结果;高级RAG:增加了对数据的预筛选,围绕预检索和后检索提出了多种优化策略,其过程与朴素RAG相似,仍然遵循链式结构。模块化RAG:继承和发展了以前的范式,整体上显示出更大的灵活性。这体现在引入多个特定的功能模块和替换现有模块上。整个过程不仅限于顺序检索和生成,还包括迭代和自适应检索等方法。根据检索器如何增强生成器,我们将 RAG 基础范式分为 4 个不同类别:基于查询的RAG:利用用户query检索得到相关文档,将检索结果跟用户query拼接到一起作为生成模型的输入。这种方式是直接利用外部检索知识来指导生成模型,是目前RAG的主流范式。基于潜在表征的RAG:利用用户query检索得到相关文档,并获取对应文档的向量表征,在生成模型生成阶段融入知识文档的表征信息。这是一种隐式利用外部检索知识指导生成模型的方式。基于Logit的RAG:生成模型在decoder阶段计算下一个token的logit时,同时考虑生成预测的结果跟检索模块返回的信息。这种方式将检索模块与生成模块视为两个独立的链路,再联合两者的logit值。Speculative RAG:利用检索模块来替代生成模块的方式,主要用于节省资源跟加速文本生成。这种方式提供一段候选回复,让生成模型判断这段候选回复是否适合作为最终结果。检索:从数据源中高效检索相关文档至关重要。其中涉及到几个关键问题,如检索源、检索粒度、检索的预处理以及相应嵌入模型的选择等。生成:检索后,将所有检索到的信息直接输入大语言模型来回答问题并不是一个好的做法。需要从调整检索内容和调整大语言模型两个角度介绍调整。增强:在 RAG 领域,标准实践通常涉及单个(一次)检索步骤,然后生成,这可能导致效率低下,有时通常不足以满足需要多步骤推理的复杂问题。RAG增强是整体体系的重点,从多个角度我整理了下增强 RAG 性能的方法。从整个RAG 流程角度,我们根据现有方法的增强目标将其分为 5 个不同的组:输入、检索器、生成器、结果和整个管道。单从RAG检索一个点来看,检索增强可以包含迭代、递归&自适应三个方法。
除了最常见的一次检索之外,RAG 还包括三种类型的检索增强过程。迭代检索:涉及检索和生成之间的交替,允许在每一步从知识库中获得更丰富、更有针对性的上下文。递归检索:涉及逐步细化用户查询并将问题分解为子问题,然后通过检索和生成不断解决复杂问题。自适应检索:侧重于使 RAG 系统能够自主确定是否需要外部知识检索以及何时停止检索和生成,通常利用 LLM 生成的特殊 Token 进行控制。根据现有方法的增强目标将其分为 5 个不同的部分:输入、检索器、生成器、结果和整个管道。针对这些部分有针对性的相应增强方式和方法。RAG 在 NLP 领域的快速发展和广泛采用,将 RAG 模型的评估推向了大语言模型界研究的前沿。将RAG技术引进到大模型应用场景,我们需要了解和优化 RAG 模型在不同应用场景下的性能。下面简要讲讲 RAG 的主要下游任务、数据集以及如何评估 RAG 系统。
RAG的核心任务仍然是问答(QA),包括传统的单跳/多跳QA、多选、特定领域的QA以及适合RAG的长格式场景。除了QA之外,RAG正在不断扩展到多个下游任务,例如信息提取(IE)、对话生成、代码搜索等。RAG的主要下游任务及其相应的数据集总结在表:任务
| 子任务
| 数据集
|
---|
| | Natural Question(NQ)/TrivaQA(TQA)/SQuAD/Web Questions(WebQ)/PopQA/MS MARCO |
| HotpotQA/2WikiMultiHopQA/MuSiQue |
| ELI5/NarrativeQA(MQA)/ASQA/QMSum(QM) |
| Qasper/COVID-QA/CMB/MMCU_Medical |
| QuALITY/ARC/CommonsenseQA |
| |
| | |
| |
| |
| Amazon(Toys, Sport, Beauty) |
| Event Argument Extraction | |
| |
| | |
| |
| |
| | |
| |
Fact Checking/Verification | |
| |
| |
| |
| |
| |
| |
| |
| |
RAG 模型的当代评估实践强调三个主要质量分数和四个基本能力,它们共同指导 RAG 模型的两个主要目标的评估:检索和生成。其中基本能力:噪声鲁棒性,否定拒绝,信息集成,反事实稳健性适用于 RAG 评估方面的指标摘要,分别对应质量分数和基本能力对应的度量标准,如下表所示:
业界提出了一系列基准测试和工具来促进 RAG 的评估。这些工具提供的定量指标不仅可以衡量 RAG 模型的性能,还可以增强对模型在各个评估方面的能力的理解。RGB、RECALL 和 CRUD 等著名基准,专注于评估 RAG 模型的基本能力。同时,最先进的自动化工具如 RAGAS、ARES和 TruLens雇用大语言模型来判定质量分数。这些工具和基准共同构成了用于系统评估 RAG 模型的强大框架,如表所示:† 代表基准,‡ 代表工具。* 表示自定义量化指标,偏离传统指标。鼓励读者根据需要查阅相关文献,了解与这些指标相关的具体量化公式。
RAG技术具有广泛的应用场景,可以在文本、代码、音频、视频等多个领域发挥作用。
- 在文本领域,RAG可用于生成自然语言文本摘要、问答系统和对话生成。
- 在代码领域,RAG可以帮助自动生成代码注释、代码片段和解释性文档。
- 在音频领域,RAG可用于语音识别、语音生成和音频内容摘要。在视频领域,RAG可以应用于视频内容摘要、视频片段生成和视频字幕生成等。
总的来说,RAG技术的广泛应用使其成为一个强大的工具,能够在各种领域中提供自然、准确的生成和理解能力。
下面是基于前面RAG各部分的一个生态全景图,包含了RAG的下游任务、RAG范式,RAG评估、RAG的核心技术,RAG的展望等。回到场景里,从整个北京Qcon的分享来看,此次RAG和向量数据库有一个专门的专项,本文将挑几个主题展示他们的实战及成果。句子互动联合创始人&CTO分享了他们在RAG商业化落地碰到的各种问题,整个分享展示简单,内容朴素,但还是十分落地的。他分别从表格数据的RAG方案,效果优化,Embedding相似度不够、模型幻觉、多次同样问题回复不准确等多个实践方面进行了分享。金山云人工智能产品中心总经理-陈海彪,分享了其基于RAG模式的金山云轻舟智问的技术架构,及其在各行各业如何实现创新应用。其中围绕着RAG体系,进行了相关能力构建的讲解。大模型的技术发展,结合知识库,带了一种全新的应用模式"知识助手"(通过RAG技术)检索的关键,如何高效建设索引。他们做了很多能力建设,如一些智能能力的搭建,如:OCR模型、文档智能解析、多模态文档识别引擎等;文档智能的处理流程;利用多路递进式召回策略进行检索准确性;检索的效果好坏,需要闭环的专业评测体系,他们基于RAG的评测方法论,也自建了一套自动和专家人工评测最后他分享了在金山云售后问答、政务&法律、智能合同审查、公文智能写作助手等场景都有落地且效果不错。但知识助手的挑战也异常艰巨,其中,模型的可解释性和幻觉将一直他们需要解决的长期系统工程。来自Fabara的解决方案负责人-张红兵,介绍了他们基于多模态智能引擎的大模型知识库技术应用,它们结合落地案例实践经验,针对企业实际、复杂的数据现状,提供全新的解决方式——基于多模智能引擎的大模型知识库方案。对企业多源、异构数据的现状,需对这些不规范数据进行解析,智能抽取数据之间的关系并提供低代码方式进行数据探查;在多模态智能引擎中以图的形式存储确定的知识,以向量的形式存储非结构化的知识,以图和向量融合的方式构建大语言模型驱动的企业知识中台。利用低代码技术快速构建包括智能对话、摘要、标签、生成、text2data 在内的各种知识应用,为企业大模型用落地提供有效的技术支撑。还有其的RAG案例,这里就不一一展开了。RAG也不是单独存在的,Agent中也时常会和RAG一起结合进行大模型的复杂应用的构建。