简介:本文系统解析RAG(检索增强生成)的核心定义、工作原理与关键模块,帮助开发者理解其从60%到90%准确率跃迁的价值逻辑。文章拆解分片、检索、生成等核心环节,分析固定分块与语义分块的优劣,并给出框架与优化方案的选型思路及注意事项。
RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索能力与大型语言模型生成能力相结合的技术架构。其核心思想是:在语言模型生成答案之前,先从外部知识库中检索出与用户问题相关的权威资料,再将这些资料作为上下文一并送入模型,让模型基于检索到的真实内容来组织回答。
从技术视角看,RAG是一种“外挂知识”机制;从业务视角看,它是一种低成本、可更新的知识注入方案;从使用视角看,它让语言模型的回答有了可追溯的依据。它解决的根本问题是:让语言模型在回答专业问题时,不再只依赖训练时“记住”的参数化知识,而是能够实时查阅外部资料。
仅依赖语言模型自身参数回答问题,在通用闲聊场景下表现尚可,但一旦进入专业领域,准确率往往明显下降。原因在于:模型在训练时“吃”下的海量数据,被压缩成了数学参数,记住的是模糊印象而非精准原文,容易产生“一本正经地胡说八道”的现象。
引入RAG之后,相当于给模型配了一个专业领域的“随身图书馆”。回答前先去查权威资料,再基于查到的内容生成答案,准确率可以从60%级别提升到90%级别。这个跃迁的本质,是把“闭卷考试”变成了“开卷考试”。
在没有RAG的时候,语言模型的生成方式可以概括为“闭卷考试”,整个过程分两步:
这种方式存在两个固有问题:一是知识截止于训练时间,无法获取最新信息;二是面对长尾专业问题时,参数记忆不够精准,容易生成看似合理实则错误的回答。
一个完整的RAG系统通常包含以下关键环节:
分片是将原始文档切分成若干片段的过程,目的是让检索粒度更细、更精准。分片质量直接影响检索效果,进而影响最终回答质量。
一个典型的分片错误示例:
原句:“这款药对大多数人有效,但孕妇和严重肝肾功能不全者禁用。”
错误分片方式:
当用户问“这款药孕妇能用吗”,如果检索只命中了Chunk 1,模型就会基于“这款药对大多数人有效”生成“可以使用”的错误结论,完全忽略“禁用”这一关键限制。
由此可见,一句话中的转折、否定等关键信息一旦被分片切断,就会让模型只看到片面信息,从而生成完全错误的回答。这就引出了核心问题:如何分片才是最好的?
固定大小分块
根据预设的字符数、词数或token数,将文本均匀分割成等长片段。实现简单,便于批处理,但容易把句子从中间截断,打断语义流。
按标点或段落分块
以句号、换行符等自然边界切分,尽量保证语义完整性。比固定大小分块更尊重语言结构,但块长度不均匀,可能出现过短或过长的片段。
语义分块
通过计算相邻句子的语义相似度,在语义转折处切分。能较好保持语义完整性,但计算成本较高,实现复杂度也更高。
递归分块
先用大粒度分隔符切分,若片段仍超长,再用更细粒度分隔符继续切分,直到满足大小限制。是一种兼顾语义与长度的折中方案。
重叠分块
在相邻块之间保留一定重叠内容,降低关键信息被切断的风险。代价是增加存储和检索开销。
分片完成后,需要通过嵌入模型将每个片段转换为向量表示,并存入向量索引中。索引结构决定了检索的速度与召回质量。常见索引类型包括扁平索引、倒排索引、近似最近邻索引等。选择时需要在召回率、延迟和存储成本之间做权衡。
用户提问时,系统先将问题向量化,然后在索引中查找最相似的片段。检索策略可以是纯向量相似度检索,也可以是向量检索与关键词检索的混合检索。混合检索通常能兼顾语义匹配和精确匹配,在实践中效果更稳定。
初步检索出的片段可能数量较多且相关性参差不齐。重排序环节使用更精细的模型对候选片段进行二次打分,把最相关的内容排在前面,再送入生成环节。这一步对最终答案质量影响显著。
将用户问题和检索到的上下文一起送入语言模型,由模型基于上下文生成答案。提示词设计在这里很关键,需要明确要求模型“基于给定资料回答”,并处理资料中未覆盖的问题。
围绕上述流程,优化方案可以归纳为几个方向:
面对众多框架和优化方案,选型可以围绕以下几个维度展开:
选型的基本原则是:先保证基础流程跑通,再针对瓶颈环节做优化。不要一开始就堆叠所有优化手段,而应先建立评估基线,定位短板,再有针对性地引入对应方案。
RAG是一种通过“先检索、再生成”来提升语言模型回答准确率的技术架构。它的价值在于把模型从“凭记忆硬答”转变为“查资料再回答”,在专业领域可实现从60%到90%的准确率跃迁。其核心流程包括分片、向量化、索引、检索、重排序和生成,每个环节都有对应的优化空间。选型时应从数据特征、查询特征、性能要求、成本约束、可维护性和合规安全等维度综合判断,先建立基线,再定位瓶颈,最后有针对性地引入优化方案。理解RAG的定义、原理与边界,是做出合理技术选型的前提。