Xinference部署reranker模型

利用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)

### 如何选择适合的重排序(Reranker)模型类型 在构建基于 Dify 和 Xinference 的应用时,选择合适的 reranker 模型对于提升检索质量和用户体验至关重要[^3]。不同的 rerank models 可能适用于不同场景下的需求。 #### 考虑因素 - **应用场景**:如果应用程序侧重于对话交互,则应优先考虑那些经过优化能够理解上下文并提供连贯响应的模型。这类模型通常具备较强的自然语言处理能力。 - **性能指标**:评估候选模型的各项技术参数,比如精度、召回率以及延迟时间等。高效率低延迟能够显著改善用户的实际体验效果[^1]。 - **资源消耗**:考虑到运行环境中的硬件条件(如 GPU 数量),需权衡计算成本与预期收益之间的关系。某些高性能但资源密集型的模型可能不适合所有部署情况。 - **数据特性**:分析待处理的数据集特点,包括但不限于文本长度分布、领域专有名词频率等因素。特定领域的专业知识有助于挑选更贴合业务逻辑的解决方案。 #### 实践方法 为了找到最适合项目需求的 reranker 模型,在实践中可采取如下措施: ```python from dify import DifyClient import xinference as xf def evaluate_reranker_models(models_list, test_data): results = {} for model_name in models_list: # 加载模型实例 model_instance = xf.load_model(model_name) # 使用测试数据进行预测 predictions = [] for query, documents in test_data.items(): ranked_docs = model_instance.rank(query=query, docs=documents) predictions.append((query, ranked_docs)) # 记录评价结果 metrics = calculate_metrics(predictions) results[model_name] = { 'precision': metrics['precision'], 'recall': metrics['recall'], 'latency_ms': measure_latency(model_instance), 'resource_usage': get_resource_consumption(model_instance) } return results # 定义辅助函数... ``` 此代码片段展示了如何通过编程方式批量评测多个 reranker 模型的表现,并收集有关它们性能的关键信息以便做出决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值