在人工智能领域,大语言模型(LLM)的出现掀起了一场技术革命,但其自身存在的幻觉问题、知识更新滞后以及可解释性不足等局限性,也成为了进一步发展的瓶颈。而检索增强生成技术(Retrieval-Augmented Generation,RAG)的诞生,犹如一把钥匙,为大模型打开了新的大门,让大模型拥有了 “超强记忆”,回答更加靠谱。
一、大模型的困境:记忆与知识的双重挑战 尽管大语言模型在自然语言处理领域展现出了惊人的能力,但它们并非完美无缺。一方面,大模型存在 “幻觉” 问题,可能会生成与事实不符的内容,这在医疗、法律等对准确性要求极高的领域尤为致命。另一方面,大模型的知识更新成本极高,一个 6B 参数的模型更新就需要大量的计算资源和时间,导致其知识往往滞后于现实世界,无法及时获取最新信息。此外,大模型的黑箱特性使得其输出缺乏可解释性,在需要追溯知识来源的场景中难以满足需求。
二、RAG 技术:给大模型装上 “外置知识库” RAG 技术的核心思想是将大模型与外部知识库(ima知识库、飞书文档、百度云盘、数据库等等)相结合,通过检索技术为大模型提供实时、准确的知识支持,从而弥补大模型自身的不足。具体来说,RAG 将大模型与用户交互的过程分为两个阶段:
检索阶段 :根据用户的问题,从外部知识库中检索出相关的文档或文本片段。生成阶段 :将检索到的信息与用户问题相结合,输入到大模型中,由大模型生成最终的回答。这种方式就像是给大模型配备了一个 “外置知识库”,让大模型在回答问题时不再仅仅依赖自身的预训练知识,而是能够实时获取最新、最相关的信息,从而显著提升回答的准确性和可靠性。
三、RAG 的核心优势:让大模型更聪明、更可靠 知识实时更新(引入外部知识) :RAG 无需更新大模型的参数,只需定期更新外部知识库,就能够让大模型获取最新的知识。例如,在金融领域,市场行情和政策法规每天都在变化,通过 RAG 技术,大模型可以实时检索最新的金融数据和政策文件,为用户提供准确的投资建议。避免过拟合 :传统的微调方法需要在特定任务的数据上对大模型进行训练,容易导致过拟合问题。而 RAG 通过检索外部知识,无需调整大模型的参数,从而避免了过拟合的风险,让大模型在不同领域和任务中都能保持良好的性能。处理大规模知识 :大模型的内部存储空间有限,无法存储所有领域的知识。RAG 技术可以连接到大规模的外部知识库,如百科全书、专业数据库等,让大模型能够处理更加复杂和专业的问题。例如,在法律领域,RAG 可以检索到大量的法律条文和案例,帮助大模型更好地理解和回答法律问题。提升可解释性 :RAG 生成的回答与外部知识源建立了明确的关联,用户可以追溯回答的知识来源,从而提高了回答的可解释性和可信度。在医疗诊断中,RAG 可以引用最新的医学研究成果和临床指南,让医生和患者更加清楚诊断的依据。四、RAG 的发展历程:从朴素到智能的进化 RAG 技术的发展经历了多个阶段,每个阶段都针对前一阶段的不足进行了改进和优化。
Naive RAG(朴素 RAG) :这是 RAG 的最初形态,主要由索引、检索和生成三个模块组成。索引模块将文档切分成文本块并向量化存储到向量数据库中;检索模块通过向量检索找到与用户问题最相关的文本块;生成模块将这些文本块和用户问题输入到大模型中生成回答。虽然 Naive RAG 能够基本实现检索增强生成的功能,但在检索精度和效率上存在不足。Advanced RAG(高级 RAG) :为了提高检索质量,Advanced RAG 引入了更多的改进措施。在数据预处理阶段,采用滑动窗口方法、细粒度文本块切分等技术,提高文本块的语义完整性;在后处理阶段,通过重排序、摘要生成等操作,筛选出最相关的文本块,减少冗余信息。这些改进使得 Advanced RAG 在检索精度和回答质量上有了显著提升。Modular RAG(模块化 RAG) :Modular RAG 将各个模块进行了模块化设计,使得系统更加灵活和可扩展。例如,增加了 Routing 模块,根据用户查询的条件将请求转发到特定的知识库;引入了 Rerank 模块,对检索到的文本块进行重新排序,进一步提高检索的准确性。模块化的设计使得 RAG 系统能够更好地适应不同的应用场景和需求。Graph RAG :Graph RAG 引入了知识图谱的概念,通过构建实体之间的关系网络,增强了对复杂知识的表示和检索能力。在索引阶段,Graph RAG 不仅提取文本中的实体和关系,还构建了知识图谱,将文档中的知识组织成一个结构化的网络;在查询阶段,利用知识图谱的语义信息,能够更准确地理解用户问题,检索到相关的知识。Graph RAG 在处理需要深层逻辑推理和知识关联的问题时表现出色。
通过文本生成知识图谱去构建索引
文本切割 把整个语料库进行切分成多个文本块,这些文本块是最小的语义单元,可以是段落、句子或者句子片段 提取实体、关系 GraphRAG利用LLM识别并提取文本块中的所有实体等,实体之间的关系,以及文本中表达关键的内容 层次聚类 GraphRAG对初始的知识图谱进行分层聚类,用于将实体分到不同的社区(community)之中,形成粗粒度的数据 社区摘要 GraphRAG还会对每一个社区以及重要的部分生成摘要,这些摘要数据就包括社区内主要的实体,实体之间的关系以及关键内容 GraphRAG 查询过程 根据用户的问题去进行检索
全局检索 利用社区摘要信息,对涉及整个知识库的整体性问题进行检索和推理 本地检索 利用实体信息,社区摘要信息,对特定实体的细节问题进行推理和回答 Agentic RAG :Agentic RAG 引入了自主代理的概念,使得 RAG 系统能够根据用户的需求进行动态决策和工作流程优化。代理可以自主地选择检索策略、调整检索范围,甚至与其他代理协作完成复杂的任务。例如,在多领域查询中,Agentic RAG 可以根据用户问题自动切换到相应的知识库,并协调多个代理进行联合检索和推理,提高问题解决的效率和质量。五、RAG 的核心原理:三大模块构建智能检索生成系统 RAG 系统主要由索引模块 、检索模块 和大模型生成模块 三大核心模块组成,每个模块都发挥着重要的作用。
索引模块 :索引模块是 RAG 系统的基础,它负责将海量的文档数据转化为向量数据库中可检索的向量表示。首先,需要对文档进行预处理,将其切分成合适长度的文本块(一般最大是512个token),常见的切分策略包括固定长度截断、分段和滑动窗口等。然后,利用向量模型(如 Word2Vec、BERT 等)将每个文本块转换为词向量或句子向量,这些向量能够表示文本块的语义信息。最后,将这些向量存储到向量数据库中,如 Chroma、Milvus、Pinecone、 腾讯云向量数据库等,以便后续的检索操作。细心的朋友会问一个问题:为什么需要对数据进行切分,且目前最大是512个token?
目前向量模型都会基于BERT作为基础底座模型再进行微调,而BERT最大长度仅支持到512;超过512的时候,性能就会急剧下降,再使用的意义已经不大,也限制了语义表示的质量
检索模块 :检索模块的主要任务是根据用户的问题,从向量数据库 中检索出最相关的文本块。首先,将用户的问题进行向量化处理,得到问题向量。然后,通过向量相似度计算方法(如余弦相似度、欧式距离等),在向量数据库中查找与问题向量最相似的 Top K 个文本向量,获取对应的文本块。为了提高检索效率,主流的向量数据库通常采用近似最近邻检索(ANN)算法,如 K - 近邻算法(KNN)的优化版本,在保证一定检索精度的同时,大大缩短了检索时间。大模型生成模块 :生成模块是 RAG 系统的关键,它负责将检索到的文本块和用户问题相结合,输入到大模型中生成最终的回答。为了引导大模型更好地利用检索到的信息,通常需要设计合适的提示词模板。例如,一个常见的模板是将检索到的文本块作为 “已知信息”,然后要求大模型根据这些信息回答用户的问题,并明确规定如果无法从已知信息中得到答案,就如实告知用户,避免编造内容。通过优化提示词模板,可以进一步提升大模型生成回答的质量和准确性。常见的文本切分策略 按照固定长度截断: 比如64个token为界限进行截取分段: 以 L/64 的长度分成n段,每段分别去做向量化,然后对所有的向量取最大、平均操作滑动窗口 :即把文档分成有重叠的若干段,一般是设定每一个文本块的大小,然后各个文本块之间的有重叠的长度RAG通用流程示意图 graph LR
subgraph 数据处理
A[文档] --> B[预处理切分]
B --> C[文本块]
C --> D[向量化]
D --> E[向量数据库]
end
subgraph 查询处理
F[用户Query] --> G[向量化]
G --> H[相似度计算]
H --> I[相似Top K文本块]
end
subgraph 推理生成
I --> J[提示词模板]
J --> K[LLM]
K --> L[结果]
end
E -.->|检索匹配| I
style A fill:#FFA07A,stroke:#FF4500
style F fill:#FFB6C1,stroke:#FF69B4
style K fill:#D8BFD8,stroke:#9370DB六、RAG 的应用场景:开启大模型落地新征程 RAG 技术的出现,为大模型在各个领域的落地应用提供了强大的支持,以下是一些典型的应用场景:
智能客服 :在电商、金融、电信等行业,RAG 可以将企业的产品知识库、常见问题解答等外部知识接入大模型,让客服机器人能够准确回答用户关于产品信息、售后服务、业务办理等方面的问题。与传统的规则型客服机器人相比,基于 RAG 的智能客服准确率更高,能够处理更复杂的问题,同时还能根据最新的产品政策和活动实时更新回答内容。文档分析与处理 :在法律、医疗、金融等领域,大量的文档需要进行分析和处理。RAG 可以帮助大模型快速检索文档中的关键信息,如合同条款中的风险点、医学文献中的最新研究成果、财务报表中的重要数据等,并生成准确的分析报告或摘要。例如,法律公司可以利用 RAG 开发合同审核助手,自动分析合同条款,标注潜在的法律风险,大大提高合同审核的效率和准确性。个性化内容创作 :对于自媒体创作者、广告文案人员等来说,RAG 可以作为强大的创作助手。用户只需输入内容主题和风格要求,RAG 就可以从海量的知识库中检索相关的素材和案例,为大模型提供丰富的创作灵感,生成高质量的初稿。创作者只需在此基础上进行修改和完善,即可大幅提高内容产出效率,实现从每周发布 1 篇文章到多篇文章的突破。教育领域 :在教育领域,RAG 可以为学生提供个性化的学习辅导。例如,针对学生的数学问题,RAG 可以检索到相关的数学公式、解题思路和例题,帮助大模型生成详细的解答过程,让学生更好地理解和掌握知识点。同时,RAG 还可以根据最新的教育政策和教材内容实时更新知识,为学生提供最准确的学习支持。七、未来展望:RAG 推动大模型迈向新高度 随着技术的不断发展,RAG 技术将与更多的前沿技术相结合,推动大模型迈向新的高度。例如,与多模态技术相结合,RAG 可以处理图像、语音、视频等多种形式的信息,实现更丰富的交互方式;与智能代理技术相结合,RAG 可以构建自主决策、主动服务的智能系统,为用户提供更加个性化、智能化的服务。
RAG 技术的出现,为大模型解决了记忆和知识的难题,让大模型拥有了 “超强记忆”,回答更加靠谱。在未来的发展中,RAG 将成为大模型应用开发的核心技术之一,推动人工智能在各个领域的落地应用,为人类社会带来更多的便利和价值。