🔮 OpenClaw Embedding 模型选择指南

从 OpenAI 到开源,找到最适合你的向量嵌入方案

Embedding 向量 RAG 语义搜索

📖 什么是 Embedding?

凌晨3点17分,我盯着屏幕上那串数字发呆。1536个浮点数,密密麻麻像某种密码。这串数字,就是"人工智能"四个字在AI眼中的样子。

Embedding 把文字变成向量,把语义压缩成坐标。有了它,"猫"和"狗"的距离,比"猫"和"汽车"近得多——因为AI懂了。

核心作用:

  • 语义搜索 - 搜"如何让AI更聪明"能找到"提升模型能力的方法"
  • 相似度计算 - 自动判断两段文字有多像
  • 聚类分析 - 把相似的内容自动归类
  • RAG 基础 - 让检索有据可依

🏆 主流模型对比

🟢 OpenAI text-embedding-3-small

性价比之王,大多数场景的首选。

维度
1536
价格
$0.02/1M tokens
MTEB 得分
62.3
推荐场景
通用/生产

🔵 OpenAI text-embedding-3-large

精度需求高时选择,贵但准。

维度
3072
价格
$0.13/1M tokens
MTEB 得分
64.6
推荐场景
高精度

🟠 Cohere embed-v3

多语言支持最好,中文场景推荐。

维度
1024
价格
$0.10/1M tokens
MTEB 得分
64.5
推荐场景
中文/多语言

🟣 Google text-embedding-004

Vertex AI 原生,Google 生态首选。

维度
768
价格
$0.03/1M tokens
MTEB 得分
63.7
推荐场景
GCP 生态

⚫ 开源方案:BGE / MTEB Top

免费但需要自己部署,数据隐私最好。

维度
768-1024
价格
免费
MTEB 得分
60-65
推荐场景
自建/隐私

⚡ OpenClaw 集成示例

1. 配置 Embedding Provider

# ~/.openclaw/config.yaml
embedding:
  provider: openai  # openai | cohere | google | local
  model: text-embedding-3-small
  
  # 备选配置
  fallback:
    provider: local
    model: sentence-transformers/all-MiniLM-L6-v2

  # 缓存配置
  cache:
    enabled: true
    ttl: 86400  # 24小时
    maxSize: 10000

2. 使用 Embedding Skill

# Skills 配置
skills:
  - id: embedding-service
    name: 向量嵌入服务
    config:
      # OpenAI 配置
      provider: openai
      model: text-embedding-3-small
      apiKey: ${OPENAI_API_KEY}
      
      # 或使用本地模型
      # provider: local
      # model: BAAI/bge-large-zh-v1.5
      
      # 批处理优化
      batchSize: 100
      maxConcurrency: 5

3. 代码调用示例

// 生成单个文本的 embedding
const embedding = await agent.skills.embedding.embed({
  text: "OpenClaw 是一个强大的 Agent 框架"
});

console.log(embedding); // [0.023, -0.015, 0.089, ...] 1536维

// 批量生成
const embeddings = await agent.skills.embedding.embedBatch({
  texts: [
    "人工智能正在改变世界",
    "机器学习是AI的核心技术",
    "今天天气真不错"
  ]
});

// 相似度计算
const similarity = agent.skills.embedding.cosineSimilarity(
  embeddings[0],
  embeddings[1]
);
// 0.82 - 前两句相似度高
// 0.12 - 和第三句相似度低

💡 选择建议

🎯 按场景选模型

场景 推荐模型 理由
快速原型 / MVP text-embedding-3-small 便宜、快、够用
中文内容为主 Cohere embed-v3 多语言优化最好
高精度检索 text-embedding-3-large 维度高、信息保留多
数据隐私敏感 BGE-large-zh (本地) 数据不出服务器
成本极致压缩 all-MiniLM-L6-v2 (本地) 免费、速度快
大规模生产 text-embedding-3-small + 缓存 平衡成本和性能

⚠️ 常见踩坑

  1. 维度不匹配 - 换模型时要重建向量索引,不能混用
  2. 截断问题 - 超长文本会被截断,重要信息可能丢失
  3. 未做归一化 - 某些场景需要 L2 归一化
  4. 语言不匹配 - 英文模型处理中文效果差
  5. 缓存缺失 - 相同文本重复计算浪费钱

🚀 性能优化技巧

1. 缓存策略

# 配置 Redis 缓存
embedding:
  cache:
    type: redis
    host: localhost
    port: 6379
    ttl: 604800  # 7天
    keyPrefix: "emb:"

2. 批量处理

// 避免:逐个调用
for (const text of texts) {
  await embed(text);  // 慢!
}

// 推荐:批量调用
await embedBatch(texts);  // 快!

3. 维度压缩

# OpenAI 支持 Matryoshka 嵌套
embedding:
  model: text-embedding-3-small
  dimensions: 512  # 从1536压缩到512
  # 精度损失约 3-5%,但存储减半

🔗 相关资源