Skip to content

嵌入角色

嵌入角色专门用于文本向量化和语义搜索,将文本转换为数值向量以支持各种 AI 应用。

配置

config.yaml~/.bytebuddy/config.yaml 中配置嵌入角色:

yaml
models:
  - name: "embedding-model"
    provider: "openai"
    model: "text-embedding-3-large"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["embed"]

核心功能

文本向量化

  • 语义编码: 将文本转换为语义向量
  • 相似度计算: 计算文本间的相似度
  • 聚类分析: 对文本进行分组
  • 语义搜索: 基于语义的检索

应用场景

  • 代码搜索: 语义化代码检索
  • 文档检索: 智能文档查找
  • RAG 系统: 检索增强生成
  • 推荐系统: 内容推荐

嵌入模型配置

OpenAI 嵌入

yaml
models:
  - name: "openai-embed"
    provider: "openai"
    model: "text-embedding-3-large"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["embed"]

小型嵌入模型

yaml
models:
  - name: "openai-embed-small"
    provider: "openai"
    model: "text-embedding-3-small"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["embed"]

Cohere 嵌入

yaml
models:
  - name: "cohere-embed"
    provider: "cohere"
    model: "embed-english-v3.0"
    apiKey: "${COHERE_API_KEY}"
    roles: ["embed"]

多语言嵌入

yaml
models:
  - name: "multilingual-embed"
    provider: "cohere"
    model: "embed-multilingual-v3.0"
    apiKey: "${COHERE_API_KEY}"
    roles: ["embed"]

使用场景配置

代码语义搜索

yaml
models:
  - name: "code-embed"
    provider: "openai"
    model: "text-embedding-3-large"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["embed"]

文档检索

yaml
models:
  - name: "doc-embed"
    provider: "cohere"
    model: "embed-english-v3.0"
    apiKey: "${COHERE_API_KEY}"
    roles: ["embed"]

RAG 应用

yaml
models:
  - name: "rag-embed"
    provider: "openai"
    model: "text-embedding-3-large"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["embed"]

多模型配置

yaml
models:
  - name: "high-quality-embed"
    provider: "openai"
    model: "text-embedding-3-large"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["embed"]

  - name: "fast-embed"
    provider: "openai"
    model: "text-embedding-3-small"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["embed"]

  - name: "multilingual-embed"
    provider: "cohere"
    model: "embed-multilingual-v3.0"
    apiKey: "${COHERE_API_KEY}"
    roles: ["embed"]

向量维度

不同模型提供不同的向量维度:

  • text-embedding-3-large: 3072 维
  • text-embedding-3-small: 1536 维
  • text-embedding-ada-002: 1536 维
  • embed-english-v3.0: 1024 维

最佳实践

1. 模型选择

  • 高质量: 使用 large 模型
  • 性能优先: 使用 small 模型
  • 多语言: 使用多语言模型
  • 成本敏感: 使用小型模型

2. 批量处理

  • 批量处理文本以提高效率
  • 合理设置批次大小
  • 处理失败情况

3. 向量存储

  • 使用专业的向量数据库
  • 索引优化
  • 定期更新向量

4. 相似度计算

  • 使用余弦相似度
  • 设置合适的阈值
  • 考虑归一化

集成示例

向量数据库集成

常用向量数据库:

  • Pinecone: 托管向量数据库
  • Weaviate: 开源向量搜索引擎
  • Milvus: 高性能向量数据库
  • ChromaDB: 轻量级向量存储

RAG 系统配置

yaml
models:
  # 嵌入模型
  - name: "embed-model"
    provider: "openai"
    model: "text-embedding-3-large"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["embed"]

  # 生成模型
  - name: "chat-model"
    provider: "openai"
    model: "gpt-4"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["chat"]
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 2000

性能优化

1. 批量嵌入

  • 一次处理多个文本
  • 减少 API 调用次数
  • 提高吞吐量

2. 缓存策略

  • 缓存常用文本的向量
  • 避免重复计算
  • 节省成本

3. 分块处理

  • 对长文本进行分块
  • 合理设置分块大小
  • 保持语义完整性

故障排除

常见问题

  1. 维度不匹配

    • 确保使用相同的嵌入模型
    • 检查向量维度设置
    • 重新生成向量
  2. 性能问题

    • 使用批量处理
    • 优化分块策略
    • 考虑使用更小的模型
  3. 成本过高

    • 使用 small 模型
    • 实施缓存策略
    • 优化文本长度

环境变量配置

bash
# ~/.bashrc 或 ~/.zshrc
export OPENAI_API_KEY="your-openai-api-key"
export COHERE_API_KEY="your-cohere-api-key"

通过合理配置嵌入角色,您可以构建强大的语义搜索和 RAG 系统。