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

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

2024-10-21
Aigc

在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

下载模型:

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

在Xinference中加载模型 #

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

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

 1curl -s -X POST http://127.0.0.1:9997/v1/rerank \
 2  -H 'accept: application/json' \
 3  -H 'Content-Type: application/json' \
 4  -d '{
 5    "model": "bge-reranker-v2-m3",
 6    "query": "一个男人在吃披萨。",
 7    "documents": [
 8        "一个男人在吃食物。",
 9        "一个男人在吃一块面包。",
10        "那个女孩正抱着一个婴儿。",
11        "一个男人正在骑马。",
12        "一个女人正在拉小提琴。"
13    ]
14  }' | jq .
 1{
 2  "id": "662bbd32-903e-11ef-a357-0242ac110002",
 3  "results": [
 4    {
 5      "index": 0,
 6      "relevance_score": 0.9992190599441528,
 7      "document": null
 8    },
 9    {
10      "index": 1,
11      "relevance_score": 0.49892786145210266,
12      "document": null
13    },
14    {
15      "index": 3,
16      "relevance_score": 0.0019025021465495229,
17      "document": null
18    },
19    {
20      "index": 4,
21      "relevance_score": 0.000016797916032373905,
22      "document": null
23    },
24    {
25      "index": 2,
26      "relevance_score": 0.000016389205484301783,
27      "document": null
28    }
29  ],
30  "meta": {
31    "api_version": null,
32    "billed_units": null,
33    "tokens": null,
34    "warnings": null
35  }
36}

return_documentstop_n:

 1curl -s -X POST http://127.0.0.1:9997/v1/rerank \
 2  -H 'accept: application/json' \
 3  -H 'Content-Type: application/json' \
 4  -d '{
 5    "model": "bge-reranker-v2-m3",
 6    "query": "一个男人在吃披萨。",
 7    "return_documents": true,
 8    "top_n": 2,
 9    "documents": [
10        "一个男人在吃食物。",
11        "一个男人在吃一块面包。",
12        "那个女孩正抱着一个婴儿。",
13        "一个男人正在骑马。",
14        "一个女人正在拉小提琴。"
15    ]
16  }' | jq .
 1{
 2  "id": "122f3136-9049-11ef-b3fb-0242ac110002",
 3  "results": [
 4    {
 5      "index": 0,
 6      "relevance_score": 0.9992190599441528,
 7      "document": {
 8        "text": "一个男人在吃食物。"
 9      }
10    },
11    {
12      "index": 1,
13      "relevance_score": 0.49892786145210266,
14      "document": {
15        "text": "一个男人在吃一块面包。"
16      }
17    }
18  ],
19  "meta": {
20    "api_version": null,
21    "billed_units": null,
22    "tokens": null,
23    "warnings": null
24  }
25}
© 2024 青蛙小白