跳转至

he search

对知识库执行语义搜索。


概要

he search KA_PATH QUERY [OPTIONS]

参数

参数 描述
KA_PATH 知识库目录的路径
QUERY 搜索查询字符串

选项

选项 简写 描述 默认值
--top-k -n 返回结果数量 3
--source — 范围限定:仅返回这些来源文档贡献的知识(可重复) —
--tag — 范围限定:仅返回带有这些标签的来源贡献的知识(可重复) —

描述

语义搜索即使在关键词不完全匹配时也能找到相关信息。它使用:

  1. 向量嵌入 — 将查询和内容转换为向量
  2. 相似度匹配 — 找到语义相似的内容
  3. 排名 — 返回最相关的结果

要求:必须构建搜索索引。如有需要,运行 he build-index。


示例

基本搜索

he search ./output/ "苏轼的代表作"

获取更多结果

he search ./output/ "电气工程" -n 10

自然语言查询

he search ./ka/ "主要成就是什么?"
he search ./ka/ "与欧阳修相关的人"
he search ./ka/ "苏轼生平重要年份"

构建索引后

# 首先,确保索引存在
he build-index ./output/

# 然后搜索
he search ./output/ "创新"

输出格式

Found 3 result(s):

Result 1:
{
  "name": "苏轼",
  "type": "人物",
  "description": "北宋文学家、书画家,号东坡居士"
}

Result 2:
{
  "source": "苏轼",
  "target": "欧阳修",
  "type": "师生",
  "description": "欧阳修赏识苏轼才华,预言其将超越自己"
}

Result 3:
...

工作原理

  1. 查询嵌入 — 将您的查询转换为向量
  2. 索引搜索 — 在知识库中找到最近的向量
  3. 结果排名 — 返回 top-k 最相似的项目

更好搜索的技巧

  1. 使用自然语言 — "电气工程方面的发明" vs "发明 电气"
  2. 要具体 — "苏轼在词作方面的成就" vs "苏轼 成就"
  3. 尝试同义词 — 如果 "发明" 不行,尝试 "发现"
  4. 增加 top-k — 使用 -n 10 获取更广泛的结果

范围搜索

使用 --source(指定来源文档)或 --tag(带有该标签的任意来源 —— 标签用 he tag 管理)将搜索限定到部分来源:

# 仅搜索带有 `legal` 标签的来源贡献的知识
he search ./ka/ "终止条件" --tag legal

# 仅搜索两个指定文档贡献的知识
he search ./ka/ "终止条件" --source contract-2024 --source annex-b

--source 与 --tag 以并集方式组合:只要某个键的任一贡献来源满足任一过滤条件,该键即匹配。

范围限定要求知识库在摄入时带有 --source,这样来源台账才会存在 —— 见来源标注与溯源。


与 he talk 的比较

功能 he search he talk
返回 原始实体/关系 自然语言答案
用例 查找特定数据 获取解释
速度 更快 更慢(LLM 生成)
精度 精确匹配 解释性

故障排除

"未找到索引"

构建搜索索引:

he build-index ./output/

"未找到结果"

尝试: 1. 更广泛的查询词 2. 增加 -n 获取更多结果 3. 不同的措辞 4. 检查 he info ./output/ 验证数据存在


另请参见