构建 RAG + Wiki 企业知识库
🧠
本文介绍如何通过创建知识库、上传文档、配置 RAG 检索、开启 Wiki 蒸馏、Agent 集成与质量管控六个步骤,构建同时支持 RAG 与 Wiki 双引擎的企业知识库,让您的 Agent 能够自主检索和推理企业知识。
全景流程
上下文服务(Context0)的企业知识库提供 RAG 和 Wiki 双引擎。RAG 从文档片段中定位精确事实(参数、条款、操作步骤);Wiki 将散落在多份文档中的知识蒸馏为结构化主题页面,页面之间通过链接形成可导航的知识图。您的 Agent 通过 assemble 一键装配,或直接调用 RAG / Wiki 接口,即可获得企业知识能力。
代码块
Plain Text
文档上传 → 智能分块 & 向量化 → 双路索引(BM25 + 向量)
↓
RAG 混合检索(实时可用)
↓
Wiki 蒸馏(异步生成结构化主题页)
↓
Agent 集成(assemble / 直接 API / Wiki 导航)

一个知识库同时支持 RAG 和 Wiki 两种检索模式。文档上传后数秒即可进行 RAG 检索;Wiki 蒸馏为异步过程,分钟级完成后提供主题导航能力。
第一步:创建知识库
调用创建知识库接口,在请求体中指定知识库名称、可见性以及是否启用知识图谱与 Wiki 蒸馏:
代码块
Bash
curl -X POST "$HOST/v1/knowledge/bases" \
-H "X-API-Key: $API_KEY" \

