在过去的一两年里,人工智能领域目睹了检索增强生成技术(RAG)的迅猛发展,这种技术结合了强大的语言模型与信息检索系统,以期在复杂的问题解决和信息处理任务中提供更加精确和深入的答案。正是这种对前沿科技的不懈追求,推动了RAG技术在2023年成为研究的热点。
随着大模型的不断进化,它们在各种任务中的表现已经达到了令人瞩目的水平。然而,无论模型的规模如何增长,它们仍受限于训练数据的质量和范围。RAG技术的出现,正是为了解决这一瓶颈。通过将动态检索过程与生成过程结合,RAG允许模型在生成响应之前,先从一个更广泛、更新的知识源中获取信息。这不仅提升了模型的表现,也极大扩展了其应用范围。
诸如 LangChain 和 LlamaIndex 等工具和框架投入了大量资源来研究和实现RAG技术。它们通过提供高效的检索策略和优化的生成方法,使得RAG不仅在学术界受到青睐,在工业界也逐渐展示出其巨大潜力。尤其是 LlamaIndex 从其官方发布的信息可以了解到2023年其在RAG领域做了不少的研究和探索,且取得了一定的成果。
然而,随着大模型本身的持续进步,一些人开始质疑RAG技术未来的地位。他们认为,如果大模型能够内化足够多的信息并提高内部处理复杂性,那么外部检索可能就不再必要。表面上看这种观点有其合理之处,但它忽视了一个关键因素:知识的动态性。世界在不断变化,信息也在持续更新。RAG技术通过实时检索最新信息保持了模型的时效性和准确性,这是单纯依靠预训练大模型难以实现的。
与传统检索相比,当前 RAG 系统最显著的不同之处在于其组件的灵活性和模块化设计。人们正不断以新颖和创造性的方式将大语言模型与检索结合起来,从而从数据中挖掘出更深层次的洞见。
未来,我们可以预见大模型和RAG技术将会共同进步,并可能融合发展。大模型可能会内置更加高效的检索机制,而RAG技术也会不断优化,使得检索过程更加精准、生成过程更加自然。在某些特定领域,大模型可能会逐渐减少对外部检索的依赖;但在需要处理最新信息或特定领域知识的任务中,RAG仍将是不可或缺的。预计2024年大模型将逐渐会在多模态领域进行深入的研究和突破。
由 Gao 等人撰写的论文《大语言模型的检索增强生成:一项调查》(Retrieval-Augmented Generation for Large Language Models: A Survey)对所有 RAG 研究进行了分类,分为三大类:1) 预训练模型(例如 RETRO),2) 微调加上 RAG(例如 RA-DIT),以及 3) 推理模式中的 RAG(例如 DSP)。 这项调查应该算是目前看到的最全面的研究概览 - 它覆盖了超过 100 篇论文、博客文章和项目,贯穿 RAG 流程的每一个环节: ✅ 检索(数据块分割,查询重写,结果重排,嵌入向量微调) ✅ 生成(文本压缩,内容总结,大语言模型微调) ✅ 能够交织检索与生成的能力(路由选择,HyDE 技术,AI 智能体)
大语言模型(Large Language Models,LLMs)已经成为我们生活和工作中不可或缺的一部分,它们以惊人的多功能性和智能,转变了我们与信息的互动方式。
然而,尽管拥有令人瞩目的能力,这些模型仍存在缺陷。它们可能产生误导性的“幻觉”(hallucinations),依赖潜在的过时信息,处理特定知识时效率不高,专业领域的深度不够,推理能力也有所欠缺。
在真实世界的应用中,数据需要持续更新以反映最新进展,并且生成的内容必须是透明并可追溯的,这对于管理成本和保护数据隐私至关重要。因此,仅依赖这些“黑盒子”模型是不够的;我们需要更精细的解决方案来满足这些复杂的需求。
在这种背景下,检索增强生成(Retrieval-Augmented Generation,RAG)作为人工智能时代的一项创新趋势,正在受到广泛关注。
RAG 在问答应用中的一个典型例子是(比如向 ChatGPT 询问关于 OpenAI CEO SAM Altman 被解雇和重新聘用的情况。 )
RAG 通过在语言模型生成答案之前,首先从外部数据库检索相关信息,大幅提高了内容的精准度和相关性。
Lewis 在 2020 年提出的 RAG 概念快速演变,经历了研究旅程中的几个不同阶段。起初,研究旨在通过在预训练阶段注入额外知识,来强化语言模型。ChatGPT 的推出极大地促进了对大模型进行深入上下文理解能力的兴趣,并加速了 RAG 在推理阶段的发展。随着研究人员对大语言模型(LLMs)能力的深入挖掘,焦点转向了提升它们的可控性和推理技巧,以满足日益增长的需求。GPT-4 的问世是一个重要里程碑,它采用了一种将 RAG 与微调技术结合的新方法,同时继续优化预训练策略。
RAG 研究发展历程图谱
我们从技术演变的视角,将 RAG 的发展分为以下几个阶段:
经典的 RAG 流程,即初级 RAG,主要包括三个步骤:
三种 RAG 范式的对比分析。
想要打造一个出色的 RAG(检索增强生成)系统,关键在于如何巧妙地进行信息增强。在这个过程中,我们需要深思熟虑以下三个问题:
针对这些问题,我们可以将信息增强分为以下几个阶段:
涵盖不同信息增强方面的技术树。
RAG 系统核心组件详细分类
在大语言模型 (LLM) 的优化策略中,除了 RAG,我们还经常听到提示工程 (Prompt Engineering) 和微调 (Fine-tuning, FT)。这些策略各有千秋,根据对外部知识的依赖程度和模型调整的需要,它们在不同的应用场景下各显神通。
使用 RAG 就好比给模型配备了一本定制的教科书,它能够针对特定的问题进行精准的信息查找。而微调则像是让模型变成一个学习者,随着时间逐步吸收和内化知识,这使得模型更擅长于复制特定的结构、风格或格式。通过提升模型已有的知识水平、调整其输出结果以及训练它执行复杂的指令,微调能够提高模型的表现力和工作效率。然而,微调不太擅长融入新知识或快速应对新的使用场景。RAG 和微调并不是对立的,它们可以互相补充,在一起使用时可能会带来最好的效果。
RAG 和微调的比较图表
评估 RAG 的方法多种多样,主要包括三个质量评分:上下文相关性、答案的准确度以及答案的相关性。此外,评估还涉及到四个关键能力:抵抗干扰的能力、拒绝回答不当问题的能力、整合信息的能力、以及在面对假设性情况时保持稳定性的能力。这些评估维度结合了传统的量化指标和专门针对 RAG 特点的评估标准,虽然这些标准还没有统一规定。
在评估框架方面,我们有一些基准测试如 RGB 和 RECALL,还有自动化评估工具如 RAGAS、ARES 和 TruLens,这些工具帮助我们全面地衡量 RAG 模型的性能。
随着检索增强生成 (Retrieval-Augmented Generation, RAG) 技术的快速发展,我们面临着一系列值得深入探讨的新问题。我们可以从三个方面来展望这些问题:
为了进一步解决 RAG 目前面临的挑战,我们考虑如下几个方面:
RAG 的技术和概念正在不断进化,它们将如何扩展到图像、音频、视频或代码等其他数据形式?一方面,这可以增强单一模态内的任务性能;另一方面,它可以通过 RAG 的思想来实现多模态数据的融合。
RAG 的应用范围已经不再局限于问答系统,其影响力正在向更广泛的领域扩散。目前,包括推荐系统、信息提取和报告生成在内的多种任务已经开始受益于 RAG 技术的应用。
同时,RAG 技术栈也在迅速壮大。市场上不仅有像 Langchain 和 LlamaIndex 这样的知名工具,还涌现出许多更具针对性的 RAG 工具。这些工具有的为特定用例量身定制,满足更具体的场景需求;有的简化了使用流程,进一步降低了使用门槛;还有的在功能上进行了专业化设计,逐步适应生产环境的需求。
https://arxiv.org/abs/2112.04426
https://arxiv.org/pdf/2208.03299.pdf
https://arxiv.org/abs/2302.04761
https://openreview.net/pdf?id=CROlOA9Nd8C
https://arxiv.org/abs/2308.07922
https://arxiv.org/abs/2304.06762
https://arxiv.org/abs/2212.14024
https://arxiv.org/abs/2004.04906
https://arxiv.org/abs/2303.08518
https://github.com/microsoft/LMOps
https://arxiv.org/abs/2012.04584
https://arxiv.org/abs/2310.01352
https://arxiv.org/abs/2310.11511
https://arxiv.org/abs/2305.18846
https://aclanthology.org/2023.findings-acl.734.pdf
https://github.com/OpenMatch/SANTA
https://arxiv.org/pdf/2301.12652.pdf
https://arxiv.org/abs/2305.17331
https://github.com/OpenMatch/Augmentation-Adapted-Retriever
https://arxiv.org/abs/1911.00172
https://arxiv.org/abs/2212.14024
https://github.com/stanfordnlp/dspy
https://arxiv.org/abs/2310.04205
https://arxiv.org/pdf/2212.10509.pdf
https://github.com/stonybrooknlp/ircot
https://arxiv.org/abs/2209.10063
https://github.com/wyu97/GenRead
https://arxiv.org/abs/2302.00083
https://arxiv.org/abs/2303.08518
https://github.com/microsoft/LMOps
https://arxiv.org/abs/2311.06595
https://openreview.net/pdf?id=CROlOA9Nd8C
https://arxiv.org/abs/2310.13848
https://arxiv.org/abs/2305.18846
https://arxiv.org/abs/2308.11761
https://arxiv.org/abs/2304.11116
https://arxiv.org/abs/2305.02437
https://arxiv.org/abs/2212.14024
https://arxiv.org/pdf/2210.01296.pdf
https://arxiv.org/abs/2209.10063
https://arxiv.org/abs/2310.05002
https://proceedings.neurips.cc/paper/2020/hash/6b493230205f780e1bc26945df7481e5-Abstract.html
https://arxiv.org/abs/2303.08518
https://arxiv.org/abs/2305.04757
https://arxiv.org/pdf/2307.07164.pdf
https://arxiv.org/pdf/2208.03299.pdf
https://arxiv.org/pdf/2301.12652.pdf
https://arxiv.org/pdf/2210.01296.pdf
https://arxiv.org/abs/2212.14024
https://github.com/stanfordnlp/dspy
https://aclanthology.org/2023.acl-long.17/
https://arxiv.org/abs/2305.15294
https://arxiv.org/abs/2310.05149
https://arxiv.org/abs/2212.10509
https://github.com/stonybrooknlp/ircot
https://arxiv.org/abs/2310.14696
https://arxiv.org/abs/2305.06983
https://github.com/jzbjyb/FLARE
https://arxiv.org/abs/2310.11511
https://arxiv.org/abs/2308.07922
[1]. Retrieval-Augmented Generation for Large Language Models: A Survey”Gao, Yunfan, et al. 2023
https://arxiv.org/pdf/2312.10997.pdf