工具选择的高级工具过滤
Issue: #1002
现状
当前工具选择仅使用嵌入相似度、相似度阈值与 top-k。当嵌入相近但意图不一致时,可能选到错误领域的工具。
#1002 提议引入高级工具过滤能力,通过更精细的相关性过滤减少误选,同时保持默认行为不变。
方案
在嵌入候选集合检索之后,增加可选的高级过滤阶段。该阶段应用确定性过滤(允许/禁止列表、可选类别门控、词面重叠阈值)以及融合嵌入相似度与词面 、标签、名称、类别信号的组合得分重排器。若 advanced_filtering.enabled=false,行为与现有实现一致。
方案优点:延迟可控、不引入新模型依赖、可通过配置完整解释。
对比测试结果
测试配置:
- 查询集:20 条(17 正例、3 负例),覆盖天气、邮件、搜索、计算、日历等场景
- 工具库:5 个工具(get_weather、search_web、calculate、send_email、create_calendar_event)
- 迭代:10 次
- 高级过滤配置:
min_lexical_overlap=1、min_combined_score=0.35、weights={embed:0.7, lexical:0.2, tag:0.05, name:0.05}
评估结果:

| 指标 | 基线 | 高级 | 增量 |
|---|---|---|---|
| 准确率 | 55.00% | 90.00% | +35.00% |
| 精确率 | 78.57% | 94.12% | +15.55% |
| 召回率 | 64.71% | 94.12% | +29.41% |
| 假阳性率 | 100.00% | 33.33% | -66.67% |
| 平均延迟 | 0.0162 ms | 0.0197 ms | +0.0036 ms |
| P95 延迟 | 0.0256 ms | 0.0288 ms | +0.0032 ms |