Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
bytedance avatar

Byted Viking Search Knowledgebase

  • 2 installs
  • 411 repo stars
  • Updated August 4, 2026
  • bytedance/agentkit-samples

viking-search-knowledgebase is a Claude skill that semantically retrieves ranked chunks from Volcengine Viking knowledge bases via an APIG gateway.

About

viking-search-knowledgebase calls the Volcengine Viking knowledge base API through an APIG gateway to semantically retrieve chunks relevant to a query. It exposes an info action for knowledge-base metadata and a search and auto action for single-base or multi-base parallel retrieval, returning ranked chunks with relevance and rerank scores plus document info. The skill enforces query construction rules that split multi-intent tasks into keyword queries run in parallel for better recall.

  • Semantic retrieval of ranked chunks from Viking knowledge bases
  • Single-base search and multi-base parallel auto retrieval
  • Query-splitting and keyword rules to improve recall

Byted Viking Search Knowledgebase by the numbers

  • 2 all-time installs (skills.sh)
  • Ranked #13,956 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

byted-viking-search-knowledgebase capabilities & compatibility

Requires APIG gateway access and Viking knowledge base resource ids.

Capabilities
semantic retrieval · knowledge base search · query decomposition
Use cases
research · web search · memory
Pricing
Bring your own API key
From the docs

What byted-viking-search-knowledgebase says it does

python scripts/viking_search.py --action auto --query "网络故障 原因 分类"
SKILL.md
语义检索,根据 query 从知识库中获取相关切片,返回切片列表、相关度分数、文档信息等。
SKILL.md
npx skills add https://github.com/bytedance/agentkit-samples --skill byted-viking-search-knowledgebase

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs2
repo stars411
Last updatedAugust 4, 2026
Repositorybytedance/agentkit-samples

What it does

Semantically retrieve relevant chunks from Viking knowledge bases to answer a question.

Who is it for?

Grounding agent answers by retrieving relevant chunks from Viking knowledge bases.

Skip if: Feishu wiki names, which are a separate namespace and not valid collection names.

When should I use this skill?

You need to search data from a knowledge base to answer a user question.

What you get

Ranked knowledge chunks with relevance and rerank scores for each sub-intent query.

By the numbers

  • Three actions (info, search, auto)
  • Recommended 2-4 parallel queries per multi-intent task

Files

SKILL.mdMarkdownGitHub ↗

Byted Viking Search Knowledgebase

该 Skill 用于通过 APIG 网关调用火山引擎 Viking 知识库的 API:

  • /api/knowledge/collection/info:查看知识库详情,获取 collection_namedescription仅在路由/连接检查场景使用,不是知识问答的默认入口。
  • /api/knowledge/collection/search_knowledge:语义检索,根据 query 从知识库中获取相关切片,返回切片列表、相关度分数、文档信息等。

---

输入前提(必读)

你接收到的不是用户原话,而是上级 Agent 分配给你的任务描述。这类描述通常具有以下特征,必须在拆分阶段处理掉,不能整段塞进 `--query`

  • 篇幅长(动辄数十到上百字)
  • 分点("1、…2、…3、…" 或 "首先…其次…最后…")
  • 多子意图叠加(同一段话里夹了"原因 + 步骤 + 流程 + 案例"等多个独立检索目标)
  • 含大量过渡词、修饰语、上下文铺垫

直接把任务原文当 query 必然召回失配(向量被多个语义稀释,分数全部偏低)。正确做法是:先拆,再并行检索。

---

默认策略(最重要)

对于"基于知识库回答问题"类需求,默认走 `auto` 多库并行检索,且 query 必须经过【拆分 + 关键词化】处理。 不要在没有充分理由的情况下走 info → 推理 → search 的两步路由。

只有在以下少数场景才偏离默认策略:

场景选择
知识问答(绝大多数)auto,按"Query 构造规则"拆分多个独立 query 并行检索
任务已指定具体 resource_idnamesearch
配置中知识库数 ≤ 2 且任务是路由决策可选 info 辅助
任务意图是"连接检查"/"看看这个库通了没"/"调用下这个知识库"/"列一下我有哪些库"info
任务描述完全无主题关键词(如"帮我查点东西")info 列表,再回报上级 Agent 请求澄清
经验法则:当你不确定走哪个动作时,默认选 `auto`。它本身就是为"未知目标 + 有具体语义"设计的。

