-
RAG定义:检索增强,提高模型的检索效率和准确性。
-
背景:通用大模型会胡说八道,且训练数据的时效性往往不够,产生知识缺失、陈旧和幻觉问题,导致没办法给到精准的答案,更无法有效处理复杂任务。
-
基础实现方式:外挂一个动态的知识库,以及用知识图谱推理逻辑关系,实现检索速度和精度的提升。
-
举例:我有道题不会做,去找大模型。没有RAG时,大模型埋头苦干,一两分钟给出个答案,可能对可能错。用了RAG处理后,大模型只用1秒钟,就能从知识库(题库)里直接调出正确答案。
-
问题又来了:这题比较新,知识库里没有,怎么办?这题知识库里有相似的,但又不完全一样,怎么办?
-
RAG再次登场:挂个静态知识库只是RAG最基础的技能,如何动态更新,如何理解相似问题,如何进行高效逻辑推理,如何自主规划解决步骤等等,都是RAG的范畴。
-
基础RAG:就像带教材进考场,开卷考试。让大模型能回答其训练数据之外的最新或特定领域知识,减少胡说八道的幻觉。拿着考题,直接去教科书里找最相关的段落,然后组织/COPY答案。但考试不一定都是考教材原题。
-
高阶RAG:就像带教材和学霸的笔记本一起进考场,开卷考试。考前先给教科书划重点、做笔记(检索前优化);答题时先审题,圈出关键词(查询重写);从多个角度论证(重排序),最后组织成高分答案。但这只能回答给定问题,开放式问题就不一定够看。
-
GraphRAG:就像带着逻辑关系图、思维导图一起答辩。回答涉及复杂关系、需要多步推理的问题(如“小张的女朋友的前男友的老婆的老板和其供应商的合作关系是什么?”)。不翻书了,而是查看一张画满了人物、事件关联的逻辑关系图,按图索骥,了解个中关系,从而进行深度推理。
-
但这只能被动检索,不能解决更复杂的问题,如“请为小张的女朋友的前男友的老婆的老板设计一个供应商合作解决方案?”。
-
智能体式RAG:处理被动检索无法应对复杂、多步骤的开放式任务。助理智能体能自主决定:先查询关系图谱,再规划解决方案框架,然后检索知识库,再用谷歌百度BING最新数据,接着去掉劣质的数据,最后根据框架结构和检索到的数据编写方案报告。
-
多模态智能体式RAG:不局限于文字,让模型可以理解问题中图片、视频的含义,生成内容中也可以图文并茂。
具体的技术手段:
| 技术环节 | 基础方法 | 进阶手段 |
|---|---|---|
| 📝 数据处理与索引 | 简单的固定长度分块,容易切断语义关联。 | 智能分块(如按语义边界切分)、分层索引,并添加元数据(如文档来源、章节标题)以丰富上下文。 |
| 🔍 检索机制 | 主要依赖单一的向量相似度搜索。 | 混合检索(结合语义向量搜索和关键词匹配如BM25)与图检索(利用知识图谱进行关系推理)。 |
| 💬 查询处理 | 直接使用用户的原始查询进行检索。 | 查询优化,包括重写、扩展(如HyDE生成假设答案引导搜索),或将一个问题拆解成多个子问题并行检索。 |
| ⚙️ 结果优化 | 将检索到的文本块直接全部塞给大模型。 | 重排序以筛选最相关片段,并进行上下文压缩以剔除冗余信息,确保大模型聚焦核心内容。 |
| 🤖 系统架构 | 线性管道,检索-拼接-生成一步到位。 | 模块化/智能体化,可自主规划多轮检索、调用工具,具备推理和反思能力。 |
在实际选择时,可考虑两点:
-
从基础RAG入手:如果场景简单,且希望快速验证想法,基础的RAG先做了,解决有无的问题。
-
让RAG一步步进阶:当面临复杂查询、对答案准确性要求高,或需要处理多模态、进行复杂推理时,就有必要引入高级RAG中的各项技术。通常可以从改进分块策略和引入混合检索+重排序开始,这些是性价比很高的优化手段。