Embedding 高级开发
本文介绍批量处理、缓存、多模型、评估与生产优化。
批量处理
# sentence-transformers 支持批量,提高吞吐
embeddings = model.encode(texts, batch_size=32, show_progress_bar=True)
缓存
对不变文档的 Embedding 结果做缓存,避免重复计算:
- 写入向量库前检查是否已存在
- 使用 Redis 或本地文件缓存
- 文档更新时仅重算变更部分
多模型与多维度
- 切换模型时需重建索引(维度可能不同)
- 多语言场景可选用 M3、E5 等多语言模型
- 与向量库选型保持一致
评估指标
- MTEB:通用 Embedding 评测基准
- 自定义:用业务检索准确率、召回率评估
- A/B 测试:对比不同模型在 RAG 中的表现
生产实践
- GPU 加速:有 GPU 时显著加速
- 批处理:合并请求减少调用次数
- 超时与重试:API 方式需处理限流与失败
- 版本管理:模型升级时考虑向后兼容
与 RAG 的闭环
Embedding 是 RAG 的关键环节,结合 向量数据库、LlamaIndex 或 LangChain 可构建完整检索增强流程。