---

Query 构造规则(拆分 + 关键词化 + 并行)

search / auto--query 是语义检索向量入口。面对上级 Agent 的长任务描述,必须执行三步处理:

第 1 步:拆分子意图

逐句通读任务描述,识别其中独立的检索目标。每个分点、每个"和/与/以及/同时"连接的并列项,通常都是一个独立子意图。

示例:上级任务 = "排查网络连接失败的问题,需要:1、常见故障原因分类;2、对应的排查解决步骤;3、从易到难的标准化处理流程" → 识别出 3 个子意图:① 故障原因分类 ② 排查解决步骤 ③ 标准化处理流程

第 2 步:每个子意图压缩为关键词 query

对每个子意图,提炼成由 2~5 个核心关键词 构成的短 query,剔除连接词、修饰语、铺垫语。

形态要求

  • 长度:每个 query 控制在 5~15 个汉字 / 10~30 个英文词以内
  • 由名词性关键词为主,允许少量动词,避免完整句式和疑问语气
  • 保留专有名词、术语、产品名、错误码原文

示例(接上文):

  • query₁ = "网络连接失败 故障原因 分类"
  • query₂ = "网络故障 排查步骤 解决方法"
  • query₃ = "网络故障 标准化处理流程"

第 3 步:并行检索(关键约束)

将拆出的多个 query 分别独立调用 auto禁止拼接成一个长 query。多次调用应在同一轮内并行发起。

多个 query 之间必须满足

约束说明反例
互相独立每个 query 表达一个完整可检索的子意图"故障原因"(太空泛,必须带主题词"网络故障 原因")
无重叠关键词集合之间交集尽量小,不要让多个 query 检索同一片切片query₁="网络故障 原因 分类"、query₂="网络故障 原因 类型" ← 重叠过高
高区分度每个 query 应能命中知识库的不同切片群三个 query 都包含"网络故障 步骤" ← 区分度低
数量适中通常 2~4 个 query;超过 5 个说明子意图拆得太碎,需合并

硬禁止清单

  • ❌ 把任务原文(含"1、2、3、"分点或"首先…其次…")整段塞进 --query
  • ❌ 把多个子意图用顿号/逗号拼成一个长 query(如"原因分类、排查步骤、处理流程"——这是 R2 失败的根本原因)
  • ❌ 用完整问句作为 query(如"网络连接失败时应该如何排查和处理?"——疑问句式会引入大量无关向量噪声)
  • ❌ 串行检索(一个查完再查下一个);多个独立 query 应在同一轮并行发起

---

召回不足时的正确处置(避免无效重试)

如果一次检索的 top 切片明显与意图无关,不要简单放大 `--limit` 重跑同一个 query——top10 已经是相关度排序的前 10 名,把 limit 提到 20/30 只会拿到更不相关的切片,不会让答案变好。

正确做法按优先级:

1. 重写关键词组合:替换同义关键词、调整词序、增删一个核心名词,重试一次。 2. 进一步拆分:如果某个 query 仍承载了过多语义,按"Query 构造规则"再拆出 2 个更窄的子 query 并行检索。 3. 合并过窄 query:如果多个 query 都返回空,可能是拆得过细,尝试合并相邻子意图(仍保持关键词形态)。 4. 换知识库:如果命中库与主题不符,换 resource_id 重新 search,或回到 auto 让多库竞争。 5. 如实回报上级:上述都失败后,向上级 Agent 回报"当前知识库内未检索到与 {子意图} 相关的内容",不要继续盲目放大 limit 或编造来源。

只有当一次召回明显被截断(top-N 都高度相关、分数都很高)时,才考虑加大 --limit

---

info 接口使用规约(防幻觉)

