AI项目博客
记录 AI 工程实践与大模型应用

企业级大模型私有化部署(四):Xinference 部署 Embedding 与 Rerank

「企业级大模型私有化部署」系列第 4 篇。目标:在第二台 GPU 服务器上装 Xinference,部署 bge-large-zh-v1.5 和 reranker,再通过 6007 隧道接进 Dify。

结论:RAG 的效果不只看大语言模型。向量化决定了能不能召回,Rerank 决定了召回的片段排得对不对;这两个模型用 Xinference 管,比用 Ollama 更稳。

一、Xinference 是什么

Xinference 是一个强大且通用的分布式推理框架,可以用于私有化部署和运行大语言模型,也支持嵌入、重排、多模态等模型。它简化了各种 AI 模型的运行和集成,让开发者可以在云端或本地环境运行、推理,创建 AI 应用。

这套方案里,Xinference 只做两件事:

  • Embedding:把切片变成向量,写进向量库;
  • Rerank:把初步召回的候选片段重新排序,提高相关性。

Ollama 强在大语言模型的本地运行,对 Embedding 和 Rerank 的支持有限;Xinference 对这两类模型更完整,所以单独放在 GPU 服务器 B。

二、登录 GPU 服务器 B

用 XShell 或 FinalShell 连接第二台 AutoDL 实例:

  • 主机:AutoDL 控制台复制的 SSH 地址;
  • 端口:控制台分配的端口;
  • 用户名:root;
  • 密码:控制台复制的密码。

首次连接输入 yes 保存指纹。登录后先开学术加速:

source /etc/network_turbo

学术加速只对当前终端有效,新开终端要重新执行。

三、安装 Xinference

先升级 pip,再装 1.5.0。最新版可能和部分依赖冲突,先固定一个能跑通的版本:

python -m pip install --upgrade pip
pip install 'xinference==1.5.0'

安装 PyTorch。先装一个基础版本,再按 CUDA 11.8 升级:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch
pip install --upgrade torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

装完确认 CUDA 可用:

python -c "import torch; print(torch.cuda.is_available())"

返回 True 再继续。返回 False 说明驱动、CUDA 或 PyTorch 版本不匹配,先解决这个,不要急着启动模型。

启动 Xinference:

xinference-local --host 0.0.0.0 --port 6006

AutoDL 只开放 6006,所以服务监听 6006;外部通过隧道访问。

四、Windows 上访问 Xinference

在 Windows 上用 AutoDL 的隧道工具,把本地 6006 映射到 GPU 的 6006:

  1. 下载 AutoDL 的 SSH 隧道工具;
  2. 粘贴 SSH 指令和密码;
  3. 代理到本地端口填 6006;
  4. 打开 http://127.0.0.1:6006。

看到 Xinference 的 Web UI 就说明隧道通了。

Xinference 的 Launch Model 页面

图 1:Xinference 的 Launch Model 页面,Embedding 模型里能看到 bge-large-zh-v1.5。

五、部署 Embedding 模型

在 Launch Model → EMBEDDING MODELS 里选 bge-large-zh-v1.5,点开后确认参数:

  • Replica:1;
  • Device:GPU;
  • GPU Idx:0(单卡);
  • Worker Ip:单机留空;
  • Model UID:默认 bge-large-zh-v1.5,不要改;
  • Download hub:按网络情况选 HuggingFace 或其他镜像;
  • Model Path:用默认下载路径,或填本地模型目录。

点启动后,到 Running Models → EMBEDDING MODELS 里确认状态。bge-large-zh-v1.5 是 1024 维、512 max tokens,这两个数字后面在 Dify 里要对得上。

Xinference 启动 bge-large-zh-v1.5

图 2:Xinference 启动 bge-large-zh-v1.5:1024 维、512 max tokens。

六、部署 Rerank 模型

再下 Rerank 模型,比如 bge-reranker-base 或 bge-reranker-large,在 Launch Model → RERANK MODELS 里启动。

Xinference 的 Rerank 模型列表

图 3:Xinference 的 Rerank 模型列表,bge-reranker-base / large。

Rerank 不是越多越好。它会对每个候选片段做一次打分,top-k 越大、延迟越高;先用 top 20 左右,观察效果和耗时,再决定要不要加。

七、xoscar 兼容问题

如果启动模型时报:

Server error: 500 - [address=0.0.0.0:51032, pid=12889] MainActorPool.append_sub_pool() got an unexpected keyword argument 'start_method'

是 xoscar 版本不兼容。降级到 0.6.2,补依赖后重启 Xinference:

pip install xoscar==0.6.2
pip install sentence-transformers sentencepiece transformers torch
xinference-local --host 0.0.0.0 --port 6006

