Lesson 05 · 通用 embedding 用于领域 → 命中率 55-70% (生产不可用)¶
Problem¶
律所 / 医院 / 工业 RAG 项目直接用:
- OpenAI text-embedding-3-small/large
- 原版 bge-large-zh / bge-large-en
结果: - 用户问"民法典第 396 条", 检索出 5 条不相关条款 - 医生查"厄贝沙坦氢氯噻嗪", 排名前 5 里都不见药名精准匹配 - 工人问"零件号 XYZ-1234", 相似性打分把不相关部件排前面 - 命中率 (hit@5) 只有 55-70%, 生产用户"用两次就不用了"
Root Cause¶
通用 embedding 训练语料没接触过你的领域术语.
- 通用语料以互联网文本为主 · 法条编号 / 药名拉丁 / 工艺代码 / 零件号占比极低
- 结果对领域语义邻居的判断很弱
- 领域越窄, 命中率越低
Fix¶
5-10k 领域对儿微调 bge-large-zh (或 m3e / bge-m3):
- 数据: 5,000-10,000 对
(query, positive_passage)+ hard negatives - 底座: bge-large-zh (中文) / bge-large-en (英文) / m3e (跨语言) / bge-m3 (多语言 + 长上下文)
- 训练: 3-5 epoch, ~2h on 1×A100 或 4×4090
- 验证: 抽 300 条真实用户 query, hit@5 > 90% 才上生产
- 检索前置 rerank: 一定加 BGE-reranker, 命中率再拉 5-10%
How to Avoid¶
- POC 阶段就跑领域数据评估, 不要"看着 demo 好"直接上
- 领域 5-10k 对儿通过标注 + 用户实际 query 挖掘获取
- 每个领域项目都做 hit@5 基线测试 (通用 vs 微调)
- 数据脱敏: 微调数据要合规脱敏 · 微调模型不出内网
Related cases¶
- Case 04 · 律所三库合一 RAG — bge-large 微调 · 引用准确率 >95%
- Case 01 · 三甲医院 AW36-72B — 医疗领域微调
- Case 06 · 医疗器械支持 RAG — 产品/工单/售后三源微调
Related how-tos¶
避坑成本估算: 通用 embedding 上线 6 个月才发现命中率不达标 = 生产用户已经流失, 重启项目 = 20-40 万返工.
下一步: 30 min 领域 RAG 微调对齐