搜索策略Skill search-strategy

搜索策略是一种智能技能,用于企业搜索,通过分解自然语言查询并跨多个数据源进行协调搜索,提供排名和去重的结果。关键词包括搜索策略、企业搜索、查询分解、多源搜索、自然语言处理、NLP、搜索协调、结果排名。

NLP 0 次安装 0 次浏览 更新于 3/18/2026

name: 搜索策略 description: 查询分解和多源搜索协调。将自然语言问题分解为针对每个源的针对性搜索,将查询转换为源特定语法,按相关性排名结果,并处理歧义和备用策略。

搜索策略

如果您看到不熟悉的占位符或需要检查连接的工具,请参阅CONNECTORS.md

企业搜索背后的核心智能。将单个自然语言问题转换为并行、特定源的搜索,并产生排名、去重的结果。

目标

将此:

"What did we decide about the API migration timeline?"

转换为每个连接源的针对性搜索:

~~聊天:  "API migration timeline decision" (语义) + "API migration" in:#engineering after:2025-01-01
~~知识库: 语义搜索 "API migration timeline decision"
~~项目跟踪器:  文本搜索 "API migration" 在相关工作区

然后将结果综合成一个单一的连贯答案。

查询分解

步骤1:识别查询类型

分类用户问题以确定搜索策略:

查询类型 示例 策略
决策 “我们关于X的决定是什么?” 优先对话(~~聊天,邮件),寻找结论信号
状态 “项目Y的状态是什么?” 优先最近活动、任务跟踪器、状态更新
文档 “Z的规范在哪里?” 优先驱动器、维基、共享文档
人员 “谁在负责X?” 搜索任务分配、消息作者、文档协作者
事实性 “我们关于X的政策是什么?” 优先维基、官方文档,然后确认性对话
时间性 “X什么时候发生的?” 搜索广泛日期范围,寻找时间戳
探索性 “我们关于X知道什么?” 跨所有源的广泛搜索,综合

步骤2:提取搜索组件

从查询中提取:

  • 关键词:必须在结果中出现的核心术语
  • 实体:人员、项目、团队、工具(如果可用,使用记忆系统)
  • 意图信号:决策词、状态词、时间标记
  • 约束:时间范围、源提示、作者过滤器
  • 否定:要排除的事物

步骤3:为每个源生成子查询

对于每个可用源,创建一个或多个针对性查询:

优先语义搜索对于:

  • 概念性问题(“我们关于…的想法是什么?”)
  • 确切关键词未知的问题
  • 探索性查询

优先关键词搜索对于:

  • 已知术语、项目名称、缩写
  • 用户引用的确切短语
  • 过滤器重的查询(from:, in:, after:)

生成多个查询变体当主题可能有不同引用时:

用户:"Kubernetes setup"
查询:"Kubernetes", "k8s", "cluster", "container orchestration"

源特定查询翻译

~~聊天

语义搜索(自然语言问题):

查询:"项目aurora的状态是什么?"

关键词搜索:

查询:"项目aurora状态更新"
查询:"aurora in:#engineering after:2025-01-15"
查询:"from:<@UserID> aurora"

过滤器映射:

企业过滤器 ~~聊天语法
from:sarah from:sarahfrom:<@USERID>
in:engineering in:engineering
after:2025-01-01 after:2025-01-01
before:2025-02-01 before:2025-02-01
type:thread is:thread
type:file has:file

~~知识库(维基)

语义搜索 — 用于概念查询:

descriptive_query: "API migration timeline and decision rationale"

关键词搜索 — 用于确切术语:

查询:"API migration"
查询:"\"API migration timeline\""  (确切短语)

~~项目跟踪器

任务搜索:

文本:"API migration"
工作区:[workspace_id]
完成:false  (用于状态查询)
assignee_any: "me"  (用于"我的任务"查询)

过滤器映射:

企业过滤器 ~~项目跟踪器参数
from:sarah assignee_anycreated_by_any
after:2025-01-01 modified_on_after: "2025-01-01"
type:milestone resource_subtype: "milestone"

结果排名

相关性评分

根据这些因素为每个结果评分(按查询类型加权):

因素 权重(决策) 权重(状态) 权重(文档) 权重(事实性)
关键词匹配 0.3 0.2 0.4 0.3
新鲜度 0.3 0.4 0.2 0.1
权威性 0.2 0.1 0.3 0.4
完整性 0.2 0.3 0.1 0.2

权威层次结构

取决于查询类型:

对于事实性/政策问题:

维基/官方文档 > 共享文档 > 邮件公告 > 聊天消息

对于"发生了什么" / 决策问题:

会议记录 > 线程结论 > 邮件确认 > 聊天消息

对于状态问题:

任务跟踪器 > 最近聊天 > 状态文档 > 邮件更新

处理歧义

当查询歧义时,优先问一个聚焦的澄清问题而不是猜测:

歧义:"search for the migration"
→ "我找到了一些迁移的参考。您在寻找:
   1. 数据库迁移(项目凤凰)
   2. 云迁移(AWS → GCP)
   3. 邮件迁移(Exchange → O365)"

仅在以下情况询问澄清:

  • 有真正不同的解释,会产生非常不同的结果
  • 歧义会显著影响搜索哪些源

不要在以下情况询问澄清:

  • 查询足够清晰以产生有用结果
  • 次要歧义可以通过返回多个解释的结果来解决

备用策略

当源不可用或返回无结果时:

  1. 源不可用:跳过它,搜索剩余源,注意差距
  2. 无结果来自源:尝试更广泛的查询词,移除日期过滤器,尝试替代关键词
  3. 所有源返回无结果:建议用户修改查询
  4. 速率限制:注意限制,从其他源返回结果,建议稍后重试

查询扩宽

如果初始查询返回太少结果:

原始:"PostgreSQL migration Q2 timeline decision"
更宽:  "PostgreSQL migration"
更宽:  "database migration"
最宽:"migration"

按此顺序移除约束:

  1. 日期过滤器(搜索所有时间)
  2. 源/位置过滤器
  3. 不那么重要的关键词
  4. 只保留核心实体/主题术语

并行执行

始终跨源并行执行搜索,不要顺序执行。总搜索时间应大致等于最慢单个源的时间,而不是所有源的总和。

[用户查询]
     ↓ 分解
[~~聊天查询] [~~邮件查询] [~~云存储查询] [维基查询] [~~项目跟踪器查询]
     ↓            ↓            ↓              ↓            ↓
  (并行执行)
     ↓
[合并 + 排名 + 去重]
     ↓
[综合答案]