重排序角色
重排序角色专门用于对搜索结果进行重新排序,提高检索系统的准确性和相关性。
配置
在 config.yaml 或 ~/.bytebuddy/config.yaml 中配置重排序角色:
yaml
models:
- name: "rerank-model"
provider: "cohere"
model: "rerank-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]核心功能
结果重排序
- 相关性评分: 计算查询和文档的相关性
- 智能排序: 基于语义理解重新排序
- 精准匹配: 提升最相关结果的排名
- 质量优化: 改善搜索结果质量
应用场景
- 语义搜索: 提升搜索准确性
- RAG 系统: 优化检索质量
- 推荐系统: 改进推荐排序
- 问答系统: 提高答案相关性
重排序模型配置
Cohere 重排序
yaml
models:
- name: "cohere-rerank"
provider: "cohere"
model: "rerank-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]多语言重排序
yaml
models:
- name: "multilingual-rerank"
provider: "cohere"
model: "rerank-multilingual-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]专用重排序
yaml
models:
- name: "specialized-rerank"
provider: "cohere"
model: "rerank-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]使用场景配置
代码搜索重排序
yaml
models:
- name: "code-rerank"
provider: "cohere"
model: "rerank-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]文档检索重排序
yaml
models:
- name: "doc-rerank"
provider: "cohere"
model: "rerank-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]RAG 系统重排序
yaml
models:
- name: "rag-rerank"
provider: "cohere"
model: "rerank-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]完整 RAG 配置示例
yaml
models:
# 嵌入模型
- name: "embed-model"
provider: "openai"
model: "text-embedding-3-large"
apiKey: "${OPENAI_API_KEY}"
roles: ["embed"]
# 重排序模型
- name: "rerank-model"
provider: "cohere"
model: "rerank-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]
# 生成模型
- name: "chat-model"
provider: "openai"
model: "gpt-4"
apiKey: "${OPENAI_API_KEY}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 2000工作流程
典型 RAG 流程
- 查询嵌入: 将用户查询转换为向量
- 向量检索: 从向量数据库检索候选文档
- 重排序: 使用重排序模型对结果排序
- 生成回答: 基于排序后的结果生成答案
示例配置
yaml
models:
# 步骤 1 & 2: 嵌入和检索
- name: "retrieval-embed"
provider: "openai"
model: "text-embedding-3-large"
apiKey: "${OPENAI_API_KEY}"
roles: ["embed"]
# 步骤 3: 重排序
- name: "result-rerank"
provider: "cohere"
model: "rerank-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]
# 步骤 4: 生成
- name: "answer-generator"
provider: "anthropic"
model: "claude-3-sonnet"
apiKey: "${ANTHROPIC_API_KEY}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.5
maxTokens: 2048最佳实践
1. 候选文档数量
- 初始检索: 20-100 个候选文档
- 重排序后: 选择 top 3-10 个结果
- 平衡: 质量和性能
2. 重排序策略
- 在向量检索后使用
- 处理语义相似但不相关的结果
- 提升精确匹配的排名
3. 性能优化
- 限制候选文档数量
- 使用批量处理
- 缓存重排序结果
4. 质量控制
- 设置相关性阈值
- 监控重排序效果
- A/B 测试不同策略
评估指标
相关性指标
- MRR (Mean Reciprocal Rank): 平均倒数排名
- NDCG (Normalized Discounted Cumulative Gain): 归一化折损累积增益
- Precision@K: 前 K 个结果的精确度
- Recall@K: 前 K 个结果的召回率
故障排除
常见问题
排序效果不佳
- 增加候选文档数量
- 检查查询质量
- 尝试不同的重排序模型
性能问题
- 减少候选文档数量
- 使用批量处理
- 实施缓存策略
成本过高
- 优化候选文档数量
- 仅对关键查询使用
- 设置使用限制
与嵌入的对比
嵌入模型
- 将文本转换为向量
- 用于快速检索
- 成本较低
- 精度中等
重排序模型
- 评估查询-文档相关性
- 用于精细排序
- 成本较高
- 精度更高
组合使用
yaml
models:
# 第一阶段:快速检索(嵌入)
- name: "fast-retrieval"
provider: "openai"
model: "text-embedding-3-small"
apiKey: "${OPENAI_API_KEY}"
roles: ["embed"]
# 第二阶段:精确排序(重排序)
- name: "accurate-ranking"
provider: "cohere"
model: "rerank-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]环境变量配置
bash
# ~/.bashrc 或 ~/.zshrc
export COHERE_API_KEY="your-cohere-api-key"
export OPENAI_API_KEY="your-openai-api-key"通过合理配置重排序角色,您可以显著提升检索系统的准确性和用户体验。