Advanced RAG - RAG的进阶之路(一)
上篇文档主要是在学习Naive RAG时候整理的知识结构,而今天刚刚完成了Advanced RAG(进阶版)的学习,同样整理出来供大家参考~
一、RAG 系统的基础架构与演进脉络
Naive RAG:基础检索生成框架
对上篇文档做一个简单的小结:早期的 Naive RAG 架构遵循简单的 “检索 - 生成” 逻辑:用户查询直接触发文档索引检索,将检索结果结合用户Query丢给LLM 生成答案。这种架构的核心流程包括:
- 文档预处理:将非结构化文本分割为 Chunk 单元;
- 向量索引构建:通过 Embedding 模型生成语义向量并存储于向量库;
- 检索执行:基于余弦相似度等算法获取相关文档;
- 答案生成:LLM 结合检索上下文生成回答;
二、为什么会有Advanced RAG?
假如你正在面试AI产品经理,面试官面无表情的走进来,然后看到你的简历上写着精通RAG应用,本来"精通"是你简历上的加分项,但是此时可能是个坑,于是面试官抬头笑眯眯的看着你"你好(niuma),看你简历上写精通RAG,那我可就要好好考考(weinan)你了,请你详细介绍RAG是什么?"
于是你很是轻松巴拉巴拉说出Naive RAG的定义及整个流程,问题是回答对了,但是在我第一篇文章里写到了Naive RAG系统的常见痛点问题(文本向量化、检索增强),那么Naive RAG能解决吗?面试官又会接着问"对于RAG系统中常见的痛点问题,你具体是怎么解决的呢?"
那么这里就需要说明下Advanced RAG的作用了,而进阶版 Advanced RAG 就是在 Naive 架构基础上引入全流程优化节点,形成更智能的闭环系统:
三、Advanced RAG的基本内容
- 预检索优化:Advanced RAG注重优化索引结构和查询方式,主要是:
- 优化索引:提高被索引内容的质量,包括增强数据颗粒度、优化索引结构、添加元数据和对齐优化等策略;
- 查询优化:明确用户的原始问题,使其更适合检索任务,使用了查询重写、查询转换、查询扩展等技术;
- 检索优化:当前一般有两种方法:
- 微调模型:如将嵌入模型定制为特定领域的上下文,特别是对于术语不断演化或罕见的领域;
- 混合搜索:通常是指将向量搜索与基于关键字的搜索相结合;
- 后检索过程优化:对于由问题检索得到的一系列上下文,后检索策略关注如何优化它们与查询问题的集成,主要包括:
- 重排序:对初步检索到的文档列表进行精细化排序,将最相关的文档排到最前面;
- RAG-Fusion:克服单一查询的局限性,利用查询改写/扩展来挖掘用户潜在意图,融合多路检索结果,找到更多相关文档。
- 上下文压缩(Context Compression):减少输入给 LLM 的上下文长度,聚焦关键信息,去除冗余和噪声,同时节省计算资源并可能提升生成效果(避免“大海捞针”问题)。
除冗余和噪声,同时节省计算资源并可能提升生成效果(避免“大海捞针”问题)。
通俗点来说就是Advanced RAG就是对检索前、检索中、检索后做优化,通过引入更多中间处理模块,将 “粗放检索” 升级为 “智能筛选”,显著提升复杂查询场景下的回答准确率。