Install
openclaw skills install @william202404/knowledge-base-ingestion将外部知识库(文档/笔记/共享文件等)提取内容并灌入向量数据库的标准流程。支持 ChromaDB、Pinecone、Weaviate 等多种向量库后端。包括预扫描目录、识别并排除无效文件、执行分批灌入、验证索引质量、失败恢复。
openclaw skills install @william202404/knowledge-base-ingestion⚠️ 外部依赖声明:本 Skill 的核心脚本
scripts/knowledge-ingest.py不包含在本目录中。 它是一个独立的 Python 工具,需从项目仓库单独获取或根据本 Skill 描述的接口自行实现。 默认向量库后端为 ChromaDB,如需 Pinecone/Weaviate 等,设置环境变量VECTOR_DB。
通用知识库灌入流程,支持多种向量数据库后端
将外部知识库(文档/笔记/共享文件等)的内容灌入向量数据库。
触发场景:
不使用的场景:
预扫描 → 统计文件分布 → ⚠️ 识别无效文件 → 更新排除规则
↓
Checkpoint #1:向用户确认灌入范围
↓
执行灌入(分批处理,每批 ≤500 文件)
↓
Checkpoint #2:验证索引 → 检查数量和维度
↓
测试语义检索 → 抽查 3 条典型查询
↓
记录结果到当日 memory
| 后端 | 适用场景 | 配置方式 |
|---|---|---|
| ChromaDB | 本地部署、小规模(<100K docs) | VECTOR_DB=chroma |
| Pinecone | 云端、大规模、生产环境 | VECTOR_DB=pinecone + API Key |
| Weaviate | 云端/本地、中等规模 | VECTOR_DB=weaviate + endpoint |
| Qdrant | 本地/云端、高性能 | VECTOR_DB=qdrant + endpoint |
| Milvus | 大规模、分布式 | VECTOR_DB=milvus + endpoint |
默认使用 ChromaDB(本地免费),可通过环境变量切换。
| 资源 | 说明 |
|---|---|
| 灌入脚本 | scripts/knowledge-ingest.py — 主灌入脚本,支持分批/指定客户/状态恢复 |
| 知识库源目录 | 通过 KB_DIR 环境变量指定 |
| 向量库存储 | 根据 VECTOR_DB 配置自动选择 |
| 灌入状态文件 | 记录进度、错误、统计 |
目标: 了解文件分布,识别并排除无效文件。
# 1. 统计文件数量和类型分布
find $KB_DIR -type f | wc -l
find $KB_DIR -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn
# 2. 检查是否有超大文件(>1MB,可能灌入失败)
find $KB_DIR -type f -size +1M -name "*.md"
# 3. 查看目录结构
ls -la $KB_DIR
无效文件识别规则(自动排除):
| 文件类型 | 排除规则 | 原因 |
|---|---|---|
| 代码文件 | .js, .ts, .py, .java, .go, .css, .html | 无语义价值,污染检索结果 |
| 二进制文件 | .pdf, .docx, .xlsx, .png, .zip | 无法直接读取文本 |
| 系统文件 | .DS_Store, .git, .svn, Thumbs.db | 系统垃圾 |
| 构建产物 | node_modules/, dist/, build/, __pycache__/ | 自动生成,无需灌入 |
| 空/过短文件 | 文本 < 100 字符 | 内容不足,无索引价值 |
根据预扫描结果,如发现新的无效目录,更新脚本的排除规则。
在执行灌入前,向用户报告并确认:
📊 预扫描结果:
- 总文件数:X 个
- 有效文件:Y 个(.md 文本)
- 排除文件:Z 个(代码/二进制/系统)
- 向量库当前索引:M chunks
- 向量库后端:{VECTOR_DB}
请确认:是否开始灌入有效文件?(y/n)
目标: 将有效文件分批灌入向量数据库,每批 ≤500 文件。
# 方式 A:自动下一批(推荐,从断点续跑)
python3 scripts/knowledge-ingest.py
# 方式 B:指定单个客户(调试或重跑)
python3 scripts/knowledge-ingest.py --client <客户名>
# 方式 C:查看当前状态
python3 scripts/knowledge-ingest.py --status
# 方式 D:重置进度(从头重跑,慎用!)
python3 scripts/knowledge-ingest.py --reset
灌入脚本行为说明:
目标: 确保灌入结果正确,索引数量和数据完整。
# 1. 查看灌入状态和向量库统计
python3 scripts/knowledge-ingest.py --status
验证检查清单:
| 检查项 | 通过标准 | 失败处理 |
|---|---|---|
| 索引数量 | chunks > 0 | → 见「失败恢复流程」 |
| 向量维度 | 每个 chunk 有 embedding | → 见「失败恢复流程」 |
| 错误率 | errors 数组长度 < 总文件数的 5% | 超过阈值 → 检查具体错误,修复后重跑 |
| 客户覆盖 | 所有客户目录都有对应集合 | 缺少 → 手动指定客户重跑 |
目标: 端到端验证检索质量。
# 使用搜索脚本做语义检索测试(选取 3 条典型查询)
python3 scripts/kg_search.py "你的测试查询1" --top 5
python3 scripts/kg_search.py "你的测试查询2" --top 5
python3 scripts/kg_search.py "你的测试查询3" --top 5
检索质量评估标准:
| 等级 | 标准 |
|---|---|
| ✅ 优秀 | Top-3 结果与查询高度相关 |
| ⚠️ 可接受 | Top-5 中有 2-3 条相关 |
| ❌ 不合格 | Top-5 无明显相关结果 → 需排查 |
不合格排查步骤:
--status完成后向用户报告:
✅ 灌入完成报告:
- 新增灌入:X 个文件,Y 个 chunks
- 跳过(已存在):Z 个
- 错误:E 个(如有)
- 向量库总计:M chunks
- 检索测试:3/3 通过
- 状态文件:已更新
将灌入结果追加到 memory/daily/YYYY-MM-DD.md。
症状: 脚本报错,提示无法连接或创建集合。
恢复步骤:
# 0. 检查磁盘空间(本地向量库持续增长可能写满磁盘)
df -h
# 1. 检查向量库存储目录/连接是否正常
# 2. 如果目录损坏,备份后重建
# 3. 重置灌入状态(从头重跑)
python3 scripts/knowledge-ingest.py --reset
# 4. 重新执行灌入
python3 scripts/knowledge-ingest.py
症状: 脚本因内存不足/超时/网络断开中断。
恢复步骤:
# 1. 查看当前状态(脚本自动保存进度)
python3 scripts/knowledge-ingest.py --status
# 2. 直接重新运行(自动从断点续跑)
python3 scripts/knowledge-ingest.py
# 3. 如果卡在某个客户,跳过该客户
python3 scripts/knowledge-ingest.py --client <下一个客户>
症状: 检索返回不相关结果。
恢复步骤:
症状: chunks 写入成功但检索不到结果(可能 embedding 未正确生成)。
恢复步骤:
KB_DIR 指向不同的源目录VECTOR_DB 切换向量库后端| 日期 | 版本 | 变更说明 |
|---|---|---|
| 2026-04-23 | 1.0 | 初始版本,基础流程 |
| 2026-06-01 | 2.0 | Phase 2 优化:补充具体命令、失败恢复流程、用户确认检查点、检索质量评估标准 |
| 2026-07-04 | 3.0 | 通用化改造:去除 ChromaDB 硬依赖,支持多种向量数据库后端 |