样例查询

高频 / 标准问题预先写好"标准答案",用户提问向量命中即直接返回,跳过检索和大模型生成。

alt text

这是 SparkX 的一个"省钱提速"利器,对应数据库里的 sample_query 表、sample_query_config 配置,以及入库阶段的 SampleQueryIndexer

1. 它解决什么问题

普通的 RAG 流程,每个问题都要走完整条链路:

用户提问 → 改写 → 意图分类 → 向量检索 → 重排 → 大模型生成回答
                                              ↑
                                    这一步最贵、最慢(要调 LLM)

但实际业务中,有大量问题是高频重复的(比如"年假怎么算"“WiFi 密码是多少”“报销流程”)。这些问题的答案是固定、标准的,每次都让大模型重新生成一遍,既慢又费钱,还可能每次回答得不太一样。

样例查询就是针对这类问题做的优化:

用户提问 → 向量匹配样例库 → 命中? ─ 是 → 直接返回标准答案(零 LLM 调用)
                              │
                              └─ 否 → 走正常 RAG 流程

2. 核心作用

作用 说明
提速 高频问题秒回,不用等大模型生成
💰 省钱 命中样例 = 0 次 LLM 调用 = 0 token 消耗
🎯 稳定 标准问题永远返回完全一致的标准答案,不会"每次答得不一样"
🛡️ 可控 关键问题(如政策、制度)由人工把关答案,避免模型"自由发挥"

3. 工作原理

  1. 录入阶段:在知识库的「样例查询」管理里,人工录入「问题 + 标准答案」
  2. 入库阶段:系统用向量模型把每个样例问题转成向量存入 sample_query 表(对应 SampleQueryIndexer)
  3. 查询阶段:用户提问时,拿问题去样例库做向量匹配
  4. 命中判断:相似度超过阈值 → 直接返回标准答案;未超过 → 进入正常 RAG 流程

💡 样例查询在 RAG 流水线里优先级很高(对应 pipeline/stages/ 里 Order=5 的样例命中阶段),排在检索、重排、生成之前,属于"快速短路"。

⚠️ 前置条件:录入的问题必须完成向量化

这是使用样例查询最容易踩的坑,务必先理解:

你录入的"问题 + 答案"只是普通文字,系统必须先把问题转成向量,样例查询才能真正生效。

为什么必须向量化

样例查询的命中判断,本质是用户问题和样例问题做向量相似度比较:

用户问题 ──向量化──► 向量A ┐
                          ├── 算相似度 ──► ≥ 阈值? ── 命中,返回标准答案
样例问题 ──向量化──► 向量B ┘
  • 如果样例问题没有向量化,库里就只有文字、没有向量
  • 用户提问时无法做向量比较 → 永远命中不了 → 样例查询形同虚设

录入后的操作

在「样例查询」管理页录入问题后,必须点「向量化」(或保存触发向量化),让系统用知识库的向量模型把每个样例问题转成向量存入 sample_query 表。

状态 表现
录入了但没向量化 🔴 样例查询永不命中,等于白录
录入并已完成向量化 🟢 可被向量匹配,样例查询生效

⚠️ 修改了样例问题内容后,也要重新向量化,否则库里还是旧问题的向量,匹配的是旧问题。

和向量模型的关系

样例问题的向量化用的是知识库绑定的向量模型,因此:

  • 样例查询跟随知识库的向量模型(换向量模型 → 样例向量作废,需重新向量化)
  • 这点和知识库文档入库完全一致

4. 在智能体中如何开启

样例查询是知识库维度的能力,但每个智能体可以单独控制是否启用。在 创建智能体 表单的「样例查询」标签页里:

配置项 默认值 说明
样例查询开关 关闭 是否启用样例优先匹配
匹配阈值 0.85 相似度 ≥ 此值才算命中;留空则回退全局配置

⚠️ 即使开关打开了,如果该智能体绑定的知识库里没有录入样例,也不会有任何命中。样例需要先在「样例查询」管理页向量化后才能被匹配。

5. 适合录入什么样例

✅ 适合 ❌ 不适合
高频问题(占流量大头) 偶尔问一次的问题
答案固定、标准的问题 答案因人而异、因时而变的问题
政策 / 制度类(答案要权威) 开放式、探讨性问题
数字 / 流程类(如"年假天数") 需要综合多文档推理的问题

6. 注意事项

  • ⚠️ 样例问题也要用知识库的向量模型生成向量,所以它和知识库绑定,跟随向量模型(换了向量模型,样例向量也要重新生成)
  • ⚠️ 命中阈值要设合理:
    • 太低会把不相关问题误判为命中(答非所问)
    • 太高又形同虚设(什么都命中不了)
  • 💡 建议从 Top10 ~ Top20 高频问题起步录入,观察命中率和回答效果,再逐步扩充
  • 💡 样例答案是人工维护的,文档更新后记得同步更新对应样例答案,否则会过时
  • 💡 样例查询和兜底策略是两回事:样例查询是"命中就直返",兜底是"检索不到时怎么办",不要混淆

7. 与正常 RAG 的关系

样例查询不是替代 RAG,而是在 RAG 前面加了一道"快速通道":

用户提问
   │
   ▼
[样例查询] ──命中──► 直接返回标准答案(结束)
   │
   未命中
   ▼
[正常 RAG 流程] 改写 → 检索 → 重排 → 生成
  • 大部分长尾问题依然走 RAG
  • 少数高频问题走样例直返
  • 两者互补,共同覆盖全部提问
知识星球
🌟 加入知识星球
解锁源码与设计详解
知识星球二维码 了解详情