鸿蒙智能体开发实战:20.创建知识库
前言
知识库是智能体的"长期记忆"和"专业知识库"。当智能体需要基于特定领域的文档、数据或信息来回答问题、执行任务时,知识库扮演着至关重要的角色。本文将详细介绍如何在小艺开放平台上创建、配置和发布知识库,帮助你的智能体具备专业领域知识能力。
知识库的核心价值在于:让智能体不再局限于大模型的通用知识,而是能够基于你提供的私有数据、行业文档、产品手册等专属信息,提供精准、可控、可溯源的答案。
知识库概述
什么是知识库
知识库是一个结构化的数据存储系统,用于存放智能体在对话和任务执行过程中需要引用的专业信息。开发者可以将产品文档、操作手册、常见问题、行业规范等资料导入知识库,智能体在回答问题时会自动检索相关知识并生成答案。
知识库的核心能力
- 领域知识增强:补充大模型未覆盖的垂直领域专业知识
- 信息溯源:回答问题时可追溯到原始文档内容
- 实时更新:文档更新后知识库同步刷新,确保答案时效性
- 多源接入:支持文档、图片、API数据源、网页爬虫四种导入方式
知识库与智能体的协作流程
用户提问 → 智能体接收 → 检索知识库 → 匹配相关段落 → 大模型理解上下文 → 生成回答返回用户
创建知识库完整流程
步骤一:进入知识库管理页面
在小艺智能体平台的导航菜单中,依次点击【资源库】→【知识库】→【新建知识库】,进入新建知识库流程。

步骤二:填写知识库基本信息
在新建页面,需要填写以下信息:
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| 知识库名称 | 简明扼要地描述知识库内容,如"产品使用手册" | 必填 |
| 知识库描述 | 概述知识库包含的信息范围和使用场景 | 建议填写 |
| 授权选项 | 是否授权用于知识问答(授权后可能被小艺对话使用) | 可选 |
关于授权说明:若勾选"授权知识库用于知识问答",意味着该知识库的内容可能会被小艺对话系统使用,以提升更广泛的问答体验。注意:如果勾选了授权,知识库的上架审核周期为1-3个工作日。 如果不勾选,仅用于自有智能体,审核周期更短。
步骤三:选择导入方式
进入知识库后,点击 “新建知识”,目前支持四种导入方式:

四种导入方式详解
1. 文档导入
文档导入是最常用的方式,适用于产品手册、技术文档、操作指南等文本类资料。
支持的文件格式:
| 文件格式 | 扩展名 | 说明 |
|---|---|---|
| Word文档 | .doc, .docx | 兼容老版本和新版本 |
| 纯文本 | .txt | UTF-8编码 |
| PDF文档 | 含扫描版和文字版 | |
| Excel表格 | .xls, .xlsx | 注意:只处理第一个sheet |
| 演示文稿 | .ppt, .pptx | 仅处理文字内容 |
| Markdown | .md | 保留标题层级结构 |
导入规则与限制:
- 单次最多导入 100个 文件
- 每个文件最多支持 200页 且不超过 150MB
- 对于多Sheet的Excel文件,如需导入多个Sheet,需拆分为多个文件分别导入
- 支持配置引用源信息,方便回答时追溯到原文
最佳实践:
1. 文档目录结构建议
/知识库根目录
├── 产品文档/
│ ├── 功能介绍.md
│ ├── 操作指南.docx
│ └── 常见问题.pdf
├── 技术规范/
│ ├── API文档.docx
│ └── 数据字典.xlsx
└── 培训资料/
└── 新手教程.pptx
2. 推荐使用 Markdown 格式,结构清晰、处理效率高
3. 单个文件控制在50页以内,提高检索精度
4. Excel文件只保留第一个Sheet的数据
2. 图片导入
适用于包含文字信息的图片、截图、思维导图等视觉资料。
支持的图片格式:
| 格式 | 扩展名 | 说明 |
|---|---|---|
| JPEG | .jpg, .jpeg | 最常用格式 |
| PNG | .png | 支持透明背景 |
| BMP | .bmp | 位图格式 |
| TIFF | .tiff | 高质量图片格式 |
导入规则与限制:
- 单次最多导入 100个 图片
- 每个图片最多不超过 20MB
- 支持图片智能标注功能,自动识别图片中的文字内容
- 可配置引用源信息
使用建议:图片中的文字应清晰可辨,避免模糊或倾斜的截图。建议使用PNG格式导出文档截图,文字识别准确率更高。
3. 数据源导入
数据源导入适用于需要通过API接口动态获取数据的场景,例如实时数据、数据库查询结果等。
配置要求:
- 推荐每条数据不超过 10MB
- 数据源参数信息需按照业务垂类Schema结构定义配置
- 支持JSON格式的数据交互
数据源Schema配置示例:
{
"schema": {
"type": "object",
"properties": {
"productId": {
"type": "string",
"description": "产品唯一标识"
},
"productName": {
"type": "string",
"description": "产品名称"
},
"category": {
"type": "string",
"description": "产品分类"
},
"description": {
"type": "string",
"description": "产品描述"
},
"specifications": {
"type": "object",
"properties": {
"price": {
"type": "number",
"description": "价格"
},
"stock": {
"type": "integer",
"description": "库存数量"
}
}
}
},
"required": ["productId", "productName"]
}
}
API 接口数据返回示例:
{
"data": [
{
"productId": "P10001",
"productName": "智能音箱",
"category": "智能家居",
"description": "支持语音控制、音乐播放、智能家居联动",
"specifications": {
"price": 299.00,
"stock": 1500
}
},
{
"productId": "P10002",
"productName": "智能摄像头",
"category": "安防监控",
"description": "1080P高清、夜视功能、移动侦测",
"specifications": {
"price": 199.00,
"stock": 800
}
}
]
}