不同 AI 智能体(Agent)框架或大模型方案性能的基准测试(Benchmark)结果图
记下响应中的 data.id(知识库 ID),后续步骤中的 $KB_ID 均指该值。
#GTvmcylQwZVU text { white-space: pre; }#GTvmcylQwZVU .fb0 { stroke: var(--N900-FG, 0.15); }#GTvmcylQwZVU .fb0 {stroke: rgba(31,35,41, 0.15)}#GTvmcylQwZVU .fx0 { stroke-miterlimit: 10; }#GTvmcylQwZVU .fx0 {stroke-miterlimit: 10}#GTvmcylQwZVU .fa1 { fill: rgb(187, 191, 196); }#GTvmcylQwZVU .fa1 {fill: rgb(187, 191, 196)}#GTvmcylQwZVU .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#GTvmcylQwZVU .fx1 {font-style: normal}#GTvmcylQwZVU .fx2 { text-anchor: middle; }#GTvmcylQwZVU .fx2 {text-anchor: middle}#GTvmcylQwZVU .fx3 { dominant-baseline: central; }#GTvmcylQwZVU .fx3 {dominant-baseline: central}#GTvmcylQwZVU .fx4 { stroke: none; }#GTvmcylQwZVU .fx4 {stroke: none}#GTvmcylQwZVU .fc0 { fill: var(--text-caption); }#GTvmcylQwZVU .fc0 {fill: #646a73}#GTvmcylQwZVU .fa2 { fill: var(--text-link-disabled); }#GTvmcylQwZVU .fa2 {fill: rgb(187, 191, 196)}#GTvmcylQwZVU .fa3 { fill: rgb(229, 229, 229); }#GTvmcylQwZVU .fa3 {fill: rgb(229, 229, 229)}#GTvmcylQwZVU .fx5 { font: 700 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#GTvmcylQwZVU .fx5 {font-style: normal}#GTvmcylQwZVU .fx6 { text-anchor: start; }#GTvmcylQwZVU .fx6 {text-anchor: start}#GTvmcylQwZVU .fx7 { dominant-baseline: alphabetic; }#GTvmcylQwZVU .fx7 {dominant-baseline: alphabetic}#GTvmcylQwZVU .fc1 { fill: rgb(0, 0, 0); }#GTvmcylQwZVU .fc1 {fill: rgb(0, 0, 0)}#GTvmcylQwZVU .fx8 { font: 400 14px LarkHackSafariFont, LarkEmojiFont, Menlo, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "Noto Sans", Tahoma, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", STHeiti, SimHei, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui; }#GTvmcylQwZVU .fx8 {font-style: normal}#GTvmcylQwZVU .fx9 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#GTvmcylQwZVU .fx9 {font-style: normal}#GTvmcylQwZVU .fb1 { fill: var(--N900-FG, 0.15); }#GTvmcylQwZVU .fb1 {fill: rgba(31,35,41, 0.15)}#GTvmcylQwZVU .fb2 { fill: rgb(216, 216, 216); }#GTvmcylQwZVU .fb2 {fill: rgb(216, 216, 216)}#GTvmcylQwZVU .fa4 { fill: var(--bg-body); }#GTvmcylQwZVU .fa4 {fill: #fff}ABCD1234567参数类型必填说明namedescriptionvisibilitygraph_enabledwiki_enabledtuningworkspaceprivatefalsefalsechunk_sizehybrid_weightstringstringstringbooleanbooleanobject是否否否否否知识库名称描述(公开,成员默认 editor)/ (私有,仅创建者可访问)。未指定时按 Key 类型取默认值。是否启用知识图谱,默认 是否开启 Wiki 蒸馏,默认 分块与检索调参(、 等)
说明:visibility 为 workspace 时,工作空间内每位成员默认就是编辑者;为 private 时,只有创建者本人和被显式授权者可访问。
通过 Dashboard
在知识库列表页单击创建知识库。
填写名称和描述。
选择访问范围(公开 / 私有)。
按需开启知识图谱和Wiki 蒸馏开关。
单击确认。
第二步:上传文档
适用于 PDF、Word、PPT 等二进制文件:
代码块
Bash
curl -X POST "$HOST/v1/knowledge/bases/$KB_ID/documents/upload" \
-H "X-API-Key: $API_KEY" \
-F "file=@./docs/product-manual.pdf" \
-F "title=产品手册"
通过 Dashboard
进入知识库详情页的文档页签。
单击上传文档,拖拽文件或选择本地文件。
上传后等待后台解析与索引完成。
支持的文档格式
表格加载中...
说明:上传文档时无需指定格式,Context0 会自动检测文件类型并选择解析引擎。单个文件最大 100 MB。
第三步:配置 RAG 检索
RAG 检索经过四个阶段:查询改写(可选)→ BM25 + 向量双路召回 → RRF 融合排序 → Rerank 精排(可选)。其中查询改写由 rewrite 参数控制。
通过 API 执行检索
代码块
Bash
curl -X POST "$HOST/v1/knowledge/search" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
响应中每条结果包含 content(文档片段原文)、score(相关性得分)和 metadata(来源文档信息),Agent 可直接引用。
第四步:开启 Wiki 蒸馏
Wiki 是什么
Wiki 将文档 chunk 中的知识由 LLM 蒸馏为结构化 Markdown 页面,页面之间通过链接形成可导航的知识图。蒸馏产生四种页面类型:
通过 API 配置
开启 Wiki 并设置生成参数:
代码块
Bash
curl -X PUT "$HOST/v1/knowledge/wiki/config?kb_id=$KB_ID" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"wiki_enabled": true,
"wiki_config": {
"extraction_granularity": "standard",
"wiki_language": "Chinese",
"content_instructions": "侧重业务流程和产品关系"
}
}'
说明:Wiki 配置按字段合并:省略的字段保留当前值,不会被清空。
为已有文档触发批量生成:
开启 Wiki 不会自动补建历史文档。需要为已有文档生成 Wiki 页面时,请显式触发:
代码块
Bash
curl -X POST "$HOST/v1/knowledge/wiki/backfill?kb_id=$KB_ID" \
-H "X-API-Key: $API_KEY"
返回的 enqueued 是入队文档操作数(不是已生成页数),任务在后台异步处理。新上传的文档在索引完成后会自动按配置持续生成 Wiki。
通过 Dashboard
进入知识库详情页的Wiki管理页签。
在配置面板中开启 Wiki,并设置语言、粒度、自定义指令。
单击补建Wiki,为已有文档触发 Wiki 蒸馏。
在页面列表中查看、编辑已生成的 Wiki 页面。
说明:Wiki 页面校验:写入 Wiki 页面时,slug 和 title 为必填字段;page_type 必须为有效类型(summary / entity / concept / index),否则返回 400。
Agent 自我进化与记忆沉淀机制
原始层(raw/)
该层存储从每个训练迭代中收集的原始执行轨迹 τi∈Ttrain,kτi∈Ttrain,k。这些轨迹捕获了代理(Agent)完整的逐步交互过程,包括推理过程、工具调用、工具调用输出以及最终答案。在我们的设置中,Wiki Maintainer 和 Skill Proposer 代理可以访问这些原始轨迹,以分析代理行为。为保留原始历史记录,该层是不可变的(immutable)。
维基层(wiki/)
该层将原始轨迹编译为结构化的、累积性的知识,并在技能演进过程中持续维护。它包含一个模式目录(patterns/),其中填充了带有独立 Markdown 文件的记录,用于记录特定的失败模式或成功策略,以及可操作的补救措施。至关重要的是,这一层通过演化日志(logs.md,由 Wiki Maintainer 更新)和技能影响追踪器(skill-impact.md,由外层循环框架在验证门控后以程序化方式更新),提供了贯穿优化迭代过程的长期历史认知。
技能层(skills/)
该层包含当前激活的进化技能集合 SS,它们编码了推理代理(Inference Agent)可以读取的程序性知识。WikiSkill 中的每个技能目录包含两个文件:SKILL.md,包含技能的完整内容;以及 PURPOSE.md,将技能映射回其创建或修改所依据的 Wiki 模式。技能层与 Wiki 层之间的交互细节如图 3 所示,并在第 5.3 节的案例研究中进行了说明。
第五步:让 Agent 自主检索知识
无论您使用 LangChain、AutoGen 还是自研框架,只需调用 Context0 接口即可让 Agent 获得企业知识检索能力。下面介绍三种集成方式。
Agent 记忆与技能演进架构
通过 assemble 一键装配(推荐)
•
Agent 发送一个请求,Context0 自动完成以下工作:
a.
从指定知识库中RAG 检索相关文档片段。
b.
从 Wiki 中搜索并提取相关主题页面。
c.
召回用户长期记忆和会话历史。
d.
按 Token 预算装配成结构化 PromptBlock。
e.
Agent 将 PromptBlock 按序注入 LLM 上下文。
代码块
Bash
响应结构:
代码块
JSON
{"code": 0, "msg": "ok","data": {"prompt_blocks": [{"role": "system","tag": "knowledge","content": "根据《理赔操作手册》第三章...","tokens": 320,"sources": ["knowledge:chunk_abc123"]},{"role": "system","tag": "wiki_pages","content": "# 理赔流程\n理赔分为报案、审核...","tokens": 256,"sources": ["wiki:page_101"]},{"role": "system","tag": "memory_recall","content": "- 用户上次询问过免责条款...","tokens": 64,"sources": ["memory:mem_def456"]}],"token_used": 640,"token_budget": 4000,"trace_id": "trace-001"}}
Agent 将 prompt_blocks 数组按序拼入 LLM prompt,每个 block 的 tag 标识了来源类型(knowledge = RAG 片段、wiki_pages = Wiki 页面、memory_recall = 长期记忆),sources 提供原文引用。
知识库相关参数:
说明:Token 预算分配:include_wiki 生效时,knowledge 预算内部自动切分为 chunk 12% + wiki 8%(基于默认 20% knowledge 预算)。您也可以通过 budget_allocator 手动调整各维度比例。
典型 Agent 集成伪代码:
代码块
Python
import os
import requests
传统的中心化架构存在严重的性能瓶颈,而去中心化架构更具适应性和扩展性
直接调用 RAG 检索 API
对于需要精细控制检索流程的 Agent,可以跳过 assemble,直接调用检索接口:
代码块
Bash
# 1. 执行 RAG 检索
curl -X POST "$HOST/v1/knowledge/search" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "理赔需要提交哪些材料",
"kb_ids": [1],
"top_k": 5,
"rewrite": true,
"decompose": false
}'# 2. Agent 自行将检索结果注入 LLM prompt
这种方式适合 Agent 需要对检索结果做二次处理(如过滤、重排、格式转换)后再注入 LLM 的场景。
DeLM(去中心化并行架构)
Agent 自主导航 Wiki(Search-Read-Expand)
合需要多步推理的复杂问题。Agent 像浏览百科一样自主导航 Wiki:搜索入口 → 阅读全文 → 沿链接展开 → 追溯原文验证。
3.1
Search,搜索入口页面
代码块
Bash
curl -X POST "$HOST/v1/knowledge/wiki/search" \
返回命中的页面列表(标题、slug、摘要),不含全文。Agent 从中选择最相关的页面进入下一步。
3.2
Read,阅读目标页面
代码块
Bash
curl -G "$HOST/v1/knowledge/wiki/read" \
-H "X-API-Key: $API_KEY" \
--data-urlencode "kb_id=1" \
--data-urlencode "slug=claim-process"
返回页面全文(content_markdown)、出链列表(out_links)、入链列表(in_links)和邻居页面摘要卡(neighbors,≤ 20 条,每条摘要 ≤ 150 字符)。Agent 可以直接使用全文回答问题,也可以根据链接决定是否继续探索。
3.3
Expand,沿链接展开关联页面
Agent 根据 out_links / in_links 中的 slug,继续调用 GET /v1/knowledge/wiki/read 阅读更多关联页面,直到收集到足够信息。
代码块
Bash
# Agent 发现 claim-process 页面链接到 "审核部门",继续阅读
curl -G "$HOST/v1/knowledge/wiki/read" \
-H "X-API-Key: $API_KEY" \
--data-urlencode "kb_id=1" \
--data-urlencode "slug=audit-department"
3.4
Source,追溯原始文档
当 Agent 需要核对蒸馏内容与原文是否一致时,追溯源文档:
代码块
Bash
第六步:质量管控
内容审核
knowledge_quality_review 已默认开启,上传的文档会自动进入质量审查工作流。如需关闭,可通过工作空间(Workspace)级的功能开关(feature flag)配置。
•
通过 API:
代码块
Bash
# 查看待审核列表
curl "$HOST/v1/knowledge/bases/$KB_ID/reviews" \
•
通过 Dashboard:在知识库详情页的审核队列页签中查看和处理待审核内容。
Wiki 质量反馈
发现 Wiki 页面内容有问题时,可以提交质量反馈:
代码块
Bash
curl -X POST "$HOST/v1/knowledge/wiki/issues" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"page_id": 101,
"issue_type": "inaccurate",
"description": "第三节理赔时限描述与最新规定不符"
RAG 与 Wiki 如何互补
推荐组合使用:Agent 先通过 Wiki 理解全局背景,再通过 RAG 定位精确参数和条款原文。
常见问题