info 用于查看知识库元数据,不是知识问答的入口。调用前必须满足:

  • ✅ 有可靠的 resource_id,且该 ID 在 DATABASE_VIKING_COLLECTION 列表内(来自配置或上级已明确指定且属于该列表),
  • ✅ 有可靠的 name(来自配置 / 用户原话,且确认为知识库 collection name,不是飞书 Wiki 名)

严格禁止

  • --name "" 传空值
  • ❌ 凭直觉/上下文猜一个中文名(如"网络知识库"、"网络")作为 --name。Viking 知识库的 collection_name 一般是英文/拼音/ID,不支持中文;用中文名几乎必然失败。
  • ❌ 把飞书 Wiki 目录名(如 [网络知识库])当作 Viking collection name。飞书 Wiki 是被同步到 Viking 的数据源,与 Viking collection 是两套命名体系,不要混淆。
  • ❌ 在任务只是想"基于知识库回答问题"时,先去查 info 兜圈子。直接拆分 + auto 即可。

何时该用 info

用户意图是否调用 info
调用下这个知识库" / "看看 XXX 知识库连上了没"✅ 是,做连接检查
"我有哪些知识库" / "列一下知识库"✅ 是,列出元数据
任务描述完全无主题(如"帮我查点东西")✅ 是,列出后回报上级请求澄清
基于知识库回答具体问题(绝大多数)❌ 否,直接拆分 + auto
配置中知识库数量 ≥ 3❌ 否,auto 的并发筛选比 info 推理更可靠

---

使用方式

脚本:scripts/viking_search.py

info - 查看知识库详情

获取指定知识库的 collection_namedescription,用于连接检查或路由决策。

# 方式一:通过 resource_id 查询(推荐,唯一标识,不会歧义)
python scripts/viking_search.py --action info --resource-id <collection_resource_id>

# 方式二:通过 name + project 查询(name 必须来自配置或上级 Agent 指定,不要猜)
python scripts/viking_search.py --action info --name "XXX" --project "default"

search - 单库检索

已确定的知识库执行语义检索。query 必须是经过"Query 构造规则"处理的关键词组合。

# 方式一:通过 resource_id(推荐)
python scripts/viking_search.py --action search --resource-id <resource_id> --query "关键词1 关键词2 关键词3" --limit 10

# 方式二:通过 name + project
python scripts/viking_search.py --action search --name "XXX" --project "default" --query "关键词1 关键词2 关键词3"

auto - 多库并行检索(知识问答的默认入口)

对所有有权限的知识库并发执行轻量级检索,这是知识问答的首选对于含多个子意图的任务,应分多次并行调用 `auto`,每次传一个独立子意图的关键词 query。

export DATABASE_VIKING_COLLECTION="rid1,rid2,rid3"

# 单一子意图
python scripts/viking_search.py --action auto --query "网络故障 原因 分类"

# 多子意图(在同一轮内并行发起,不要拼接进同一个 query)
python scripts/viking_search.py --action auto --query "网络故障 原因 分类"
python scripts/viking_search.py --action auto --query "网络故障 排查步骤 解决方法"
python scripts/viking_search.py --action auto --query "网络故障 标准化处理流程"
再次强调:每个 --query 是关键词组合,不是任务原文;多子意图必须拆分 + 并行,禁止拼接

---

返回说明

info 返回示例

{
  "code": 0,
  "message": "success",
  "data": {
    "resource_id": "rid_xxx",
    "collection_name": "xxx",
    "description": "包含商品信息、订单数据、用户评价等电商相关文档。",
    "project": "default"
  }
}

search 返回示例

{
  "code": 0,
  "message": "success",
  "data": {
    "result_list": [
      {
        "score": 0.892,
        "rerank_score": 0.912,
        "content": "Mac 配置 Python 开发环境的步骤:首先安装 Homebrew,然后通过 brew install pyenv 来管理 Python 版本...",
        "chunk_title": "Python 环境配置",
        "chunk_id": "chunk_101",
        "doc_info": {
          "doc_id": "doc_001",
          "doc_name": "Mac 开发环境配置大全.md",
          "doc_type": "markdown"
        }
      }
    ]
  }
}

