如何巧妙提升RAG系统召回率,三大策略实践是关键?
- 内容介绍
- 文章标签
- 相关推荐
一、 先说点废话——RAG到底是个啥
先别急着翻白眼,RAG其实就是把「大模型」和「老旧文档库」硬凑在一起,让模型在回答时不再光靠脑子里那点儿胡思乱想。 太顶了。 可惜,现实往往是「垃圾进,垃圾出」,所以召回率直接决定了后面的生成质量。
说白了就是要把最有用的那几段文字从几百万条记录里拽出来喂给模型。要是拽出来的都是废话, 奥利给! 大模型还能怎么回答?只能继续瞎扯——这时候你就会发现自己在看一堆AI幻觉。

二、 三大招——别再盲目加向量了
下面就来聊聊三个「实战」技巧,它们各有千秋,有时还能配合使用。别问我为什么叫「三大招」, 不地道。 主要原因是这篇文章本来就写得乱七八糟,还要多点标题来装逼。
1️⃣ Small‑to‑Big:从小块到大块的逆向拼图
抓到重点了。 很多人只会把文档切成统一大小的chunk然后全都塞进向量库。后来啊呢?检索到的片段要么太短根本缺上下文,要么太长又超出模型。
Small‑to‑Big 的思路是:先用极小的粒度做一次粗筛,挑出潜在相关的小块;再根据这些小块所在的大段落重新抽取更大的上下文进行二次检索。这样既能保证召回率,又能兼顾答案的完整性。
实现要点:
- ① 预先保存每个小块对应的大块 ID;
- ② 第一次检索返回 Top‑k 小块;
- ③ 合并同一大块的所有小块,再统一送入模型。
2️⃣ 索引 ——让大模型自己造假设文档
HyDE其实就是让 LLM 在检索前先「猜」一个答案,然后把这个猜测当作查询去搜库。 操作一波。 听起来像是自嗨,但实测可以显著提升召回率,特别是在词汇不匹配严重的场景。
举个例子:用户问「2022 年北京奥运会金牌总数是多少?」如果知识库里只有「北京奥运会」而没有「2022」这个年份,普通向量检索可能找不到。
一、 先说点废话——RAG到底是个啥
先别急着翻白眼,RAG其实就是把「大模型」和「老旧文档库」硬凑在一起,让模型在回答时不再光靠脑子里那点儿胡思乱想。 太顶了。 可惜,现实往往是「垃圾进,垃圾出」,所以召回率直接决定了后面的生成质量。
说白了就是要把最有用的那几段文字从几百万条记录里拽出来喂给模型。要是拽出来的都是废话, 奥利给! 大模型还能怎么回答?只能继续瞎扯——这时候你就会发现自己在看一堆AI幻觉。

二、 三大招——别再盲目加向量了
下面就来聊聊三个「实战」技巧,它们各有千秋,有时还能配合使用。别问我为什么叫「三大招」, 不地道。 主要原因是这篇文章本来就写得乱七八糟,还要多点标题来装逼。
1️⃣ Small‑to‑Big:从小块到大块的逆向拼图
抓到重点了。 很多人只会把文档切成统一大小的chunk然后全都塞进向量库。后来啊呢?检索到的片段要么太短根本缺上下文,要么太长又超出模型。
Small‑to‑Big 的思路是:先用极小的粒度做一次粗筛,挑出潜在相关的小块;再根据这些小块所在的大段落重新抽取更大的上下文进行二次检索。这样既能保证召回率,又能兼顾答案的完整性。
实现要点:
- ① 预先保存每个小块对应的大块 ID;
- ② 第一次检索返回 Top‑k 小块;
- ③ 合并同一大块的所有小块,再统一送入模型。
2️⃣ 索引 ——让大模型自己造假设文档
HyDE其实就是让 LLM 在检索前先「猜」一个答案,然后把这个猜测当作查询去搜库。 操作一波。 听起来像是自嗨,但实测可以显著提升召回率,特别是在词汇不匹配严重的场景。
举个例子:用户问「2022 年北京奥运会金牌总数是多少?」如果知识库里只有「北京奥运会」而没有「2022」这个年份,普通向量检索可能找不到。

