Skip to content

RAG浅学

约 2198 字大约 7 分钟

LLMLLM application

2026-03-22

RAG 是什么

RAG, Retrieval-augmented Generation,检索增强搜索。RAG外挂一个知识库,通过将用户输入向量化以查询相关知识,并将其作为上下文输入到模型,从而让最终的结果更准确、有根据且不脱离实际的问答框架。

RAG 的基本内容

RAG 有一个外挂知识库,使用RAG时,RAG会基于用户输入指令与该知识库,重新构建模型输入。

所以 RAG 有两个基本内容,知识库构建、输入构建,准确一点儿的说法是 【数据接入与索引构建】【检索与生成】

数据接入与索引构建

这一部分的内容就是 如何把一个知识库变为可以使用的状态/形式。就像大模型输入端会把语句 变为 tokens, RAG 会把知识库的内容变为一个 向量数据库。主要有两个过程 分片向量化

分片 chunking,就是把知识库的内容分为几个小的片段,其主要动因是大模型输入的上下文有限,不可能一次把知识库给到大模型,并且过长的文本会导致向量化后语义模糊,因此需要将原始文档切分为多个小的 chunk 文本块。

向量化 vectorization,就是通过 Embedding 模型,将文本块映射为高维数值向量(通常为 768 维、1024 维)。通过 Embedding模型,相近的文本块在被映射到语义空间后,其相似度更高,该相似度常使用余弦相似度、欧氏距离等等进行评价。同一问题(Query)和相关文档块的向量,会在空间中 “聚集”,从而支持后续的相似度检索。

向量化后入库,将文本块向量化后的结果存储到向量数据库中,待后续检索。

检索与生成

RAG 的检索主要有两步:召回与重排,recall and reranking,其实就是粗排和精排。

召回 recall,在海里的知识库中快速筛选出和用户输入相似度最高的若干文本(Top-10~20)块作为候选集。主要三步:查询向量化,使用和知识库向量化相同的embedding模型,将用户输入 Query 向量化,保证向量空间一致;相似度计算,在向量数据库中,计算 Query 向量与所有文档块向量的相似度(常用方法:余弦相似度、点积、欧氏距离);Top-K 召回,根据计算的相似度排序,召回得分最高的 K 个文本块,作为候选集。

重排 rerangking,对召回的候选集进行更精确的语义匹配,重新排序后筛选出 Top-N(如 3~5 个)最相关的文本块,最终传给大模型。这一步使用的是cross encoder,将用户输入的 Query和候选集的文本块一一成对输入到 cross encoder模型,直接输出相关性分数,能够匹配更细粒度的语义交互,精度更高,但是更慢一些。其步骤主要有4步:

  1. 输入候选集:将召回的 Top-K 个文本块与 Query 配对,形成 [Query, 文本块1]、[Query, 文本块2]… 等输入对;
  2. Cross-Encoder 打分:将输入对输入重排模型(如 BGE-Reranker、ColBERT、CrossEncoder),模型输出每个配对的相关性分数(0~1 之间,分数越高越相关);
  3. 重新排序与筛选:根据重排分数对候选集重新排序,取 Top-N 个文本块作为最终上下文;
  4. 拼接上下文:将 Top-N 文本块与原始 Query 拼接,形成提示词(Prompt),传给大模型生成最终答案。

为什么要这样 召回 + 重排?

两阶段结构,核心是平衡海量数据下检索的效率与精度,是兼顾成本、速度、效果的最优方案:

召回(粗筛):用向量相似度快速从海量文档中捞出潜在相关的候选集,解决全量精排算力成本过高、响应延迟过长的问题,保证检索效率。

重排(精排):对小范围候选集做细粒度语义交叉匹配,修正纯向量召回的语义偏差、噪声漏检问题,大幅提升检索匹配的精准度,保障最终生成内容的质量。

小小总结

RAG 的核心逻辑可简化为:

预处理:文档 → 分片 → 向量化 → 存入向量数据库;
检索:Query → 向量化 → 召回(Top-K)→ 重排(Top-N)→ 拼接上下文;
生成:大模型基于 “Query + 上下文” 生成答案。

为什么 RAG

使用RAG的优点有:更准、更新、可控...

更准:减少模型幻觉

原生大模型基于概率分布生成内容,容易出现无中生有、事实错误、数据造假等问题,这在一些专业性要求高的场景很致命。

RAG 的生成逻辑锚定了外挂的正确、权威知识库片段,所生成的内容都能够找到明确的来源,所以极大地压缩了大模型输出造假的空间,能够降低模型幻觉。

更新:零成本实时更新

大模型的预训练和微调具有明确固定的截止时间,无法获取截止日期后的内容。并且当内容更新时,需要做微调或者重新训练,成本较高。

RAG 解耦了知识与模型,知识是建立在向量数据库中的,只需要更新知识库/向量数据库就可以让模型获得最新的知识,而无需训练模型。一方面可以低成本更新知识库,另一方面可以追踪最新的知识,实时更新。

可控

通用大模型的知识仅来自公开语料,无法覆盖企业内部的非公开数据(如内部规章、客户资料、项目文档、专属行业知识库);而用这些敏感数据微调大模型,存在严重的数据泄露风险,且技术门槛极高。

RAG 无需将全量私有数据喂给模型训练,仅在推理时检索相关片段传入模型,可实现数据全流程不出企业内网,既保护了数据隐私安全,又能以极低的门槛让大模型适配企业的专属业务场景,无需专业算法团队即可快速落地。

其他优势

其他优势也是 RAG 自身的特点决定的,例如

  1. 极强的场景适配性与灵活扩展性,不绑定单一模型。只需更换数据库就可以获得适配不同任务的模型,和 LoRA 很像。
  2. 提升内容可解释性、可溯源性,满足强监管行业的合规要求。RAG 生成的每一段内容,都可精准对应到检索到的原始文档来源,更“显式”。
  3. 成本低。无论是落地的算力、时间成本,还是推理时的token,相较于其他方法都能够在提升效率的情况下大幅降低。

🤖 多模态 RAG

核心本质:多模态 RAG 就像是给大模型外挂了一个“多模态记忆库” 。它让系统在做出动作或预测前,能够回想起包含视觉、动作和物理规律的“过往经验”,从而避免幻觉并提升泛化能力。

三大关键模块

  1. 统一语义空间 (跨模态对齐):利用类似 CLIP 的技术,把“视觉画面”、“文本指令”甚至“物理状态”映射到同一个数学坐标系里,让系统能理解不同模态之间的关联。
  2. 维度经验存储与联合检索:数据库里的基本单元是完整的经验切片,包含 [环境图片 + 文本指令 + 自身状态 + 动作轨迹 + 执行结果状态]。在搜索阶段,接收到新的环境图片和指令后,通过早期融合(拼接图文向量)或晚期融合(分路交叉查询),精准匹配出最相关的历史经验。
  3. 上下文示范 (In-Context Augmentation):把检索到的“历史成功经验”作为提示词(Prompt)喂给模型。
    • 对于 VLA:参考历史轨迹,在当前新环境下生成新动作
    • 对于世界模型:参考历史的因果关系(动作导致的结果),预测当前的未来状态,并在预测与现实出现偏差时,形成新的经验存入数据库,实现闭环学习。