使用 BERT 系列模型实现 RAG Chunk 分类打标

一、什么时候适合用 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

流程:

  1. 用 LLM 给 chunk 打标签
  2. 人工抽检 + 修正
  3. 用这些数据 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 上限
相关推荐
砍材农夫3 分钟前
spring-ai 第九模型介绍-聊天记录
人工智能
小码吃趴菜3 分钟前
面试小论文准备
人工智能
最贪吃的虎4 分钟前
【每日一问系列】LangChain中支持几种Model?
人工智能
AGV算法笔记4 分钟前
二维码目标检测论文精读:EA-OBB 如何用轻量化旋转检测提升 QR 码定位效果?
人工智能·目标检测·目标跟踪
nap-joker5 分钟前
基于大语言模型的大规模人群中的生物年龄预测
人工智能·语言模型·自然语言处理·生物年龄·器官特异的生物年龄
Omics Pro12 分钟前
上海AI Lab+复旦大学:双轨协同实现自动化虚拟细胞建模
运维·人工智能·语言模型·自然语言处理·数据挖掘·数据分析·自动化
星爷AG I14 分钟前
19-2 符号学(AGI基础理论)
人工智能·agi
happyprince22 分钟前
2026年04月12日全球AI前沿动态
人工智能
xixixi7777728 分钟前
Token 经济引爆 AI 产业加速:从百模大战到百虾大战,谁在定义 2026 的中国 AI?
大数据·人工智能·机器学习·ai·大模型·算力·通信
爱上珍珠的贝壳29 分钟前
ESP32-S3-CAM:豆包语音识别文字后控制小车(一)——注册豆包火山引擎开发者接口
人工智能·语音识别·智能硬件·火山引擎·esp32-s3·豆包语音