嵌入角色
嵌入角色专门用于文本向量化和语义搜索,将文本转换为数值向量以支持各种 AI 应用。
配置
在 config.yaml 或 ~/.bytebuddy/config.yaml 中配置嵌入角色:
yaml
models:
- name: "embedding-model"
provider: "openai"
model: "text-embedding-3-large"
apiKey: "${OPENAI_API_KEY}"
roles: ["embed"]1
2
3
4
5
6
2
3
4
5
6
核心功能
文本向量化
- 语义编码: 将文本转换为语义向量
- 相似度计算: 计算文本间的相似度
- 聚类分析: 对文本进行分组
- 语义搜索: 基于语义的检索
应用场景
- 代码搜索: 语义化代码检索
- 文档检索: 智能文档查找
- RAG 系统: 检索增强生成
- 推荐系统: 内容推荐
嵌入模型配置
OpenAI 嵌入
yaml
models:
- name: "openai-embed"
provider: "openai"
model: "text-embedding-3-large"
apiKey: "${OPENAI_API_KEY}"
roles: ["embed"]1
2
3
4
5
6
2
3
4
5
6
小型嵌入模型
yaml
models:
- name: "openai-embed-small"
provider: "openai"
model: "text-embedding-3-small"
apiKey: "${OPENAI_API_KEY}"
roles: ["embed"]1
2
3
4
5
6
2
3
4
5
6
Cohere 嵌入
yaml
models:
- name: "cohere-embed"
provider: "cohere"
model: "embed-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["embed"]1
2
3
4
5
6
2
3
4
5
6
多语言嵌入
yaml
models:
- name: "multilingual-embed"
provider: "cohere"
model: "embed-multilingual-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["embed"]1
2
3
4
5
6
2
3
4
5
6
使用场景配置
代码语义搜索
yaml
models:
- name: "code-embed"
provider: "openai"
model: "text-embedding-3-large"
apiKey: "${OPENAI_API_KEY}"
roles: ["embed"]1
2
3
4
5
6
2
3
4
5
6
文档检索
yaml
models:
- name: "doc-embed"
provider: "cohere"
model: "embed-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["embed"]1
2
3
4
5
6
2
3
4
5
6
RAG 应用
yaml
models:
- name: "rag-embed"
provider: "openai"
model: "text-embedding-3-large"
apiKey: "${OPENAI_API_KEY}"
roles: ["embed"]1
2
3
4
5
6
2
3
4
5
6
多模型配置
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"]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
向量维度
不同模型提供不同的向量维度:
- 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: 20001
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
性能优化
1. 批量嵌入
- 一次处理多个文本
- 减少 API 调用次数
- 提高吞吐量
2. 缓存策略
- 缓存常用文本的向量
- 避免重复计算
- 节省成本
3. 分块处理
- 对长文本进行分块
- 合理设置分块大小
- 保持语义完整性
故障排除
常见问题
维度不匹配
- 确保使用相同的嵌入模型
- 检查向量维度设置
- 重新生成向量
性能问题
- 使用批量处理
- 优化分块策略
- 考虑使用更小的模型
成本过高
- 使用 small 模型
- 实施缓存策略
- 优化文本长度
环境变量配置
bash
# ~/.bashrc 或 ~/.zshrc
export OPENAI_API_KEY="your-openai-api-key"
export COHERE_API_KEY="your-cohere-api-key"1
2
3
2
3
通过合理配置嵌入角色,您可以构建强大的语义搜索和 RAG 系统。