重启后回到 Web UI,重新启动模型;如果模型还在 Running Models 里,先停掉再启动。

八、把 6007 隧道打到 Dify 服务器

Dify 服务器上的 6006 已经被 Ollama 占用,所以 Xinference 用 6007:

ssh -CNg -L 6007:127.0.0.1:6006 root@<AutoDL SSH地址> -p <端口>

在 Dify 服务器上测试:

curl http://127.0.0.1:6007/v1/models

返回模型列表,说明隧道和 Xinference 都通了。如果没有返回,先查隧道进程,再查 GPU 上的 Xinference 服务。

九、在 Dify 里接入 Xinference

Dify:设置 → 模型供应商 → 安装 Xorbits Inference(Xinference 的供应商插件)。

Dify 安装 Xorbits Inference 供应商

图 4:Dify 里安装 Xorbits Inference 供应商,接 Xinference 的嵌入与重排。

然后添加模型:

  • Embedding:模型名和 UID 填 bge-large-zh-v1.5,上下文 512;
  • Rerank:模型名和 UID 填 bge-reranker-base 或你下载的版本;
  • Base URL:http://<Dify服务器内网IP>:6007。

名称和 ID 必须跟 Xinference 里完全一致,大小写、连字符都不能改。保存后到模型列表里确认开关是开的。

Dify 里的 Ollama 与 Xorbits Inference 模型列表

图 5:Dify 里最终能看到两组模型:Ollama 的 qwen3:4b,以及 Xorbits Inference 的 bge-large-zh-v1.5 和 bge-reranker-base。

十、验收

  1. Xinference 的 Running Models 里有 bge-large-zh-v1.5 和 reranker;
  2. Dify 服务器上 curl http://127.0.0.1:6007/v1/models 有返回;
  3. Dify 模型供应商里两个模型都能看到,开关是开的;
  4. 建一个知识库,上传文档,检索能出切片;
  5. 打开 Rerank,问一个跨段落的问题,对比开/关时引用片段的相关性。

如果 Dify 里看不到模型,先查 6007 隧道,再查模型 UID 是否和 Xinference 完全一致。Rerank 不生效时,检查知识库的检索设置里是否真的选中了 rerank 模型。

十一、常见报错与处置

现象 原因 处置
启动报 start_method xoscar 版本不兼容 pip install xoscar==0.6.2 后重启
模型下载失败 网络或下载源不可达 开学术加速;换下载源;重试
Dify 里模型名对不上 UID 改过,或大小写不一致 用 Xinference 里的原始 UID,逐字对齐
6007 隧道起不来 本地 6007 被占用 换一个本地端口,Dify 里同步改
Rerank 很慢 候选片段太多 降 top-k;换更小的 reranker;按场景决定是否开启
显存不足 embedding 和 rerank 同时占卡 错峰启动;换小模型;加显存
Dify 用 127.0.0.1 连不上 容器内的 127.0.0.1 不是宿主机 Base URL 用 Dify 服务器内网 IP
模型启动后立刻退出 依赖缺失或 CUDA 不匹配 看 Xinference 日志;补 sentence-transformers 等依赖

十二、成本与边界

Embedding 和 Rerank 模型比大语言模型小,但仍占显存。bge-large-zh-v1.5 和 reranker 同时跑,24GB 显存足够;并发上来后要观察显存和延迟。

Rerank 提升相关性,但增加一次模型调用和延迟。不是所有场景都需要开:知识库问答、客服系统值得开;对响应时间极敏感的场景可以先不开,或只对 top-k 较小的结果做重排。

十三、系列小结

四篇的主线:先看场景和拓扑,再起 Dify,接着用 Ollama 提供大语言模型,最后用 Xinference 提供 Embedding 和 Rerank。

三条链路接起来,Dify 里才能做出「能检索、能重排、能回答」的知识库应用。下一步:在 Dify 里建知识库,上传文档,先用 qwen3:4b + bge-large-zh-v1.5 跑通问答,再打开 Rerank 对比效果。

上一篇:企业级大模型私有化部署(三):AutoDL + Ollama 部署 qwen3:4b

赞(0)
未经允许不得转载:AI项目博客 » 企业级大模型私有化部署(四):Xinference 部署 Embedding 与 Rerank

评论 1

  1. #1

    这个内容实在是太精彩啦

    游客 重庆市 · IP 123.147.232.*6天前回复

AI项目博客

专注 AI 工程化落地 —— 覆盖智能体、大模型、Java AI 与 Python 的学习笔记,以及 AI 平台的项目实战记录。

关于本站文章归档

登录

找回密码

注册