数据源导入适用场景:
- 电商平台的商品信息库
- 企业内部的CRM/ERP数据
- 实时更新的行业数据库
- 需要频繁更新的配置信息
4. 爬虫导入
爬虫导入适用于需要从指定网站自动抓取信息并保持同步的场景。
配置参数:
| 配置项 | 说明 | 建议值 |
|---|---|---|
| 爬取地址 | 目标网站的起始URL | 指定具体页面路径 |
| 爬取周期 | 自动重新爬取的时间间隔 | 每天/每周/每月 |
| 页面深度 | 爬取链接的层级深度 | 建议1-2层 |

爬虫导入适用场景:
- 公司官网的产品说明页面
- 定期更新的公告/新闻页面
- 行业资讯和法规政策页面
- 维基类知识文档站点
注意事项:使用爬虫方式导入时,请确保拥有目标网站的合法抓取权限,遵守 robots.txt 协议,不得抓取需要登录或付费的内容。
知识库导入方式对比
| 导入方式 | 适用场景 | 更新方式 | 数据量限制 | 实时性 |
|---|---|---|---|---|
| 文档 | 静态文档、手册、规范 | 手动上传 | 100个文件/次,150MB/文件 | 低 |
| 图片 | 含文字的截图、图片 | 手动上传 | 100张/次,20MB/图 | 低 |
| 数据源 | 结构化数据、实时数据 | API自动同步 | 10MB/条 | 高 |
| 爬虫 | 网页信息、公开资料 | 定时爬取 | 取决于爬取配置 | 中 |
测试知识库
数据处理与校验
文档类型的知识导入后,需要等待数据校验完成才能进行下一步操作。系统会自动解析文档内容,进行分词、向量化等处理。
查看知识详情
可以点击知识名称查看每个知识条目的详细信息,包括:
- 文档中的段落内容
- 元数据信息
- 处理状态
- 引用来源
使用curl测试知识库API
如果你的数据源方式导入了知识库,可以通过curl验证API接口的正确性:
# 测试数据源API是否正常返回
curl -X GET "https://api.example.com/knowledge/products" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
# 测试单条数据查询
curl -X GET "https://api.example.com/knowledge/products/P10001" \
-H "Authorization: Bearer YOUR_API_KEY"
知识库数据格式验证
知识库处理完成后,返回的数据格式如下:
{
"knowledge_id": "kb_123456",
"status": "completed",
"total_segments": 256,
"processed_files": 12,
"failed_files": 0,
"created_at": "2026-04-20T08:00:00Z",
"summary": {
"total_chars": 150000,
"file_types": ["pdf", "docx", "md"],
"language": "zh-CN"
}
}
知识库文档覆盖率分析
为了确保知识库完整覆盖业务需求,可以使用以下Python脚本分析文档内容的覆盖率:
import os
def analyze_knowledge_coverage(doc_dir: str, topics: list) -> dict:
"""
分析知识库文档对业务主题的覆盖率
Args:
doc_dir: 文档目录路径
topics: 业务主题列表
Returns:
各主题的覆盖情况
"""
coverage = {}
for topic in topics:
matched_docs = []
for filename in os.listdir(doc_dir):
if topic.lower() in filename.lower():
matched_docs.append(filename)
coverage[topic] = {
"covered": len(matched_docs) > 0,
"matched_docs": matched_docs
}
return coverage
# 使用示例
doc_directory = "./knowledge_docs/"
business_topics = ["产品介绍", "使用指南", "常见问题", "保修政策"]
result = analyze_knowledge_coverage(doc_directory, business_topics)
for topic, info in result.items():
status = "✅ 已覆盖" if info["covered"] else "❌ 未覆盖"
print(f"{topic}: {status}")
if info["matched_docs"]:
print(f" 匹配文档: {', '.join(info['matched_docs'])}")
测试结果评估
# 知识库测试评估标准
test_results:
retrieval_accuracy: 0.92 # 检索准确率,目标 > 0.85
response_latency_ms: 350 # 响应延迟,目标 < 500ms
coverage_rate: 0.95 # 业务覆盖率,目标 > 0.90
no_recall_rate: 0.05 # 无召回率,目标 < 0.10
在智能体中测试问答效果
在知识库发布前,建议先创建一个测试智能体,将知识库绑定到智能体中进行问答测试:
# 测试知识库效果的简化流程
def test_knowledge_base():
"""
模拟知识库检索流程
实际环境中小艺平台会自动处理
"""
# 用户问题
user_query = "产品的保修政策是什么?"
# 1. 知识库检索相关段落
retrieved_segments = search_knowledge_base(user_query)
# 2. 大模型基于检索结果生成回答
answer = llm_generate(user_query, retrieved_segments)
return answer
def search_knowledge_base(query: str) -> list:
"""模拟知识库检索"""
# 实际平台中,系统会自动进行向量检索
# 这里仅展示检索的逻辑流程
print(f"检索查询: {query}")
print("匹配相关段落...")
print("返回 Top-K 相关段落")
return [
{"title": "保修政策", "content": "...", "score": 0.95},
{"title": "售后服务", "content": "...", "score": 0.88}
]
发布知识库
发布步骤
等待后端处理完成后,可以在知识列表页面点击 “上架” 按钮进行发布。
发布后的注意事项
- 授权知识库:如果勾选了授权选项,发版后审核周期为1-3个工作日
- 非授权知识库:通常审核更快,可立即在智能体中使用
- 版本管理:每次更新知识库内容后需要重新发布
- 影响范围:知识库更新后,使用该知识库的所有智能体都会同步更新
更新与维护
知识库不是一成不变的,需要定期维护和更新:
# 知识库维护检查清单
- [ ] 定期检查文档是否需要更新
- [ ] 删除过时的知识条目
- [ ] 新增最新的参考资料
- [ ] 验证知识库检索结果的准确性
- [ ] 监控用户常见问题是否覆盖全面
知识库使用限制与注意事项
数据安全建议
- 敏感信息处理:不要在知识库中包含密码、密钥、身份证号等敏感信息
- 版权合规:确保导入的文档拥有合法使用权
- 定期审查:定期检查知识库内容是否准确、合规
- 数据备份:重要知识库建议保留原始文档备份
性能优化建议
- 单个知识库文件数量控制在合理范围内
- 文档内容结构清晰,使用标题、列表等结构化格式
- 避免重复或冗余的信息
- 对于大规模知识库,按主题拆分为多个知识库
常见问题
Q: 知识库更新后,智能体多久能使用新内容?
A: 知识库重新发布后,通常需要等待数据处理完成后即可生效,处理时间取决于文档大小和数量。
Q: 多个智能体可以使用同一个知识库吗?
A: 是的,一个知识库可以被多个智能体同时引用,无需重复创建。
Q: 知识库中的文档支持哪些编码格式?
A: 建议使用UTF-8编码,确保中文内容正确解析。
总结
本文详细介绍了在小艺开放平台上创建知识库的完整流程:
- 知识库概述:理解知识库的作用和核心能力
- 创建流程:从进入管理页面到选择导入方式的完整步骤
- 四种导入方式:文档、图片、数据源、爬虫的详细配置和使用场景
- 测试与发布:数据处理、校验和发布的完整流程
- 维护与优化:知识库的更新策略和最佳实践
知识库是构建专业级智能体的基础设施。掌握了知识库的创建方法,你的智能体就能够基于专属领域知识提供精准、可靠的回答。下一篇文章将介绍如何在智能体中使用知识库,包括绑定配置、检索参数调优和查询改写等高级话题。
如果这篇文章帮助到你,欢迎点赞 👍、收藏 ⭐ 和关注 🎯!你的支持是我持续创作的动力!
相关资源
更多推荐



所有评论(0)