Skip to content

第 6 章 查询理解与检索链路设计 ​

这一章开始进入 RAG 检索层里另一个非常关键的问题:用户说出来的问题,往往不是一个可以直接拿去检索的好查询。

前面几章已经把这些基础打好了:

  • 数据怎么准备
  • chunk 和 metadata 怎么设计
  • embedding、BM25 和混合检索分别解决什么问题

接下来要继续往前走一步:同样一套索引和检索器,为什么用户问法一变,结果就可能差很多。

这背后的核心,不只是检索算法,而是:

  • 你有没有先理解用户问题
  • 有没有把问题改写成更适合检索的形式
  • 有没有在检索前先做过滤和路由
  • 面对复杂文档时,有没有走对检索路径

学这一章时,最值得先建立的判断 ​

  • 用户原始提问和“最终检索查询”往往不是同一个东西
  • 查询理解不是附加优化,而是很多检索稳定性的前提
  • 查询改写、扩写、过滤、路由,都是在降低错误召回和漏召回
  • 很多系统不是索引不行,而是把所有问题都粗暴地走成了一条相同检索链路

这一章会解决什么问题 ​

这一章主要回答四类问题:

  1. 为什么用户问题不能直接原样拿去检索
  2. Query Rewrite 和 Query Expansion 在什么场景下有价值
  3. 检索前为什么要做 filtering 和 routing
  4. 面对大文档、复杂知识和长问题时,检索链路该怎样变化

这一章真正想帮你建立的是一种检索前视角:

  • 在真正查之前,系统要不要先理解一下“用户到底在问什么”
  • 在真正查之前,系统要不要先决定“这类问题该去哪查、该怎么查”

建议阅读顺序 ​

  1. 6.1 为什么用户问题不能直接拿去检索
  2. 6.2 Query Rewrite 与 Query Expansion
  3. 6.3 检索阶段的筛选与路由
  4. 6.4 大文档与复杂知识场景

主题模块 ​

读这一章时,建议一直带着的 4 个问题 ​

  1. 当前用户输入里,哪些内容适合直接检索,哪些内容需要先改写或拆解
  2. 当前问题更适合去哪一路索引里查,是 FAQ、规则库、代码库,还是混合路径
  3. 当前查询在进入检索前,是否应该先带上 metadata 边界或业务过滤条件
  4. 当前系统检索不稳,问题到底出在索引不行,还是查询本身没有被处理好

关联章节 ​