Switch default knowledge collection back to biz (drop+recreate on rebuild), replace PowerShell rebuild runner with Python, skip README.md imports, and merge duplicate rag keys in application.yml.
2.6 KiB
2.6 KiB
重建 hybrid 知识库(dense + BM25)
面向当前 knowledge_base/ 目录文档,清空并重建配置中的 Milvus collection(默认 biz)。
前提
- 应用已启动(默认
http://localhost:9900) MILVUS_TOKEN等连接配置可用application.yml已配置:
milvus:
collection: biz
retrieval:
search:
mode: hybrid
knowledge:
base-path: knowledge_base/
一键脚本(Python)
在项目根目录执行:
python scripts/rebuild_hybrid_knowledge.py --confirm REBUILD
指定服务地址:
python scripts/rebuild_hybrid_knowledge.py --base-url http://127.0.0.1:9900 --confirm REBUILD
跳过前后 stats:
python scripts/rebuild_hybrid_knowledge.py --confirm REBUILD --skip-stats
依赖:Python 3.9+ 标准库即可(无需 pip 包)。
脚本会做什么
| 步骤 | 动作 |
|---|---|
| 1 | 检查 /milvus/health |
| 2 | 打印重建前 /api/knowledge/stats |
| 3 | POST /api/knowledge/rebuild-hybrid?confirm=REBUILD |
| 4 | 打印重建后 stats |
服务端 rebuild-hybrid 内部顺序:
- Drop + recreate Milvus collection(
milvus.collection,默认biz)- 原有向量数据会被删除
- 按 dense + BM25 schema 重建
- 清空 MySQL
api_document - 清空 内存 L0 索引
- 扫描
knowledge_base/**/*.md(跳过README.md)并 force 全量导入- 写 MySQL 元数据
- 切片
- 写 dense 向量 + BM25
search_text - 更新 L0
不会做什么
- 不会动
knowledge_base/源文件 - 不会在未传
--confirm REBUILD时执行
手动 curl 等价命令
# 重建(危险:会清空 biz collection + api_document)
curl -X POST "http://localhost:9900/api/knowledge/rebuild-hybrid?confirm=REBUILD"
# 仅强制导入(不 drop collection)
curl -X POST "http://localhost:9900/api/knowledge/init?force=true"
# 统计
curl "http://localhost:9900/api/knowledge/stats"
成功判据
响应中大致应有:
{
"success": true,
"collection": "biz",
"inserted": 15,
"failed": 0,
"milvus": { "recreated": true, "loaded": true }
}
然后用一条知识库里真实存在的术语/故障词走 lookup_knowledge 或 chat 验证 hybrid 命中。
失败排查
| 现象 | 可能原因 |
|---|---|
| connect / token 错误 | MILVUS_TOKEN、host、database |
| BM25 / analyzer 相关报错 | 云端 Milvus/Zilliz 版本不支持 BM25 Function |
| inserted=0 | knowledge_base 路径不对,或 md 缺 frontmatter/title |
| failed>0 | 看响应 details 与应用日志 |