青蛙小白
博客 / 2024/10

在Xinference中使用Rerank模型BAAI/bge-reranker-v2-m3

2024/10/21 · — 字 · 阅读约 — 分钟 ·
目录

在RAG中,Rerank是一种对初步检索到的多个候选文档进行重新评分和排序的技术,确保生成模型基于最相关的文档生成回答。通过Rerank,可以剔除不相关的文档,优化检索结果,提高生成模型的准确性和回答质量。这一步对提升生成结果的相关性和减少无关信息至关重要。

RAG的检索步骤会检索到大量文档,这些文档并不是都与问题相关的,Rerank可以对文档进行重新排序,让更相关的文档排在前面,从而提高RAG的效果。

本文将介绍在Xinference中使用Rerank模型,这里选择的Rerank模型是BAAI/bge-reranker-v2-m3

BAAI/bge-reranker-v2-m3

BAAI/bge-reranker-v2-m3是轻量级重排序模型,具有强大的多语言能力,易于部署,推理速度快。

部署BAAI/bge-reranker-v2-m3所需的配置:

  • 内存>=8G
  • 显存>=8G
  • 硬盘>=8G

下载模型:

export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download BAAI/bge-reranker-v2-m3

在Xinference中加载模型

xinference launch --model-name bge-reranker-v2-m3 --model-type rerank --model-uid bge-reranker-v2-m3

Xinference中的rerank模型可以通过/v1/rerank接口来对文档列表进行排序。

curl -s -X POST http://127.0.0.1:9997/v1/rerank \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "bge-reranker-v2-m3",
    "query": "一个男人在吃披萨。",
    "documents": [
        "一个男人在吃食物。",
        "一个男人在吃一块面包。",
        "那个女孩正抱着一个婴儿。",
        "一个男人正在骑马。",
        "一个女人正在拉小提琴。"
    ]
  }' | jq .
{
  "id": "662bbd32-903e-11ef-a357-0242ac110002",
  "results": [
    {
      "index": 0,
      "relevance_score": 0.9992190599441528,
      "document": null
    },
    {
      "index": 1,
      "relevance_score": 0.49892786145210266,
      "document": null
    },
    {
      "index": 3,
      "relevance_score": 0.0019025021465495229,
      "document": null
    },
    {
      "index": 4,
      "relevance_score": 0.000016797916032373905,
      "document": null
    },
    {
      "index": 2,
      "relevance_score": 0.000016389205484301783,
      "document": null
    }
  ],
  "meta": {
    "api_version": null,
    "billed_units": null,
    "tokens": null,
    "warnings": null
  }
}

return_documentstop_n:

curl -s -X POST http://127.0.0.1:9997/v1/rerank \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "bge-reranker-v2-m3",
    "query": "一个男人在吃披萨。",
    "return_documents": true,
    "top_n": 2,
    "documents": [
        "一个男人在吃食物。",
        "一个男人在吃一块面包。",
        "那个女孩正抱着一个婴儿。",
        "一个男人正在骑马。",
        "一个女人正在拉小提琴。"
    ]
  }' | jq .
{
  "id": "122f3136-9049-11ef-b3fb-0242ac110002",
  "results": [
    {
      "index": 0,
      "relevance_score": 0.9992190599441528,
      "document": {
        "text": "一个男人在吃食物。"
      }
    },
    {
      "index": 1,
      "relevance_score": 0.49892786145210266,
      "document": {
        "text": "一个男人在吃一块面包。"
      }
    }
  ],
  "meta": {
    "api_version": null,
    "billed_units": null,
    "tokens": null,
    "warnings": null
  }
}
TAGS # aigc
评论