auto 返回示例

{
  "mode": "multi",
  "query": "Mac 上怎么配 Python 环境?",
  "collections": [
    {
      "resource_id": "rid1_mac_guide",
      "search": {
        "code": 0,
        "data": {
          "result_list": [
            {
              "score": 0.892,
              "rerank_score": 0.912,
              "content": "Mac 配置 Python 开发环境的步骤:首先安装 Homebrew,然后通过 brew install pyenv...",
              "chunk_title": "Python 环境配置",
              "chunk_id": "chunk_101",
              "doc_info": { "doc_id": "doc_001", "doc_name": "Mac 开发环境配置大全.md", "doc_type": "markdown" }
            }
          ]
        }
      },
      "top_chunks": [
        {
          "score": 0.892,
          "rerank_score": 0.912,
          "content": "Mac 配置 Python 开发环境的步骤:首先安装 Homebrew,然后通过 brew install pyenv...",
          "chunk_title": "Python 环境配置",
          "chunk_id": "chunk_101",
          "doc_id": "doc_001",
          "doc_name": "Mac 开发环境配置大全.md",
          "doc_type": "markdown"
        }
      ]
    },
    {
      "resource_id": "rid2_hr_policy",
      "search": { "code": 0, "data": { "result_list": [] } },
      "top_chunks": []
    }
  ]
}

---

Configuration

环境要求

  • Python 3.7+
  • requests 库(用于 HTTP 请求)

环境配置说明

本 Skill 执行所需的 API 地址及鉴权 Key 已在执行环境中预先配置。脚本会自动从环境变量读取必要凭证,无需用户干预,不应直接向用户暴露任何敏感配置

可选环境变量

  • DATABASE_VIKING_PROJECT:知识库所属项目名称,默认 default。用于按名称查询/检索时辅助定位。
  • DATABASE_VIKING_COLLECTION:逗号分隔的 knowledge collection resource_id 列表,作为 auto / info / search 的可访问范围;同时也是合法 resource_id / name 的唯一可信来源——不要猜不在此列表里的 ID 或名称info / search 若指定了列表外的库,脚本会报错:没有权限访问当前知识库数据源

---

注意事项

  • 异常处理:如果脚本返回"检测到环境配置缺失"相关错误,应向上级 Agent 回报:当前知识库查询服务尚未完全配置,建议提示用户联系管理员补充必要的环境参数。
  • 权限管控:若 info / search 返回 没有权限访问当前知识库数据源,说明请求的 resource_idname 不在 DATABASE_VIKING_COLLECTION 内。不要猜测其他 ID/名称重试,应仅使用允许列表中的库,或改走 auto
  • 安全:妥善保管 API 凭证及鉴权信息;严禁在输出中泄露任何敏感环境变量或 Key。
  • 并发auto 模式默认并发 8,可通过 --max-workers 调整。多子意图并行调用时,多次 auto 应在同一轮内发起。
  • 性能auto 模式的轻量检索默认 limit=5;如果 top-N 均高度相关但被截断,再考虑调大 --limit不要把放大 limit 当作召回不准的兜底手段
  • 飞书 Wiki ≠ Viking collection:客户可能在 Viking 中同步了飞书 Wiki,但 Wiki 目录名(中文)≠ Viking collection name。看到飞书 Wiki 目录名时不要把它当作 Viking 知识库的 --name 去查。

---

Resources

scripts/

  • viking_search.py - Viking 知识库检索脚本(支持 info / search / auto 三种动作)

references/

  • search_knowledge_api.md - 火山引擎 Viking 知识库 搜索 API 文档(原始接口说明)
  • collection_info_api.md - 火山引擎 Viking 知识库 查看知识库详情 API 文档(原始接口说明)

Related skills

FAQ

What is the default retrieval action?

For knowledge-QA tasks the default is auto, multi-base parallel retrieval, with the query split and keyword-ized.

Should I pass the full task as one query?

No, the skill forbids passing multi-intent task text as one query and requires splitting into 2-4 independent keyword queries run in parallel.

AI & Agent Buildingagentsresearch

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.