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