文章目录
- 一、先唠明白:为啥现在做Agent离不开RAG?
- 1.1 RAG两条核心流水线,一眼看懂
- 离线流水线:提前把资料加工入库
- 在线流水线:用户提问实时处理
- 二、离线基建三步走:清洗、分块、建索引,一步错全翻车
- 2.1 文档清洗:垃圾内容不清理,检索直接废一半
- 2.2 文本分块:RAG最容易踩坑的环节,没有之一
- 方案1:固定字符分块,入门首选
- 方案2:语义分块,结构化文档专属
- 方案3:父子分块,高阶RAG标配
- 2.3 向量索引构建:把文本变成机器能读懂的数字
- 三、检索进阶玩法:单靠向量搜索根本不够用
- 3.1 纯向量检索天生带硬伤
- 3.2 混合检索:向量语义+BM25关键词双保险
- 3.3 重排序模型:筛掉凑数的无关文档
- 3.4 查询优化:改一改提问,检索效果直接翻倍
- 3.4.1 查询扩展改写
- 3.4.2 HyDE假想检索
- 四、向量检索搞不定?知识图谱GraphRAG专治多跳问题
- 4.1 纯向量检索的盲区:实体关系推理
- 4.2 Neo4j图谱库:用Cypher语句查询实体关系
- 4.3 微软GraphRAG完整落地流程
- 五、RAG三大致命痛点,配套解决方案全给你捋明白
- 5.1 Lost in the Middle:中间文本直接被AI无视
- 5.2 多跳推理问题:单轮检索信息不够答题
- 5.3 多文档信息冲突:不同资料说法完全相反
- 六、知识库不能一劳永逸:动态更新+版本管理工程化方案
- 6.1 为什么必须做增量更新?
- 6.2 增量索引实现逻辑
- 6.3 文档版本回滚机制
- 6.4 自动扫描更新触发器
- 七、全文核心要点汇总
P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。
一、先唠明白:为啥现在做Agent离不开RAG?
咱们平时直接调用大模型,就跟考试只靠脑子里背的知识点答题一模一样。
你让模型回答公司内部新版接口文档,它脑子里存的全是三年前过时规范,答出来的内容能直接把后端开发干沉默。
更离谱的是,大模型还爱一本正经瞎编,不知道的内容硬凑一套逻辑,线上出问题排查能熬两个通宵。
RAG说白了就是给AI配个随身资料库,提问先翻资料再回答,实时、专业内容全拿捏,彻底治它胡说八道的毛病。
1.1 RAG两条核心流水线,一眼看懂
离线流水线:提前把资料加工入库
原始文档→清洗去垃圾→切分文本块→转向量Embedding→存入向量数据库
在线流水线:用户提问实时处理
用户问题转向量→检索匹配资料→把资料塞进提示词→大模型生成答案
二、离线基建三步走:清洗、分块、建索引,一步错全翻车
2.1 文档清洗:垃圾内容不清理,检索直接废一半
拿到手的PDF、Markdown全是乱七八糟冗余内容,页眉页脚、版权声明、页码乱码一堆。
你不去除每页底部“本文件仅供参考”这句话,检索时每段文本都带这句废话,向量相似度直接跑偏,正经内容搜不着。
清洗核心三件事:删掉模板固定文本、统一换行空格格式、清除看不见的乱码特殊字符。
封装清洗工具类,用正则批量匹配过滤,一套代码适配绝大多数文档格式。
2.2 文本分块:RAG最容易踩坑的环节,没有之一
很多新手上来直接固定长度切割,踩坑踩得明明白白。
方案1:固定字符分块,入门首选
设定单块字符上限,块之间留重叠文本,防止语义被切断。
缺点很现实:刚好卡在句子中间切割,一块文字只有半句话,检索出来上下文残缺,回答牛头不对马嘴。
方案2:语义分块,结构化文档专属
针对Markdown、带层级标题的文档,按一级、二级、三级标题自动拆分。
好处是每一块都是完整章节,语义不会断裂;缺点是纯无格式txt文档用不了,依赖文档自带层级结构。
方案3:父子分块,高阶RAG标配
小块检索精度高,但内容太少讲不清;大块上下文完整,但匹配准确度暴跌,父子分块直接把俩优点捏一块。
检索时用200字符小块精准匹配,返回结果时调取1000字符完整父块,兼顾精准度和信息完整性,唯一缺点是代码实现复杂度翻倍。
| 分块方式 | 优势 | 短板 | 适合场景 |
|---|---|---|---|
| 固定长度分块 | 代码简单、参数可控 | 极易切断完整语义 | 通用无结构文档 |
| 语义标题分块 | 文本语义完整连贯 | 依赖文档层级结构 | Markdown、HTML手册 |
| 父子分块 | 检索准+上下文充足 | 开发、存储成本更高 | 企业级高精度知识库 |
2.3 向量索引构建:把文本变成机器能读懂的数字
所有分块完成后,调用Embedding模型把文字转换成向量,存入Chroma这类轻量向量库。
存储时指定余弦相似度计算向量距离,后续检索全靠这个比对文本相似程度,同时持久化保存知识库,不用每次启动重新加载文档。
三、检索进阶玩法:单靠向量搜索根本不够用
3.1 纯向量检索天生带硬伤
你搜“Python最新安装教程”,向量匹配给你推一篇三年前过时文章,一篇最新精准教程反而因为文字相似度低排最后。
核心问题:语义相近≠内容和用户问题相关,纯向量只看文字感觉,不识别关键词精准匹配。
3.2 混合检索:向量语义+BM25关键词双保险
搭两套检索器并行执行:一套做向量语义匹配,一套做传统关键词BM25检索,给两者分配权重合并结果。
一半权重看文字感觉,一半权重抓精准关键词,冷门专业术语、专有名词再也不会搜不到。
3.3 重排序模型:筛掉凑数的无关文档
混合检索一次性召回10条候选文本,里面一半都是凑数的低相关内容。
接入重排序模型,重新打分筛选前5条最高相关片段,大幅减少塞进提示词的冗余文字,降低大模型输入上下文压力。
3.4 查询优化:改一改提问,检索效果直接翻倍
3.4.1 查询扩展改写
让大模型把用户原始提问衍生三条子问题:同义词替换、细化版本、宽泛概括版本,多组查询并行检索,召回信息更全面。
3.4.2 HyDE假想检索
用户提问太简短,向量匹配抓不住重点,干脆让AI先瞎猜一个完整答案,拿这个假想回答去检索资料库,匹配精度直接提升一大截。
四、向量检索搞不定?知识图谱GraphRAG专治多跳问题
4.1 纯向量检索的盲区:实体关系推理
向量只擅长匹配段落文字,一问多层人物、企业关联问题直接歇菜。
举个例子:和马斯克联合创办PayPal的人,后续还创立了哪些公司?
扔给普通RAG直接答不上来,它只能单段文本匹配,没法串联多条实体关联信息做多层推理。
4.2 Neo4j图谱库:用Cypher语句查询实体关系
把文档里的人物、公司、产品抽取成实体,人物合作、创办企业这类关系存入图谱数据库。
大模型自动把用户自然语言转换成图谱查询语句,一次性完成多跳关联查询,解决链式推理需求。
4.3 微软GraphRAG完整落地流程
- 从海量文档批量抽取实体、实体之间关联关系
- 聚类实体形成社区图谱,把关联紧密的实体划分集群
- 每个实体社区单独生成摘要,建立专属检索索引
- 提问先定位对应实体社区,再调取社区内完整资料回答
五、RAG三大致命痛点,配套解决方案全给你捋明白
5.1 Lost in the Middle:中间文本直接被AI无视
行业实测结论:大模型读长上下文时,最容易忽略排在中间的文档片段。
最关键的答案藏在检索结果第五条,夹在一堆无关文本中间,AI扫一眼直接跳过,等于白检索。
两种优化排序方案:
- 递减排序:相关度最高的文档全部放最前面,优先被模型读取
- 交替穿插排序:高相关、次高相关文档前后穿插摆放,避免重要内容扎堆中间
5.2 多跳推理问题:单轮检索信息不够答题
多层逻辑问题一轮检索只能拿到部分线索,必须分多轮迭代检索补充信息。
迭代检索逻辑:每轮检索完让AI判断现有资料能不能完整回答问题,信息不足就自动生成下一轮待检索子问题,最多限制3轮防止无限循环。
5.3 多文档信息冲突:不同资料说法完全相反
不同版本文档、新旧政策经常出现矛盾内容,AI直接乱整合输出错误答案。
单独封装冲突消解逻辑,把所有冲突来源全部交给大模型,让AI区分信息时效性、来源可靠程度,给出统一可信结论。
六、知识库不能一劳永逸:动态更新+版本管理工程化方案
6.1 为什么必须做增量更新?
产品文档每周更新、政策月月调整,知识库半年不更新,输出内容全是过期信息,误导业务比没有知识库危害更大。
完整重新全量重建索引耗时耗资源,增量更新只处理新增、修改、删除文件,节省90%以上计算开销。
6.2 增量索引实现逻辑
给每篇文档生成MD5哈希值,本地缓存记录文档ID对应哈希:
- 文档ID不存在:全新文档,直接新增入库
- ID存在但哈希变动:文档内容修改,删除旧向量再存入新版本
- ID、哈希完全一致:文档无改动,跳过处理
6.3 文档版本回滚机制
保存文档每一次修改历史,记录修改时间、版本号、配套元数据。
一旦新版本文档内容出错,支持一键回滚到历史任意版本向量数据,线上业务不会因为文档改错直接瘫痪。
6.4 自动扫描更新触发器
定时遍历文档存放目录,对比本地缓存文件哈希,自动识别新增、修改、删除文件,无需人工手动触发索引更新,实现知识库全自动运维。
七、全文核心要点汇总
- 数据清洗:去冗余、规范化格式,源头控制检索质量
- 文本分块:固定/语义/父子三种策略按需选用,父子分块综合效果最优
- 检索优化:向量+关键词混合检索搭配重排序,搭配查询扩展、HyDE提升召回
- 知识图谱:GraphRAG解决实体、多跳关系推理类复杂问题
- 痛点修复:文本重排、迭代检索、冲突消解分别解决中间丢失、多跳、信息矛盾问题
- 工程运维:增量索引、版本管理、自动扫描,支撑知识库长期动态迭代
下一部分咱们聊多智能体协同,多个Agent分工配合搞定超复杂业务需求。
P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。