一、什么时候适合用 BERT 而不是 LLM?
强烈建议用 BERT 的场景:
- ✅ 标签集合相对固定(10~1000 类)
- ✅ chunk 数量大(10 万~百万)
- ✅ 对一致性、稳定性要求高
- ✅ 需要离线批量处理
- ✅ 成本 / 延迟敏感
不太适合的场景:
- ❌ 标签经常变
- ❌ 标签难以明确枚举
- ❌ 需要开放式语义总结
👉 结论:
BERT 更适合"已知分类空间",LLM 更适合"未知语义空间"。
二、整体架构(推荐)
一个成熟的 BERT 打标流水线 通常长这样:
文档
→ chunk 切分
→ 文本清洗
→ BERT 分类 / 多标签预测
→ 后处理(阈值 / top-k / 规则)
→ 写入 metadata
→ RAG 检索 / rerank
三、选择什么 BERT 模型?
1️⃣ 中文场景推荐
| 场景 | 模型 |
|---|---|
| 通用中文 | bert-base-chinese |
| 技术 / 企业文档 | hfl/chinese-roberta-wwm-ext |
| 长文本 | longformer / roberta-wwm + sliding window |
| 轻量化 | macbert / albert |
📌 推荐起点:
chinese-roberta-wwm-ext(效果稳定)
四、分类任务建模方式
1️⃣ 单标签分类(Single-label)
text
每个 chunk ∈ 一个主题
模型头:
text
[CLS] → Linear → Softmax
适用:
- 严格的业务分类
- 层级标签中的某一层
2️⃣ 多标签分类(Multi-label)⭐️(RAG 最常见)
text
一个 chunk ∈ 多个标签
模型头:
text
[CLS] → Linear → Sigmoid
Loss:
text
Binary Cross Entropy (BCE)
输出示例:
json
{
"用户注册": 0.92,
"权限校验": 0.87,
"异常处理": 0.11
}
📌 实际用法:
- 设阈值(如 0.5)
- 或取 top-k(如 top-3)
五、训练数据怎么来?(关键)
方案一:人工标注(质量最高)
- 抽样 chunk
- 人工多标签标注
- 作为 黄金数据
方案二:LLM 生成伪标签(非常实用)
用 LLM 教 BERT
流程:
- 用 LLM 给 chunk 打标签
- 人工抽检 + 修正
- 用这些数据 fine-tune BERT
📌 实战中这是最常见路径。
方案三:弱监督 / 规则标签
- 关键词
- 正则
- 目录结构
适合作为:
- 预训练
- 数据增强
六、训练细节(非常重要)
输入长度问题
- BERT 最大 512 tokens
- chunk 建议:200~400 中文字符
长 chunk:
- 滑动窗口
- 取 max / mean pooling
类别不平衡
- 使用 class weight
- focal loss
- oversampling
评估指标(别只看 accuracy)
- Micro / Macro F1
- 每类 Precision / Recall
- 标签覆盖率
七、推理 & 后处理策略
1️⃣ 阈值策略
python
if score > 0.6:
add_tag(label)
2️⃣ Top-K 策略
python
select top 3 labels
3️⃣ 置信度打标(强烈推荐)
json
{
"tags": ["用户注册", "权限控制"],
"tag_scores": {
"用户注册": 0.92,
"权限控制": 0.81
}
}
八、如何与 RAG 检索结合?
1️⃣ 检索前过滤(Pre-filter)
text
query → 预测 query 标签 → 只检索相同标签 chunk
2️⃣ 检索后 rerank
text
final_score =
α * embedding_score
+ β * tag_overlap_score
3️⃣ Hybrid Routing(进阶)
- 问题是"操作类" → 优先 how-to 标签
- 问题是"概念类" → 优先定义标签
九、BERT vs LLM 打标对比总结
| 维度 | BERT | LLM |
|---|---|---|
| 成本 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 延迟 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 一致性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 灵活性 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 冷启动 | ⭐⭐ | ⭐⭐⭐⭐ |
👉 最佳实践:
LLM 负责探索 & 造标签,BERT 负责规模化 & 稳定执行
十、一个完整示例 Schema
json
{
"chunk_id": "...",
"tags": ["用户注册", "权限控制"],
"tag_scores": {
"用户注册": 0.92,
"权限控制": 0.81
},
"model": "roberta-wwm-multilabel-v1"
}
十一、总结
- BERT 是 RAG 打标体系中的"工业级发动机"
- 适合稳定标签、多标签、大规模
- 与 LLM 结合能形成完整闭环
- 打标质量直接决定 RAG 上限