跳到主要内容

Embedding 高级开发

本文介绍批量处理、缓存、多模型、评估与生产优化。

批量处理

# sentence-transformers 支持批量,提高吞吐
embeddings = model.encode(texts, batch_size=32, show_progress_bar=True)

缓存

对不变文档的 Embedding 结果做缓存,避免重复计算:

  • 写入向量库前检查是否已存在
  • 使用 Redis 或本地文件缓存
  • 文档更新时仅重算变更部分

多模型与多维度

  • 切换模型时需重建索引(维度可能不同)
  • 多语言场景可选用 M3、E5 等多语言模型
  • 与向量库选型保持一致

评估指标

  • MTEB:通用 Embedding 评测基准
  • 自定义:用业务检索准确率、召回率评估
  • A/B 测试:对比不同模型在 RAG 中的表现

生产实践

  1. GPU 加速:有 GPU 时显著加速
  2. 批处理:合并请求减少调用次数
  3. 超时与重试:API 方式需处理限流与失败
  4. 版本管理:模型升级时考虑向后兼容

与 RAG 的闭环

Embedding 是 RAG 的关键环节,结合 向量数据库LlamaIndexLangChain 可构建完整检索增强流程。