查询理解与意图识别是什么
查询理解要解决的是「同一句问法该去哪个知识域检索」。多意图知识库里,先判类型再选策略效果最好:操作类问题偏步骤文档,概念类问题偏定义与原理章节,排障类问题偏错误码与日志片段,兼容类问题偏版本说明。路由判错,后面的检索再准也是错方向的准。实践路线从关键词规则起步,样本积累后再上分类模型,并且每一类路由都要单独评测召回,否则某一类整体塌陷会被总体指标掩盖。
基本信息
| 输出 | 查询类型标签 |
|---|---|
| 典型类型 | 操作、概念、排障、兼容性 |
| 实现路线 | 关键词规则到分类模型,逐步演进 |
| 联动动作 | 按类型选索引、过滤条件与提示词模板 |
| 评测要求 | 每类路由单独计算 recall@k |
| 日志要求 | 记录路由结果,便于线上复盘 |
典型使用场景
- 知识库同时包含操作手册与报错手册,先路由再检索
- 不同意图套用不同提示词模板,排障类要求先给排查顺序
- 按类型设置不同的召回条数与相似度阈值
- 路由结果用于内容运营:哪类问题总是被路由到空缺领域
- 线上问题定位时先看路由是否正确,再查检索
轻量意图路由
轻量意图路由
def route(query):
if any(k in query for k in ("报错", "失败", "无法")):
return "troubleshoot" # 检索错误码与排障手册
if any(k in query for k in ("怎么", "如何")):
return "howto" # 检索步骤文档
return "concept" # 检索定义与说明
hits = retrieve(rewrite(query, route(query))) # 按类型改写后再检索路由类型对照
| 类型 | 特征词 | 优先检索 |
|---|---|---|
| 操作类 | 怎么、如何、步骤 | 操作手册与配置示例 |
| 概念类 | 是什么、为什么、区别 | 定义与原理章节 |
| 排障类 | 报错、失败、无法、超时 | 错误码、日志片段、常见问题 |
| 兼容类 | 支持、版本、要求 | 版本说明与兼容矩阵 |
路由可以先靠规则起步,样本积累后再上分类模型;但每个路由必须单独评测召回,否则某一类的塌陷会被总体指标抹平。
混合问法(例如「怎么解决这个报错」)同时带操作与排障特征:规则要有明确优先级,或改成多标签并把两路召回结果合并。