Skip to main content

测评数据初始化

上一篇讲了评估集的 schema——150 条样本,12 个字段,每个字段为什么存在、被谁消费。评估集设计好了,但 Ragent 还是空的。

评估集里标了 S1-01 应该召回 GUIDE_PHONE_002,但如果 Ragent 的知识库里压根没有这篇文档,评测就是空转——检索指标算出来全是 0,不是系统差,是根本没东西可检索。意图树也一样,评估集标了 S1_选购推荐,但 Ragent 没建这个意图节点,意图识别就无从谈起。

这篇讲的是评测的基建:怎么用三个 Python 脚本把 Ragent 从空白状态搭到可评测状态——有知识库、有文档、有意图树。

初始化总览:从空白到可评测

执行初始化之前,需要先安装 Python 环境,版本不得低于 3.11,参考 廖雪峰老师 Python 安装教程

1. 三步数据流

初始化分三步,每步依赖上一步的产物,必须按顺序执行:

三步跑完后,Ragent 就有了 4 个知识库、115 篇已分块的文档、30 个意图节点,处于可评测状态。

2. 运行前配置

跑之前需要配三个环境变量:

export RAGENT_BASE_URL=http://localhost:9090/api/ragent
export RAGENT_USERNAME=admin
export RAGENT_PASSWORD=admin

所有脚本通过 POST /auth/login 获取 token,后续请求带 Authorization header 鉴权。

初始化第一步:建 4 个知识库

1. 为什么按文档类型建库

第一个问题:为什么是 4 个知识库而不是 22 个?

如果按意图切,每个二级意图一个知识库,就要建 22 个 KB。管理成本高不说,很多意图其实共享同一批文档——S14 售后政策和 S15 退换货查的都是政策类文档,S8 操作指引和 S9 配网连接查的都是使用手册。按意图切会导致大量重复灌入。

所以按文档类型切成 4 个:

KB Key名称文档数覆盖场景
product比特严选-商品库65商品详情、选购指南、对比评测
manual比特严选-使用手册库25操作手册、配网指南、APP 指南
policy比特严选-政策库15保修、退换货、物流、发票会员政策
faq比特严选-FAQ库10故障排查、错误码手册

一个意图通过意图树关联到对应的 KB(下一步讲),简洁且灵活。

2. 运行脚本与产物

运行命令:

python eval/rag/init/create_kbs.py

脚本调用 POST /knowledge-base 接口逐个创建,产出 kb_ids.json——记录每个 KB 的 ragent snowflake ID:

{
"product": {
"kb_id": "2058461026313089024",
"name": "比特严选-商品库",
"collection_name": "kb-product",
"embedding_model": "qwen-emb-8b"
}
}

注意:这个脚本没有幂等性——跑两次会建两套重复的 KB。这是有意为之,知识库创建是一次性操作,不值得为幂等增加复杂度。如果需要重建,先用 reset_kbs.py 清理再跑。

可以看到 embedding_model 的值是 qwen-emb-8b,这个也是 Ragent 项目默认的向量模型。如果调整了 Ragent,记得这里也要调整。

初始化第二步:灌入 115 篇文档

1. 文档怎么组织

解锁付费内容,👉 戳