xIPnexxIPnex

统一检索(unified_search)

一句话讲清楚

平台里所有"找东西"的能力——找文档、找历史聊天、找别人 session 里的结论、找代码—— 对外只有一个工具:unified_search

不管你或 AI 想找什么,都是同一个工具调一个 action,参数不同而已。这个设计的好处是:

  • AI 学一个工具就会用全部检索能力,不必区分十几个分散的接口
  • 跨数据源能拼:一次问"过去三个月这个客户提过的需求 + 相关代码 + 上次审核结论",平台内部联动,对 AI 透明

它能查什么(按场景看)

你想找什么怎么调返回什么
知识库里的文档action="search" + kb_ids=[...]命中的 chunk + 高亮 + 元数据
历史结论 / 偏好 / Bug 模式(长期记忆)action="search" + memory_type=fact / preference / error_pattern结构化的 memory 条目
某个 session 的成果action="get_digest" + session_id=...该 session 的关键产出摘要
某次对话的精确内容action="get_round" + round_id=...那一轮的完整原文
可嫁接的会话清单action="list_sessions" + query=...别人或自己历史 session 列表
代码搜索(v3.13+)action="code_search" + mode=text / ast / semantic / navigate / hybrid代码片段 + 文件位置 + 调用关系

想看代码搜索五种 mode 各自能干嘛、什么时候用哪个,请翻 代码索引三档能力


为什么把所有检索归到一个工具

历史上平台有过四五个并列的"检索类工具":知识库搜索、记忆搜索、代码搜索、跨 session 嫁接…… 后果是 AI 经常用错工具——同一个问题在不同工具里查得到查不到、参数命名不一致、返回结构不一样。

统一以后:

Rendering diagram…
  • 一个工具,一套使用习惯:AI 学会一次终身受用
  • 可以混合检索unified_search(action="search", sources=["fact","kb"], ...) 一次拿回记忆 + 知识库联合命中
  • 可以联动重排:内部用 RRF(Reciprocal Rank Fusion)把多源结果归并,避免某一个源排名虚高

三个行业的实际用法

专利代理(xIPnex)

  • "找一下三个月前同一个客户提过的同类技术交底书" → action="search" + tags=["customer:X"]
  • "他上次让我修改的权利要求结构是什么样" → action="get_round"
  • "类似的审查意见我们以前怎么答辩" → action="search" + memory_type="fact" + tags=["bug_pattern"]

汽车研发(auto)

  • "这条需求关联的所有代码 + 测试用例" → action="code_search" + mode="hybrid" + kb_ids=[需求库, 代码库]
  • "上次基线 v1.14 的追溯结论" → action="get_digest" + session_id="v1.14-基线追溯"
  • "我们对 ASIL-D 模块的代码审核反馈池" → action="search" + memory_type="error_pattern"

智能制造(mfg)

  • "去年这个客户工单里关于压机故障的所有记录" → action="search" + kb_ids=[工单库] + 时间范围过滤
  • "上次类似故障是怎么定位的" → action="list_sessions" + query="压机液压"

跟其他概念的关系

概念它和 unified_search 是什么关系
Parser SKILL决定进库时怎么切块、抽什么字段——unified_search 检索时能不能命中得很大程度看这一步
代码索引三档unified_search.code_search 这个 action 的底层实现细节——零索引/轻索引/重索引的能力差异
记忆系统unified_search 是它对外暴露检索的唯一入口
跨会话嫁接 graft是 unified_search 的 list_sessions / get_digest / get_round 三个 action 的封装应用

给开发者的指引

如果你写 SKILL 时需要从平台拿数据,永远调 unified_search,不要自己直连 ES / DB。 原因:

  1. 平台会自动加上租户隔离、权限校验、审计日志
  2. 平台会做相关性重排和去重
  3. 平台升级换底层(比如 ES → 别的引擎)时你的 SKILL 不用改
# ✅ 推荐
results = unified_search(action="search", sources=["kb"], kb_ids=[...], query="...")
 
# ❌ 不要这样
es.search(index="...", body=...)

相关文档

On this page