RAG 检索增强生成:让大模型用上你的私有知识
RAG 原理 · 搭建链路 · 切片/向量化/检索/重排 · 适用边界
核心结论:大模型记住的是训练时的公开知识,对你公司的文档、产品手册、最新政策一概不知还会瞎编。RAG 就是把「查资料」和「写答案」拆开——先检索,再生成。
一、RAG 的完整链路
- 入库:把文档清洗、切片(Chunk),用 Embedding 模型转成向量存入索引。
- 检索:用户提问同样向量化,在索引里找最相似的若干片段(Top-K)。
- 重排:用重排模型对候选片段精排,保留最相关的几段,过滤噪音。
- 生成:把问题与精选片段拼进提示词,交给大模型产出带出处的解答。
二、关键设计点
切片策略
切片大小直接影响召回质量。太大引入无关内容、太小丢失上下文。实践中按标题/段落结构切,并保持 10%-20% 重叠,是性价比最高的起点。
重排不可省
向量检索是「语义近似」,常把字面不相关但语义相关的漏掉,或召回看似相关实则无用的片段。加一层 Cross-Encoder 重排,能显著提升最终答案准确率。
可追溯与拒答
让模型标注答案出自哪段,并在检索为空时诚实回答「知识库中没有」,比强行编造更可信,也更符合合规要求。
⚠ 何时不该用 RAG:纯创意写作、开放闲聊、以及知识已固化为规则的逻辑,都不需要检索。RAG 的价值在于「基于指定事实作答」。
三、与微调的取舍
记住一句话:RAG 解决「知不知道事实」,微调解决「会不会某种风格/技能」。知识频繁更新、且必须引用内部资料的场景,RAG 几乎总是首选。
四、常见问题
向量库选哪个?初期怎么起步?
数据量小可用进程内向量;要规模化再上专用向量数据库。先把链路跑通,再谈性能。
回答还是会幻觉怎么办?
收紧提示词要求「仅基于给定片段作答」,加强重排,并对关键答案做引用校验。