《60天AI学习计划启动 | Day 22: RAG 检索优化(Chunking / 压缩 / 混合检索》
Day 22:RAG 检索优化(Chunking / 压缩 / 混合检索)
一、学习目标
- 掌握 文本切片策略(chunkSize / overlap / 语义边界)
- 理解 上下文压缩、Multi-Vector 检索的作用与场景
- 会设计 简单的 Hybrid Search(向量 + 关键词混合打分)
二、核心知识点
-
1. 文本切片(Chunking)
- 关键参数:
chunkSize、overlap、按段/句/标题切 vs 纯按长度切 - 经验结论:
- 问答类:
400~600 tokens+50~80 tokens overlap比较稳 - 技术/说明文档:优先按小节/段落切,再控制大致 token 数
- 问答类:
- 取舍:
- 小 chunk:召回更精细,噪音少,但 chunk 数多
- 大 chunk:上下文完整,但噪音多,生成容易啰嗦
- 关键参数:
-
2. 上下文压缩(Contextual Compression)
- 问题:TopK 文本很长,很多与当前 query 弱相关
- 思路:
baseRetriever → compressionRetriever- 先粗检索 N 个 chunk
- 再用 LLM / 规则对每个 chunk 做「与 query 相关的句子提取/摘要」
- 效果:答案更贴题,废话/无关背景明显减少,适合长文、会议纪要、说明书等
-
3. 多向量检索(Multi-Vector Retriever)
- 同一原文生成多条向量:标题 embedding / 摘要 embedding / 关键句 embedding
- 检索命中的可以是任一视角,但最终都指回同一原文片段
- 好处:
- 标题/摘要向量负责“粗定位”文档
- 关键句向量负责“细命中”具体信息
-
4. Hybrid Search(混合检索)
- 向量相似度(semantic) + 关键词/BM25(lexical) → 综合排序
- 简易实现思路:
score_vec ∈ [0,1](归一化后的向量相似度)score_kw:基于关键词命中次数/TF-IDF 粗算,再归一化到[0,1]- 最终:
score_final = 0.7 * score_vec + 0.3 * score_kw
- 适用:业务里 query 很短且包含强关键词(如“退款规则”“404 状态码”)的场景
三、实战作业 + 参考答案要点
-
作业 1:Chunk 策略对比
- 题:同一文档,用
- A:
chunkSize=300, overlap=50 - B:
chunkSize=700, overlap=100
对同一问题比较 TopK 片段质量
- A:
- 参考结论:
- A:召回更精准、噪音少,但容易把完整答案切成多个 chunk;需要 TopK 够大
- B:更不容易截断答案,但 chunk 里废话多,生成时更啰嗦
- 建议默认:
400~600 tokens + 少量 overlap;技术文档优先按「小节/段」切
- 题:同一文档,用
-
作业 2:二次筛选/压缩效果
- 题:
baseRetrieverTopK → 再做「与 query 相关的句子提取/摘要」,对比回答前后变化 - 参考结论:
- 开启压缩后:回答更聚焦问题本身,长背景/离题内容显著减少
- 适合:长文、多段描述场景;对短 FAQ、规整小条目收益有限
- 题:
-
作业 3:简易 Hybrid 排序设计
- 题:设计
score_vec+score_kw的组合方式 - 参考解法:
score_kw_raw = 精确命中词数 * 2 + 子串命中词数 * 1score_kw_norm = min(score_kw_raw / 5, 1)score_final = 0.7 * score_vec + 0.3 * score_kw_norm排序- 实测:对含明显业务词的 query,真正包含该词的条款/段落更容易排前;对纯语义问题影响较小
- 题:设计
四、思考 / 笔记建议
- 用自己项目实际文档,挑 3~5 个「之前答得不太对」的问题,检查:
- 是检索不到(召回问题),还是检索到了但生成胡说(生成问题)
- 记录下:
- 当前使用的 chunk 策略
- 是否需要压缩/Hybrid(根据日志和实际 QA 体验判断)
- 输出一篇短文:《我们在业务项目里做的 3 个 RAG 检索优化》,沉淀为团队 best practice

浙公网安备 33010602011771号