Published on

部署 4.8k star 的 Xinference 接入本地 Rerank 模型

首先说说为什么会想要部署 Xinference?

起因是因为前几天白嫖的 Jina API token 用完了,而付费的话又感觉自己的那些知识库没有必要使用商用的(好吧好吧,其实还是舍不得花钱😂),开源免费的对我来说也足够了,所以想要找找可以本地部署的。

刚开始想使用 Ollama 的,不过查了下它好像不支持 Rerank 模型,因此又找上了 Xinference 这款产品。

简介

Xorbits Inference (Xinference) 是一个开源平台,用于简化各种 AI 模型的运行和集成。借助 Xinference,我们可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理,并创建强大的 AI 应用。

它支持的模型种类有:

  • 语言模型:比如 qwen2、baichuan、deepseek、gemma 等场景的语言模型
  • Embedding 模型:有 Jina 的 Embedding 模型(结合 Rerank,知识库检索不就起来了嘛😁);
  • Rerank 模型:有 Jina 的 Rerank 模型;
  • 图像模型:除了 Stable Diffusion 之外,还有 Flux 模型;
  • 语音模型:有 ChatTTS 以及 whisper 等等;
  • 视频模型:这类模型还没了解过,Xinference 里是 CogVideoX 模型;
  • 自定义模型:需要先注册,然后才可以在这里看到;

相较于 Ollama 来说,Xinference 在部署之后会为我们提供一个可视化界面,我们可以通过图形化界面安装部署大模型,这个下来会详细进行讲解。

部署

官方介绍了三种部署方式,分别是:

  • 本地运行:也就是使用终端命令行的方式进行部署,需要 Python 环境;
  • 在集群中部署:对于个人用户来说用不上,虽然现在都在上云,但是 Kubernetes 的使用还是多存在于企业中;
  • 使用 Docker 部署:废话不多说,Run 起来!

在使用 Docker 部署 Xinference 时,如果你的机器有 GPU,可以执行(把 your_version 改为你想运行的镜像版本,比如 latest):

docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 --gpus all xprobe/xinference:<your_version> xinference-local -H 0.0.0.0 --log-level debug

如果是只有 CPU 的机器,则执行:

docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 xprobe/xinference:<your_version>-cpu xinference-local -H 0.0.0.0 --log-level debug

在启动容器之后,我们访问 localhost:9998 就可以看到这样一个页面:

大概介绍一下界面构成:

  • Launch Model:其实就是目前 Xinference 里内置支持的模型,种类繁多,大家自行选择;
  • Running Models:在 Xinference 中已经下载和运行起来的模型
  • Register Model:对于 Custom Models 来说,需要先注册,才能运行;
  • Cluster Information:在这个页面里可以看到项目运行时的资源消耗情况

实战:安装 Rerank 模型并集成到 Dify 中

在 RERANK MODELS 中选择一个模型进行部署启动,以 bce-reranker-base_v1 为例:

点击左下角的那个小火箭开启下载~

下载好之后,可以到 Running Models 中的 RERANK MODELS 里看到对应的模型:

我们到 Dify 中集成一下 Xinference(在模型供应商的地方):

因为我们下载的是 Rerank 模型,所以这里「模型类型」为 Rerank 模型;

模型名称和模型 UID 分别填入下图中红框框住的部分(ID 对应 UID,名称对应 Name):

服务器 URL 这里填http://host.docker.internal:9998,这样写的原因在之前的文章中《Dify 教程二:使用本地大模型 Ollama》也说过。如果不是 Docker 部署而是本地运行或者集群部署则可以直接写「服务器 IP:端口号」。

保存!开测~

在 Dify 中新建一个知识库,并上传数据集(本次上传了《断舍离》这本书进行测试),知识库的检索设置如下:

最终得到 261 个分段,召回测试如下:

我们将这个知识库加到应用中试试看:

效果还不错,感兴趣的小伙伴可以试试看。