Measure Zero

Measure Zero

马上订阅 Measure Zero RSS 更新: https://shiina18.github.io/atom.xml

RAG 简要回顾

2025年10月7日 08:00

2025 年大家都忙着开发 agent, 这里简要回顾一下 RAG.

RAG 基本操作

  • Offline: 文件解析, 文本切片, embedding (以前通常用 bge)
  • 对 query embedding 后做召回 (通常就算个 cos, chunk 量大时用向量数据库牺牲一定精度加速召回)
  • Rerank (通常是 bge-reranker)

这套早在 2023 年就玩烂了.

Advanced RAG

Offline

文本切片优化

  • 按照语义切分: 想法是, 先得到句子 embedding, 若相邻句子 embedding 距离较大 (比如可以统计分位数取阈值), 则认为语义差别大, 在这里切分.
  • 按结构切分: 比如根据 markdown 的标题层级, 图表, 代码等, 保证有意义的结构不被切开. 这里可以把 chunk 所属的标题放在其 metadata 里或者直接拼在 chunk 开头; 或者用 LLM 总结 chunk 生成一个 heading 拼上去.
  • 还有很多雕花级别的操作, 可以参考这些 2023 年的 RAG 比赛, B 站上也有答辩视频.

Embedding 优化

给每个 chunk 生成更多 “维度” 的 embedding. 比如对当前 chunk 做个总结得到 embedding, 或者把当前 chunk 对应的 window 更大的 chunk 或者段落以及章节层级拿来做 embedding (甚至是层次化的 embedding 以及召回). 命中 embedding 之后可以连带地在当前 chunk 前后扩展一定 window 或者段落带出更完整连贯的上下文.

Online

Query 处理

  • Query 分类 (意图识别/路由等)
  • 生成更多维度 embedding: 比如 HyDE (Hypothetical Document Embedding), 根据 query 生成伪文档再去召回, 把 qa 匹配变成 aa 匹配. 类似地, 离线时可以对每个 chunk 生成可能的 query, 把 qa 匹配变成 qq 匹配.

拼接上下文

  • 扩大窗口 (之前讲过了, 带出当前 chunk 对应的 window 更大的 chunk)
  • 顺序 (如果 chunk 来自同一篇文档, 按文中出现的顺序排序, 离得近可以补充一些 gap 等让段落更连贯)
  • 根据层级 (之前讲过了, 带出当前 chunk 对应的章节)
  • 压缩...

剩余内容已隐藏

查看完整文章以阅读更多