极简工具箱

免费在线工具 · 本地计算 · 无需上传

RAG 怎么做:切分、检索与「答不上来」的处理

把整篇文档塞给模型,既贵又容易漏掉关键段。RAG 的思路是「先检索相关片段,再让模型基于片段回答」——难点在检索,不在生成。

广告位(百度联盟)

一、RAG 在解决什么

模型的知识有截止时间,也不知道你的内部文档。三种补法:

方式成本适用
微调高,需要数据与训练固定风格、特定任务
长上下文全塞每次调用都贵,且长文效果下降临时、少量文档
RAG 检索中,需要索引与切分知识库问答、文档助手

RAG 的核心优势是可更新、可引用、成本可控:文档改了只重建索引,回答能标注来源。

二、流程五步

文档 → 切分 → 向量化 → 存储索引 → 检索 → 拼上下文 → 生成

1. 切分(chunking)

重叠(overlap)的作用是避免关键信息刚好落在切口处。经验值:chunk 300–800 字,重叠 10%–20%。

2. 向量化

用 embedding 模型把每个 chunk 转成向量(如 768 或 1536 维)。同一批数据必须用同一个模型,换模型要重建全部索引。

3. 存储与检索

向量库(如 FAISS、Milvus、pgvector)按相似度返回 top-k 片段。常见混合检索:

两者结合(hybrid search)效果通常比单用向量好,尤其是查询里有专有名词时。

4. 重排(rerank)

先召回 20–50 条,再用重排模型精排到 3–8 条。重排能显著提升相关性,代价是多一次模型调用。

5. 拼接与生成

请只根据以下资料回答,资料中没有的信息请说「资料未提及」。
回答末尾标注引用的资料编号。

[1] ...
[2] ...

问题:...

三、效果不好时怎么排查

按顺序定位,不要一上来就换模型:

  1. 检索到了吗:把 top-k 片段打印出来,看有没有正确内容。没有 → 问题在切分或 embedding。
  2. 切分是否合理:关键信息被切断?chunk 太大导致噪声多?调整大小与重叠。
  3. 查询是否需要改写:用户问「怎么退款」,文档写的是「售后流程」,语义检索可能召不回。可以让模型先把问题改写成多个查询。
  4. 重排是否有效:加了重排后 top-1 是否更相关。
  5. 提示是否约束了「只用资料」:没有约束,模型会用自己知识编。
  6. 上下文是否过长:塞太多片段会稀释重点,也会让模型忽略中间内容。

四、控制幻觉

即便如此,模型仍可能把两段资料「拼接」成一个不存在的事实。涉及金额、日期、条款的答案必须人工复核。

五、常见坑

六、评估

不要凭感觉判断「效果变好了」。建一个小测试集(30–100 条真实问题 + 期望答案要点),每次改切分或模型都跑一遍,看:

小结

RAG 的瓶颈通常在检索而非生成;切分按结构、留重叠;向量 + 关键词混合检索再重排;提示里限定「只用资料」并要求引用;效果差先看检索到的片段对不对。

本文相关工具(本地计算,无需上传)

更多使用教程