利用Xinference部署,代码形式:
pip install "xinference[transformers]" -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install "xinference[vllm]" -i https://pypi.tuna.tsinghua.edu.cn/simple
# 终端1
export XINFERENCE_ENDPOINT=http://0.0.0.0:9999
xinference-local --host 0.0.0.0 --port 9999
# 终端2
export XINFERENCE_ENDPOINT=http://127.0.0.1:9999
## 本地下载重排序模型之后
xinference launch --model-name bge-reranker-v2-m3 --model-type rerank --model-path /data/RAGFlow/Model_bgereranker
测试:
curl -s -X POST http://127.0.0.1:9999/v1/rerank -H 'accept: application/json' -H 'Content-Type: application/json' -d '{
"model": "bge-reranker-v2-m3",
"query": "一个男人在吃披萨。",
"return_documents": true,
"top_n": 5,
"documents": [
"一个男人在吃食物。",
"一个男人在吃一块面包。",
"那个女孩正抱着一个婴儿。",
"一个男人正在骑马。",
"一个女人正在拉小提琴。"
]
}' | jq .
这里面有以下问题:
1.为什么要重复设置两次环境变量呢?
这个和export的作用域有关,一次export只在当前的终端内有效,如果想启动一个终端就自动加载export XINFERENCE_ENDPOINT=http://0.0.0.0:9999 那么就如下设置即可
# 添加到 ~/.bashrc 文件(针对当前用户)
echo 'export XINFERENCE_ENDPOINT=http://0.0.0.0:9999' >> ~/.bashrc
nohup xinference-local --host 0.0.0.0 --port 9999
xinference launch --model-name bge-reranker-v2-m3 --model-type rerank --model-path /data/RAGFlow/Model_bgereranker
这样每打开一个终端,就会自动设置
否则就在两个终端内各设置一次即可
2.部署了之后怎么设置输入输出呢?
import requests
import json
def rerank_documents(query, documents):
url = "http://127.0.0.1:9999/v1/rerank"
headers = {
'accept': 'application/json',
'Content-Type': 'application/json'
}
payload = {
"model": "bge-reranker-v2-m3",
"query": query,
"return_documents": True,
"top_n": 5,
"documents": documents
}
response = requests.post(url, headers=headers, json=payload)
return response.json()["results"]
if __name__ == "__main__":
# 使用示例
query = "一个男人在吃披萨。"
documents = [
"一个女人正在拉小提琴。",
"一个男人在吃食物。",
"一个男人在吃一块面包。",
"那个女孩正抱着一个婴儿。",
"一个男人正在骑马。",
]
results = rerank_documents(query, documents)
print(results)