OpenViking 知识蒸馏实战指南:用 ov compile 把多份知识库提炼为主题化、有出处的高阶结论

发布时间:2026/9/10 12:08:37
OpenViking 知识蒸馏实战指南:用 ov compile 把多份知识库提炼为主题化、有出处的高阶结论 OpenViking 知识蒸馏实战指南用 ov compile 把多份知识库提炼为主题化、有出处的高阶结论【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking导读本文围绕 OpenViking 的Knowledge Distillation知识蒸馏Skill 展开讲解如何把一份或多份知识库、文档集合通过ov compile自动编译成按主题组织、有出处可查的高层次知识跨来源的发现、趋势、变化、驱动因素、对比、影响和不确定性。读完本文你将掌握该 Skill 的完整用法从准备来源、添加 Skill、执行编译到检查产物并理解其背后的证据分级模型、蒸馏质量标准与底层执行原理能够把一叠财报、研究资料或任意领域文档蒸馏成可直接检索复用的结论树。Skill 本体位于 examples/compile/ov-compile-skills/knowledge-distillation官方配套示例文档见 docs/en/context-compilation/05-knowledge-distillation.md。一、蒸馏是什么从资料堆到结论树知识蒸馏的目标是把一大片知识收敛为一小组持久、高阶的结论。它不是给每份文档写摘要也不是生成一个资料目录而是完成这样的跃迁来源事实source facts→ 归一化证据normalized evidence→ 模式patterns→ 发现findings→ 影响implications且每一步都可追溯。最终产物应当比来源集合更直接地回答用户的问题。Skill 的 frontmatter 里对此有清晰定义SKILL.md--- name: knowledge-distillation description: Compile one or more OpenViking knowledge bases or document collections into topic-organized, evidence-grounded high-level knowledge, including cross-source findings, trends, changes, drivers, comparisons, implications, and uncertainties. Use with ov compile when the user asks to distill or synthesize a knowledge base, compare multiple collections, or derive higher-order insights such as changes across financial reports; do not use for document-by-document summaries. ---它适用于三类典型诉求蒸馏一个知识库把大库压成结论集对比多个集合跨知识库找差异推导高阶洞察例如跨财报期的变化。同时它也明确划定了不适用的场景逐文档摘要document-by-document summaries。蒸馏在 Context Compilation 生态中的位置ov compile是 OpenViking 的上下文编译入口负责把散落在文档、笔记、网页、转录、研究文件、代码仓库中的原材料转成结构化、可检索、可复用的知识。一次编译需要提供三样东西docs/en/context-compilation/01-overview.md--from一个或多个来源目录/文件--to产物目标目录--skill规定输出形态的规格spec外加可选的--reason本次运行的补充指令范围、受众、语言、侧重点、日期区间。Skill 决定编译成什么形状--reason告诉 Agent这一次你想要什么。OpenViking 自带的示例 Skill 各有不同的输出形态蒸馏是其中之一Skill输出形态适用场景LLM Wiki互链的 Markdown 页面实体、概念、方法等 导航index.md人与 Agent 都能快速检索复用的知识库Knowledge Graphentities/*.md节点 relations.jsonl边文件按实体、类型、关系遍历的结构化知识Daily Report每个日期一个YYYY-MM-DD.md页面从对话、会话、消息、任务记录重建每天发生了什么Knowledge Distillation按主题组织的高层次结论页从一个或多个知识库中蒸馏跨来源的发现、趋势和变化底层执行原理编译由VikingBot驱动docs/en/concepts/15-vikingbot.md任务被接受后VikingBot 加载你指定的 Skill以你的身份读取来源在专用的agent loopContext → Model → Tools → Model中自主工作——阅读、蒸馏、组织、写页面就像雇人把一堆材料整理成干净的知识库再把成品交还给你。整个过程异步运行你可以等待也可以拿到task_id后先做别的事。任务链路的代码入口docs/en/api/23-agent-runtime.mdopenviking/server/routers/compile.pyCompile 任务创建POST /api/v1/compile返回 202 Acceptedopenviking/server/routers/tasks.py任务查询与取消openviking/service/compile_service.pyRuntime 调用与任务状态收敛crates/ov_cli/src/commands/compile.rsov compile命令的 CLI 实现。二、输出模型主题化工件树蒸馏的产物是一棵按主题组织的浅层工件树topic-a/ high-level-knowledge-a.md high-level-knowledge-b.md topic-b/ high-level-knowledge-c.md主题目录语义领域而非来源容器每个主题目录是一个持久的语义领域不是来源的容器主题边界由领域、任务问题和证据中反复出现的关系决定不要镜像来源知识库名、文档文件夹、作者、报告期或文件结构除非它们本身就是分析对象。控制树的深度默认只用一层主题目录只有当一个主题宽泛到无法连贯检索、且额外层级代表稳定的领域边界时才引入子主题真正跨主题的结论放在最窄的共同主题下或放在一个明确命名的 cross-cutting 主题下不要复制进每个相关目录。页面一个独立有用的高阶知识单元每个页面捕捉一个知识单元趋势、机制、对比、变化、约束、权衡、风险、机会或某个持久分析问题的答案不要一来源一页、一目录一页也不要为主题建一个只有标签没有结论的页面不追求固定页数。关于 index.md、.overview.md、.abstract.md 的约束默认不创建index.md蒸馏本身是一组结论除非--reason明确要求导航页或现有目标已有必须维护的 index 契约不要手动创建.overview.md或.abstract.md——这些派生目录摘要由 OpenViking 自己生成它们是目录级的 L0/L1 语义 sidecar见 docs/en/concepts/03-context-layers.md。命名规范主题和页面名要稳定、路径安全拉丁字符路径优先用小写 kebab-case非拉丁输出语言保留该语言的简洁规范名页面名按它检索的知识命名而不是summary、report或来源标题复用已经拥有同一主题和结论的既有路径不要仅为本地化而重命名既有路径。一个形态示例以一组财报为例仅形态示范真实主题由你给的领域决定revenue-quality/ growth-shifted-from-volume-to-pricing.md overseas-growth-offset-domestic-slowdown.md profitability/ margin-recovered-but-cash-conversion-weakened.md risk/ customer-concentration-increased.md注意页面名直接陈述结论本身growth-shifted-from-volume-to-pricing而不是来源标题q2-report-summary。蒸馏页面的 OKF 格式每个新建的蒸馏页面都是一个完整的 OKF Markdown 文件--- type: distillation title: Canonical analytical title description: One factual sentence stating the question, scope, and retrieval purpose. ---frontmatter 之后接一个匹配的 H1 标题以及直接给出答案的 2 到 4 句话。正文只使用分析真正需要的章节例如 scope and evidence、key findings、changes and drivers、comparisons、implications、uncertainties。宁可要少数几个扎实的发现也不要大量肤浅的观察。OKFOpenViking Format是带 YAML frontmatter 的 Markdown。系统要求每个文件都有非空的type、title、description未知元数据字段会被静默丢弃docs/en/api/12-content.md。三、蒸馏标准四层证据模型构建结论必须经过显式的证据分级级别定义要求Observation观察来源直接陈述或测量的事实附准确来源引用Synthesis综合合并多个相容观察得到的模式或对比说明合并逻辑Inference推断来源未直接陈述、由推理得出的结论必须标注为 inference并解释支撑它的观察Hypothesis假说现有证据无法证实的合理解释仅在有用时包含并说明缺失什么证据必须避免的推理谬误把推断当作观察事实把重复出现的说法当作独立佐证同一份会议纪要衍生的多页属于同一个证据家族不是独立确认把相关性当作因果把证据缺失当作不存在的证据。判断一条声明是否可靠文档数量不如其独立性、权威性、时效性和覆盖面重要。可检验的推理链对每个主要发现推理过程要可检查陈述结论引用决定性事实当联系不明显时解释连接在相关时给出实际影响或不确定性。避免伪精确的置信度分数。只有当well-supported、mixed evidence、tentative这类朴素的标签能帮助读者判断发现时才使用它们。四、完整工作流1. Frame the question框定问题定义主体subject、时间范围time range、基线baseline、对比集comparison set、预期用途intended use、排除项exclusions。在深入阅读前把独立问题分开。当来源集合很宽时先识别蒸馏应该支撑哪些决策或读者需求。2. Survey before deep reading先勘察再精读先检查每个来源知识库的索引、目录或顶层结构可用ov abstract/ov overview快速看 L0/L1摸清它的覆盖面、时间线、权威性、术语、既有摘要和明显缺口再读每个候选发现所需的具体材料不要仅凭文件名或一次搜索命中就推断覆盖面追踪来源谱系同一会议、报告、数据集或上游声明衍生的多页属于一个证据家族集合中同时有原始材料和摘要时优先原始证据。3. Build topics bottom-up自底向上建主题先抽取紧凑的声明卡片claim cards再决定输出树。对每条实质声明记录主体subject、谓词predicate、范围scope、时间time证据evidence与状态observation、source opinion 或 inference。然后归一化同义主体去重共享同一上游来源的声明按共同回答的问题或共同解释的机制聚类声明主题名要在声明簇足够连贯之后才定最后从簇内/簇间的共识、变化、对比、依赖和张力中导出候选高阶知识。这种自底向上的顺序可以防止一个方便的文件夹分类法把证据硬塞进缺乏支持的结论。主题名要在知识库增长时仍然有用页面标题要陈述真实结论。例如用revenue-quality/growth-shifted-from-volume-to-pricing.md而不是finance/q2-report-summary.md。4. Normalize evidence归一化证据在比较事实之前先对齐实体entities、别名aliases、定义definitions、版本versions、期间periods、单位units、货币currencies、范围scopes、度量方法measurement methods。保留有意义的差异不要把不同质的东西硬塞进同一张表或同一条趋势。变化分析要建立可比的基线与当前状态并区分绝对变化absolute change相对变化relative change组合偏移mix shift定义变化change in definition。例如在声称某项财务指标改善之前先对齐报告期、货币、合并范围、指标定义和任何重述restatement。去重重复事实无法调和的分歧就保留为结果的一部分并绑定其来源、日期、版本或视角。5. Derive and select findings推导并筛选发现寻找有支持的变化、反复出现的机制、稳定关系、驱动因素、约束、权衡、异常、风险、机会、知识缺口。对每个候选结论用**反证counterevidence**和合理的替代解释检验。保留那些对问题实质性、证据充分到有用、比直接复述来源更有信息量的发现。丢弃装饰性主题、琐碎的共性、推理依赖缺失或不兼容证据的声明。表格只用于真正可比的主体或期间。展示派生计算时要给出输入值、单位和公式绝不虚构缺失的分母也不要悄悄混用 reported 值和 calculated 值。6. Write with provenance带出处写作把准确的来源 URI、仓库相对路径或提供的链接放在它们支撑的观察附近给每个链接简洁可读的文本保留提供的锚点绝不发明来源、锚点、引文、日期、指标、关系或因果解释声明专属证据内联保留若页面还需要来源清单用## Sources或本地化等价标题渲染一次不要重复同一批链接说明来源覆盖面和重要遗漏让读者明白蒸馏能证明什么、不能证明什么。7. Integrate existing knowledge整合既有知识更新前先勘察既有主题树完整阅读相关蒸馏页保留准确、独有的上下文和用户创作的材料合并互补证据刷新同一个分析页不要创建同义主题或重复结论每个可能变化的结论都要加时间边界新证据改变旧结论时解释转变及其证据而不是静默追加一个不相容的发现不动无关的目标页和可选的 index除非任务要求改动它们。五、质量门Quality gate完成前逐条核对完整清单见 SKILL.md 的 Quality gate 一节核心检查项包括开头直接回答清晰的分析问题或定义了有用的领域概览结果是跨知识的综合而不是逐来源摘要每个主要发现都有从被引用观察到结论的可追溯链条observations、syntheses、inferences、hypotheses、source opinions 之间保持可区分所有被比较或计算的主体其期间、实体、定义、版本、单位、货币、范围可比反证、矛盾、来源依赖、覆盖面缺口、不确定性都被保留因果声明和影响不超出证据主题目录反映分析领域而非来源布局且保持浅层每个页面包含一个独立有用的高阶知识单元而非来源或文件夹摘要没有创建根 index除非任务或既有目标契约要求每个文件都有非空type、title、description的合法 OKF frontmatter没有创建 OpenViking 生成的语义 sidecar、逐来源摘要页或重复操作日志。六、实战四步完成一次财报蒸馏以下命令完整对应 docs/en/context-compilation/05-knowledge-distillation.md 的示例。前置条件运行中的 OpenViking 服务且开启 Bot--with-bot默认端点http://localhost:1933远程使用需要 API Key见 docs/en/guides/04-authentication.mdovCLI 已配置连接~/.openviking/ovcli.conf或OPENVIKING_*环境变量。第一步准备来源ov add-resource ./finance-reports --to viking://resources/finance-reports --wait ov ls -r viking://resources/finance-reportsov add-resource可导入本地文件、文件夹、URL、仓库乃至整个网站sitemap/RSS--wait表示等待导入处理完成crates/ov_cli/src/help_ui.rs 中add-resource帮助说明。第二步添加 Skillov add-skill examples/compile/ov-compile-skills/knowledge-distillation --wait ov skills list # → viking://agent/skills/knowledge-distillation 或 viking://user/user_name/skills/knowledge-distillationov add-skill接受SKILL.md文件或包含SKILL.md的目录辅助文件一并纳入处理流程为接收数据 → 检测格式结构化数据 / SKILL.md / MCP Tool 自动转换→ 解析定义 → 存储到当前用户的viking://user/{user_id}/skills/→ 若waittrue等待向量化完成docs/en/api/04-skills.md。核心入口包括openviking/server/routers/resources.py的add_skill路由和openviking/service/resource_service.py的ResourceService.add_skill。第三步执行编译在--reason里说清分析问题、对比维度、基线和范围——它直接决定蒸馏的方向ov compile \ --from viking://resources/finance-reports \ --to viking://resources/finance-insights \ --skill viking://agent/skills/knowledge-distillation \ --reason Compare the last three years of reports; obtain changes and drivers in revenue quality, profitability, and risk--from可传多个来源用于跨知识库对比ov compile \ --from viking://resources/finance-2024,viking://resources/finance-2025 \ --to viking://resources/finance-insights \ --skill viking://agent/skills/knowledge-distillation \ --reason Compare the two yearly knowledge bases; surface changes and structural differences in key metrics命令立刻返回task_id格式为cmp_...ov task status cmp_01abc # 查看进度与最终结果 ov task cancel cmp_01abc # 协作式取消参数细节与底层行为ov compile的 CLI 实现在 crates/ov_cli/src/commands/compile.rs--from支持逗号分隔多来源且自动去重normalize_sources会拆分逗号、去空项、去重测试用例见同文件expands_comma_separated_and_repeated_sources_stably--args必须是合法 JSON 对象如{model_name:your-model-endpoint-id}parse_args会严格校验非对象或非法 JSON 直接报错请求发往POST /api/v1/compile见 openviking/server/routers/compile.pyHTTP 层返回 202 Accepted。Compile 任务字段docs/en/api/23-agent-runtime.md字段类型必填默认说明fromstring[]是-一个或多个来源目录tostring是-目标 Resource/Memory 目录或受支持的 Skill 命名空间skillstring是-Skill 目录或其SKILL.mdURIreasonstring否Skill 驱动的默认本次 Compile 运行的附加指令argsobject否-执行后端扩展model_name接受模型端点 ID任务生命周期ov task status/ov task cancel状态典型阶段pendingqueuedrunning后端报告的执行阶段如agent、writingcancelling结算进行中的工作并清理资源completedcompleted、salvagedfailed失败发生的阶段响应含errorcancelledcancelled取消是协作式的任务先进入cancelling在进程内工作和清理落定后变为cancelled已完成写入不回滚对已取消任务的重复取消是幂等的。第四步检查产物先看主题树再钻进具体结论页ov tree viking://resources/finance-insights ov read viking://resources/finance-insights/revenue-quality/growth-shifted-from-volume-to-pricing.mdov tree展示 URI 下的分层视图可用-L depth控制深度ov read读取精确的 L2 文件内容crates/ov_cli/src/help_ui.rs。默认不创建index.md——蒸馏本身就是一组结论除非--reason明确要求导航页。重复运行会刷新同一个分析页并为可能变化的结论加上时间边界。七、通过 HTTP API 与 SDK 触发蒸馏Compile 不限于 CLI。作为创建任务的等价通道POST /api/v1/compile接受 JSONcurl -X POST http://localhost:1933/api/v1/compile \ -H Content-Type: application/json \ -H X-API-Key: your-key \ -d { from: [viking://resources/finance-2024, viking://resources/finance-2025], to: viking://resources/finance-insights, skill: viking://agent/skills/knowledge-distillation, reason: Compare the two yearly knowledge bases; surface changes and structural differences in key metrics., args: {model_name: your-model-endpoint-id} }Python SDK 等价写法sdk/pythontask client.compile( [viking://resources/finance-2024, viking://resources/finance-2025], viking://resources/finance-insights, viking://agent/skills/knowledge-distillation, {reason: Compare the two yearly knowledge bases; surface changes and structural differences.}, )创建后通过GET /api/v1/tasks/{task_id}查询、POST /api/v1/tasks/{task_id}/cancel取消。任务仅对创建它的主体可见缺失任务和他人任务都返回404docs/en/api/23-agent-runtime.md。八、进阶建议把--reason当作分析契约写清楚要回答的问题、对比维度、时间基线与范围。它决定蒸馏方向写得越具体产物越贴近需求先勘察再精读利用 L0/L1 侧car 快速摸清来源结构避免被文件名误导跨库对比时保持证据家族意识多来源中源自同一上游材料的页面是同一证据家族不算独立确认结论页命名即结论让页面标题直接可检索如growth-shifted-from-volume-to-pricing.md方便未来复用与合并重跑即刷新新增来源后重跑同一ov compile命令系统会刷新同一分析页并保留时间边界而不是堆叠重复结论。相关文档上下文编译概览日报示例Daily ReportAgent Runtime API任务生命周期与 HTTP 接口Skills APISkill 管理与自定义上下文分层 L0/L1/L2 与 OKF 侧car 格式VikingBot 概念编译背后的 Agent 运行时【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考