大模型RAG之检索排序Rerank

前言
Xinference 是一款由 领先AI团队 开发的 开源 RAG
(Retrieval-Augmented Generation
)检索排序优化工具 ,专注于提升大模型在知识增强生成任务中的准确性和效率。其核心功能是通过 多维度重排序(Rerank
) 优化初步检索结果,筛选出与用户查询最相关的文档片段,从而显著提升大模型生成答案的质量。
Xinference 的作用
- 精准排序增强:对初步检索(如基于BM25、Embedding相似度)的文档进行重新打分和排序,优先保留高相关性内容。
- 噪声过滤:剔除低质量、冗余或离题文档,减少大模型生成时的干扰。
- 多模态支持:兼容文本、图像、结构化数据的混合检索排序(若支持多模态版本)。
- 性能优化:通过分布式计算加速海量候选文档的排序过程,降低延迟。
为何使用 Xinference?
- 解决
检索-生成
瓶颈 传统RAG流程中,初步检索结果可能包含大量低相关文档,直接影响生成效果。Xinference
通过精细化排序,提升输入数据的质量。 - 灵活适配多种模型 支持与主流大模型(如
GPT
、LLaMA
、ChatGLM
)及检索系统(Elasticsearch
、FAISS
)无缝集成,无需改造现有架构。 - 开源与可定制提供开放的代码和模型微调接口,允许企业根据业务场景定制排序策略(如融合业务规则、领域知识)。
- 资源高效利用 采用轻量级模型和缓存机制,在
CPU/GPU
环境下均能高效运行,降低算力成本。
Xinference 的优缺点
优点
- 精度提升显著 :基于深度学习(如
Cross-Encoder
、对比学习)的排序模型,优于传统规则方法。 - 部署灵活:支持本地、云端及边缘设备部署,适应不同规模场景。
- 社区生态支持:背靠活跃开源社区,持续更新预训练模型和优化算法。
缺点
- 依赖标注数据:自定义排序模型需高质量标注数据,冷启动成本较高。
- 实时性局限:复杂排序模型可能增加毫秒级延迟,对超低延迟场景需优化。
- 多语言覆盖不足:当前版本可能以中英文为主,小语种支持依赖社区贡献。
对比其它Rerank工具
工具 | Xinference | Cohere Rerank | Sentence-Transformers Cross-Encoder | Elasticsearch LTR |
---|---|---|---|---|
核心能力 | 开源可定制,支持多模态 | 商业API,高精度 | 开源,轻量级单模型排序 | 内置Learning to Rank,依赖特征工程 |
排序模型 | 预训练+微调,支持混合策略 | 专用黑盒模型 | 预训练Cross-Encoder(如MiniLM) | 线性模型、树模型(需自定义特征) |
部署成本 | 可本地化,资源消耗中等 | 按API调用付费,成本高 | 本地运行,资源消耗低 | 依赖Elasticsearch集群,运维复杂 |
适用场景 | 企业级定制化RAG、多模态场景 | 快速验证原型,无运维负担 | 轻量级排序需求,中小规模数据 | 已用Elasticsearch,需简单排序增强 |
劣势 | 需技术团队维护 | 数据隐私风险,灵活性低 | 模型单一,复杂场景效果有限 |
Xinference
是 开源RAG场景下重排序的优选工具 ,尤其适合需要高精度、可定制化且注重数据隐私的企业。相比商业API(如Cohere
),Xinference
提供更高的灵活性和控制权;对比轻量级方案Sentence-Transformers
,其支持更复杂的混合排序策略;与Elasticsearch LTR
相比,Xinference
更适配深度学习驱动的排序需求。选择时需权衡开发资源、数据规模及业务场景的定制化程度。

安装
conda
创建一个新环境
bash
conda create -p /opt/Anaconda3/envs/xinference_env python=3.11 -y
conda activate xinference_env
如果想安装所有依赖
bash
pip install "xinference[all]"
如果只有cpu,使用 Llama.cpp 引擎
性能更好。 Xinference
通过 llama-cpp-python
支持 gguf
格式`的模型。
bash
pip install xinference
pip install llama-cpp-python
如果想使用 Transformers 引擎
,可以执行以下命令
bash
pip install "xinference[transformers]"
使用
启动Xinference
执行以下命令启动 xinference
bash
xinference-local --host 0.0.0.0 --port 9997
# 如果要设置日志文件和模型文件的路径,可以如下启动
XINFERENCE_HOME=/tmp/xinference xinference-local --host 0.0.0.0 --port 9997
访问地址: http://localhost:9997

启动模型
启动 bge-reranker-base
模型,点击小火箭图标。

启动有可能会报错,因为访问 hugging-face
需要科学上网,我们可以设置国内镜像。

魔塔社区
启动时将模型源改成魔塔社区,再次下载
bash
XINFERENCE_MODEL_SRC=modelscope xinference-local --host 0.0.0.0 --port 9997

此外在启动模型的可选参数里,也可以配置模型社区。

客户端示例
查询相似度
如果是代码中启动模型,则如下调用 client.launch_model
方法;
如果是在 Xinference UI
上手动启动模型,则在 client.get_model
时传入 model_uid
来获取模型。
bash
from xinference.client import Client
client = Client("http://127.0.0.1:9997")
# 启动模型
model_uid = client.launch_model(model_name="bge-reranker-base",
model_type="rerank",
model_engine=None,
model_format=None,
model_size_in_billions=None,
quantization=None)
# model_uid = 'bge-reranker-base'
model = client.get_model(model_uid)
query = "A man is eating pasta."
corpus = [
"A man is eating a piece of bread.",
"A man is eating food.",
"The girl is carrying a baby.",
"A man is riding a horse.",
"A woman is playing violin."
]
print(model.rerank(corpus, query))
返回结果显示, index = 1
的词条和 query
的相似度最高,达到了 0.99
。即 A man is eating food.
和 A man is eating pasta.
的相似度最高。

卸载/注销模型
client.unload_model
卸载模型是暂时释放模型资源,并没有彻底在本地硬盘里删除模型;
client.unregister_model
注销模型不仅从内存释放模型资源,还将模型的元信息和配置信息等一并删除。
bash
from xinference.client import Client
# 创建客户端实例
client = Client("http://127.0.0.1:9997")
# 列出所有已加载的模型
models = client.list_models()
print("Loaded models:", models)
# 卸载一个暂时不需要的模型
model_name_to_unload = "model_name_1"
client.unload_model(model_name_to_unload)
print(f"Model '{model_name_to_unload}' has been unloaded.")
# 注销一个不再需要的模型
model_name_to_unregister = "model_name_2"
client.unregister_model(model_name_to_unregister)
print(f"Model '{model_name_to_unregister}' has been unregistered.")
# 确认模型已被删除
models = client.list_models()
print("Current loaded models:", models)
卸载完之后可以去模型的下载地址确认一下
bash
~/.cache/modelscope/hub/models
~/.cache/modelscope/hub/models/._____temp/qwen
WEB UI
上也能对模型缓存进行查看和管理。


Dify 配置 Rerank
在Dify
右上角点击设置,左侧选择模型供应商,右侧找到Xorbits Inference

点击添加模型之后弹出一个对话框,填写配置信息

参考
【4.8k Star Xinference部署】为知识库接入本地Rerank模型,全面提升检索效率_本地部署reranker模型-CSDN博客