1. 环境准备与基础概念扫盲
大家好,我是老张,一个在AI和智能硬件领域折腾了十多年的老码农。最近在搞一个企业级的智能文档问答系统,核心需求就是从一堆文档里精准找到最相关的答案。相信很多朋友在做RAG(检索增强生成)项目时都遇到过类似问题:用向量检索(比如用BGE这类模型)捞出来的前10个结果,虽然都沾点边,但真正能用来生成答案的,可能就一两个。这时候,一个给力的rerank(重排序)模型就显得至关重要了,它能像一位经验丰富的裁判,快速从候选列表中挑出那个“得分最高”的答案。
这次我要分享的,就是在Ubuntu 22.04 LTS系统上,用Xinference来部署一个专门的rerank模型服务,并把它无缝集成到RAGFLOW这套优秀的RAG框架里的完整过程。这个方案最大的好处就是解耦和灵活:模型服务独立部署,想换模型、想扩缩容都特别方便,不用动RAGFLOW的核心代码。整个流程我踩过不少坑,也总结了一套最稳当的部署方法,今天就跟大家从头到尾捋一遍,保证小白也能跟着一步步做出来。
在动手之前,我们先明确几个关键角色。Xinference是阿里云开源的模型推理服务框架,你可以把它理解成一个“模型服务超市”,它负责把各种AI模型(比如我们需要的rerank模型)封装成标准的API接口,让我们能像调用普通Web服务一样去使用模型。RAGFLOW则是一个专注于文档解析和RAG应用开发的框架,它本身可能内置或支持连接外部的rerank服务来提升检索质量。我们的目标,就是在Ubuntu服务器上建好这个“超市”(Xinference服务),然后把“超市”的地址告诉RAGFLOW,让它需要做重排序的时候,直接来“超市”采购。至于rerank模型,我们选用的是bge-reranker-base,这个模型在中文社区非常流行,效果和性能平衡得很好,特别适合我们这种实战场景。
2. 搭建Xinference模型推理服务
2.1 创建并配置Python虚拟环境
我强烈建议大家在做任何Python项目时,都先创建独立的虚拟环境。这能完美解决不同项目依赖包版本冲突的问题,相当于给你的项目一个干净的“单间”。在Ubuntu上,我们用conda或者venv都行,这里我用更通用的conda来演示,如果你用venv,原理也是一样的。
首先,打开你的终端,我们创建一个名为xinference_env的虚拟环境,并指定Python版本为3.10(这是目前兼容性比较好的一个版本):
conda create -n xinference_env python=3.10 -y
创建完成后,激活这个环境。激活后,你的命令行提示符前面通常会显示环境名,这表示后续的所有操作都在这个环境里进行,不会影响系统全局的Python。
conda activate xinference_env
接下来安装Xinference。这里有个小技巧,为了下载速度更快,我们使用国内的镜像源。Xinference本体之外,我们还需要安装transformers和vllm这两个额外的功能包,transformers是Hugging Face的模型加载库,而vllm是一个高性能的推理引擎,能极大提升大模型的推理速度(虽然rerank模型不算特别大,但好习惯要保持)。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "xinference[transformers,vllm]"
安装过程可能会花几分钟,取决于你的网络。安装完成后,可


434

被折叠的 条评论
为什么被折叠?



