Skip to content

重排序角色

重排序角色专门用于对搜索结果进行重新排序,提高检索系统的准确性和相关性。

配置

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 流程

  1. 查询嵌入: 将用户查询转换为向量
  2. 向量检索: 从向量数据库检索候选文档
  3. 重排序: 使用重排序模型对结果排序
  4. 生成回答: 基于排序后的结果生成答案

示例配置

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 个结果的召回率

故障排除

常见问题

  1. 排序效果不佳

    • 增加候选文档数量
    • 检查查询质量
    • 尝试不同的重排序模型
  2. 性能问题

    • 减少候选文档数量
    • 使用批量处理
    • 实施缓存策略
  3. 成本过高

    • 优化候选文档数量
    • 仅对关键查询使用
    • 设置使用限制

与嵌入的对比

嵌入模型

  • 将文本转换为向量
  • 用于快速检索
  • 成本较低
  • 精度中等

重排序模型

  • 评估查询-文档相关性
  • 用于精细排序
  • 成本较高
  • 精度更高

组合使用

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"

通过合理配置重排序角色,您可以显著提升检索系统的准确性和用户体验。