Blame view

reranker/README.md 4.27 KB
42e3aea6   tangwang   tidy
1
2
  # Reranker 模块
  
0e66a315   tangwang   docs
3
  **请求示例**`docs/QUICKSTART.md` §3.5。扩展规范见 `docs/DEVELOPER_GUIDE.md` §7。
42e3aea6   tangwang   tidy
4
5
  
  ---
d90e7428   tangwang   补充重排
6
  
80955935   tangwang   Reranker 补充 qwen3...
7
  Reranker 服务提供统一的 `/rerank` API,支持可插拔后端(BGE、Qwen3-vLLM、Qwen3-Transformers)。调用方通过 HTTP 访问,不关心具体后端。
701ae503   tangwang   docs
8
9
  
  **特性**
80955935   tangwang   Reranker 补充 qwen3...
10
  - 多后端:`qwen3_vllm`(默认,Qwen3-Reranker-0.6B + vLLM)、`qwen3_transformers`(纯 Transformers,无需 vLLM)、`bge`(兼容保留)
701ae503   tangwang   docs
11
12
13
14
15
16
17
18
19
  - 统一配置:`config/config.yaml` → `services.rerank.backend` / `services.rerank.backends.<name>`
  - 文档去重、分数与输入顺序一致、FP16/GPU 支持(视后端)
  
  ## 目录与入口
  - `reranker/server.py`:FastAPI 服务,启动时按配置加载一个后端
  - `reranker/backends/`:后端实现与工厂
    - `backends/__init__.py`:`get_rerank_backend(name, config)`
    - `backends/bge.py`:BGE 后端
    - `backends/qwen3_vllm.py`:Qwen3-Reranker-0.6B + vLLM 后端
80955935   tangwang   Reranker 补充 qwen3...
20
    - `backends/qwen3_transformers.py`:Qwen3-Reranker-0.6B 纯 Transformers 后端(官方 Usage 方式)
701ae503   tangwang   docs
21
22
23
24
25
  - `reranker/bge_reranker.py`:BGE 核心推理(被 bge 后端封装)
  - `reranker/config.py`:服务端口、MAX_DOCS、NORMALIZE 等(后端参数在 config.yaml)
  
  ## 依赖
  - 通用:`torch`、`modelscope`、`fastapi`、`uvicorn`(见项目 `requirements.txt` / `requirements_ml.txt`
80955935   tangwang   Reranker 补充 qwen3...
26
27
  - **Qwen3-vLLM 后端**`vllm>=0.8.5`、`transformers>=4.51.0`(仅当使用 `backend: qwen3_vllm` 时需 vLLM)
  - **Qwen3-Transformers 后端**`transformers>=4.51.0`、`torch`(无需 vLLM,适合 CPU 或小显存)
701ae503   tangwang   docs
28
    ```bash
07cf5a93   tangwang   START_EMBEDDING=...
29
    ./scripts/setup_reranker_venv.sh
701ae503   tangwang   docs
30
31
32
    ```
  
  ## 配置
80955935   tangwang   Reranker 补充 qwen3...
33
  - **后端选择**`config/config.yaml` 中 `services.rerank.backend`(`qwen3_vllm` | `qwen3_transformers` | `bge`),或环境变量 `RERANK_BACKEND`
701ae503   tangwang   docs
34
35
36
37
38
  - **后端参数**`services.rerank.backends.bge` / `services.rerank.backends.qwen3_vllm`,例如:
  
  ```yaml
  services:
    rerank:
07cf5a93   tangwang   START_EMBEDDING=...
39
      backend: "qwen3_vllm"   # 或 bge
701ae503   tangwang   docs
40
41
42
43
44
45
46
47
48
49
50
51
      backends:
        bge:
          model_name: "BAAI/bge-reranker-v2-m3"
          device: null
          use_fp16: true
          batch_size: 64
          max_length: 512
          cache_dir: "./model_cache"
          enable_warmup: true
        qwen3_vllm:
          model_name: "Qwen/Qwen3-Reranker-0.6B"
          max_model_len: 8192
80955935   tangwang   Reranker 补充 qwen3...
52
53
54
55
56
57
        qwen3_transformers:
          model_name: "Qwen/Qwen3-Reranker-0.6B"
          instruction: "Given a web search query, retrieve relevant passages that answer the query"
          max_length: 8192
          batch_size: 64
          use_fp16: true
701ae503   tangwang   docs
58
59
60
61
62
63
64
65
66
          tensor_parallel_size: 1
          gpu_memory_utilization: 0.8
          enable_prefix_caching: true
          instruction: "Given a web search query, retrieve relevant passages that answer the query"
  ```
  
  - 服务端口、请求限制等仍在 `reranker/config.py`(或环境变量 `RERANKER_PORT`、`RERANKER_HOST`)。
  
  ## 运行
d90e7428   tangwang   补充重排
67
  ```bash
07cf5a93   tangwang   START_EMBEDDING=...
68
  ./scripts/start_reranker.sh
d90e7428   tangwang   补充重排
69
  ```
07cf5a93   tangwang   START_EMBEDDING=...
70
  该脚本会使用隔离环境 `.venv-reranker`;首次请先执行 `./scripts/setup_reranker_venv.sh`
d90e7428   tangwang   补充重排
71
72
73
74
75
76
  
  ## API
  ### Health
  ```
  GET /health
  ```
701ae503   tangwang   docs
77
  Response 含 `backend`(当前后端名)、`model`、`model_loaded`、`status`
d90e7428   tangwang   补充重排
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  
  ### Rerank
  ```
  POST /rerank
  Content-Type: application/json
  
  {
    "query": "wireless mouse",
    "docs": ["logitech mx master", "usb cable", "wireless mouse bluetooth"]
  }
  ```
  
  Response:
  ```
  {
    "scores": [0.93, 0.02, 0.88],
    "meta": {
      "input_docs": 3,
      "usable_docs": 3,
      "unique_docs": 3,
      "dedup_ratio": 0.0,
      "elapsed_ms": 12.4,
      "model": "BAAI/bge-reranker-v2-m3",
      "device": "cuda",
      "fp16": true,
      "batch_size": 64,
      "max_length": 512,
      "normalize": true,
      "service_elapsed_ms": 13.1
    }
  }
  ```
  
  ## Logging
  The service uses standard Python logging. For structured logs and full output,
  run uvicorn with:
  ```bash
  uvicorn reranker.server:app --host 0.0.0.0 --port 6007 --log-level info
  ```
  
  ## Notes
701ae503   tangwang   docs
119
120
121
  - 无请求级缓存;输入按字符串去重后推理,再按原始顺序回填分数。
  - 空或 null 的 doc 跳过并计为 0。
  - **Qwen3-vLLM**:参考 [Qwen3-Reranker-0.6B](https://huggingface.co/Qwen/Qwen3-Reranker-0.6B),需 GPU 与较多显存;与 BGE 相比适合长文本、高吞吐场景(vLLM 前缀缓存)。
80955935   tangwang   Reranker 补充 qwen3...
122
  - **Qwen3-Transformers**:官方 Transformers Usage 方式,无需 vLLM;适合 CPU 或小显存,可选 `attn_implementation: "flash_attention_2"` 加速。