Skip to content

📦 本地部署 Rerank Server 完整指南(適用 bge-reranker-base) #559

@jlin53882

Description

@jlin53882

說明

許多使用者在部署 memory-lancedb-pro 時,希望完全本地運行,不依賴 SiliconFlow 等雲端 API。

這份文件提供從零架設本地 Rerank Server 的完整指南,特別針對 BAAI/bge-reranker-base 模型進行優化。

📄 文件連結https://github.com/jlin53882/openclaw-agent-workflows/blob/main/MEMORY_LANCEDB_PRO_SETUP.md


為什麼需要這份文件?

1. 雲端 API 的問題

  • 延遲高:每次請求需要網路傳輸
  • 費用:大量使用時成本累積
  • 隱私:敏感資料需上傳第三方

2. 本地部署的優勢

  • 零費用:一次性模型下載,之後免費使用
  • 低延遲:本地網路,請求延遲大幅降低
  • 隱私保障:資料完全不離開本機

文件重點摘要

✅ 已驗證有效的優化

優化項目 效果 說明
批次處理 6x 提升 一次處理所有 documents,避免逐一處理的 overhead
torch.set_num_threads(16) ~10-15% 提升 自動使用最大 CPU 執行緒數
記憶體 + 磁碟 Cache 重複查詢秒回 相同 query/documents 組合直接回傳快取結果

⚠️ 重要提醒

  1. truncation 設定:使用 truncation=True(自動截斷),避免 only_second 導致錯誤
  2. max_length=512:平衡速度與品質,實測 Spearman 相關性與 256 相同
  3. CPU 使用率不高是正常的:Transformer 推理是記憶體頻寬瓶頸,非 CPU 運算瓶頸

📊 效能數據(AMD Ryzen 7 8845HS, 16 threads)

環節 延遲
Ollama Embed ~350ms
LanceDB Search ~400ms
Rerank (12 docs) ~2000ms
Pipeline 總計 ~3600ms

快速開始

# 1. 安裝依賴
pip install transformers torch sentencepiece uvicorn fastapi pydantic httpx

# 2. 下載模型(自動快取)
python -c "from transformers import AutoModelForSequenceClassification; AutoModelForSequenceClassification.from_pretrained('BAAI/bge-reranker-base')"

# 3. 啟動 server(自動使用 16 threads)
python reranker_server.py

# 4. 設定 openclaw.json
# "rerankProvider": "siliconflow" → "rerankProvider": "local"
# "rerankEndpoint": "http://127.0.0.1:18799/v1/rerank"

詳細設定範例請參考文件第 5 章。


適合對象

  • 🔒 注重隱私的使用者:不希望資料上傳雲端
  • 💰 成本敏感的使用者:想要避免 API 費用
  • 🌐 網路不穩定的環境:本地部署不依赖外部網路
  • 🔧 開發者:想要自訂或進一步優化 Rerank 流程

文件內容包含完整的 reranker_server.py 範例程式碼、參數調校指南、以及常見問題 FAQ。

有任何問題歡迎在這裡討論,或直接提交 PR 協助改善文件!


標籤:documentation, enhancement, local-deployment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions