DeepSeek+Xinference搭建本地知识库应用

Xinference 是一个新兴的强大平台,它旨在简化本地和云端模型的部署与管理,支持多样化的模型类型和硬件加速。

 


本文将详细介绍如何在 macOS 上安装和使用 Xinference,并对比它与 Ollama 的区别,最后演示如何将 Xinference 集成到 Chatbox、Dify等流行的本地化知识库应用中。

一、Xinference 简介

Xinference (Xorbits Inference) 是一个通用的推理平台,旨在为各种模型(可用于大语言模型(LLM),语音识别模型,多模态模型等各种模型的推理)提供统一的接口和服务。

它的主要特点包括:

  • 模型多样性: 支持多种模型类型,包括语言模型 (LLMs)、 embedding 模型、图像模型、音频模型等。

  • 硬件加速: 支持 CPU、GPU (NVIDIA, AMD, Intel) 和 Apple Silicon 等多种硬件加速。

  • 易于部署: 提供简单的命令行界面和 Python API,方便本地和云端部署。

  • 可扩展性: 支持分布式部署,可以轻松扩展以处理更大规模的推理任务。

  • 统一 API: 提供与 OpenAI API 兼容的接口,方便现有应用快速集成。

  • 模型管理: 内置模型库,方便模型发现、下载和管理。

二、Xinference vs. Ollama

Ollama 和 Xinference 都是流行的本地 LLM 部署工具,但它们在设计理念、功能和适用场景上存在一些差异:

特性OllamaXinference
模型类型主要专注于 LLMs,embedding支持多种模型类型 (LLMs, embedding, reranker,图像, 音频等)
硬件支持CPU, GPU (NVIDIA, AMD, Apple Silicon)CPU, GPU (NVIDIA, AMD, Intel, Apple Silicon)
易用性非常简单易用,一键安装,模型库丰富相对复杂一些,但功能更强大,可定制性更高
扩展性相对较弱,主要面向单机使用更强,支持分布式部署,可扩展性更好
API 兼容性部分兼容 OpenAI API完全兼容 OpenAI API
适用场景快速体验本地 LLMs,轻量级应用多样化模型需求,企业级应用,需要更高可定制性

总结:

  • Ollama: 更注重 简单易用,适合快速上手本地 LLM 体验,模型库丰富,但模型类型和扩展性相对有限。

  • Xinference: 更注重 强大和灵活,支持更多模型类型,更强的扩展性和可定制性,API 兼容性更好,适合更复杂的应用场景和企业级部署,但上手门槛稍高。

大家可以根据自身需求和技术水平选择合适的工具。如果只是想快速体验本地 LLM,Ollama 可能更简单;

如果需要更强大的功能和更灵活的配置,或者需要部署多种类型的模型,Xinference 则更适合。

三、macOS 安装 Xinference

在 macOS 上安装 Xinference 非常简单,只需几个步骤:

3.1 安装Python环境

Xinference 基于 Python 构建,你需要确保你的 macOS 系统已经安装了 Python (推荐 Python 3.8 及以上版本) 和 pip 包管理器。

brew install python

安装完成后,验证 Python 和 pip 版本:

python --version
pip --version

3.2 安装Xinference

使用 pip 命令安装 Xinference:

pip install xinference

等待安装完成。

 

3.3 安装硬件加速

Mac OS系统使用Metal的优化,也就是类似cuda的mps功能。

CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python

3.4 启动 Xinference 服务

安装完成后,使用以下命令启动 Xinference 服务:

XINFERENCE_MODEL_SRC=modelscope xinference-local --host 0.0.0.0 --port 9997

默认情况下,Xinference 服务会启动在 http://localhost:9997
如果运行报错:

执行下面的命令,安装socket库:

pip install socksio

运行成功后的界面:

 

四. 验证安装

打开浏览器访问 http://localhost:9997,如果看到 Xinference 的 Web UI 界面,则说明安装成功。

 

4.1 Xinference 基础使用

添加模型

安装下图的顺,依次选择即可。

选择模型的大小:

我们点击下面的火箭按钮开始部署后,在我们刚刚启动的终端中,可以看到模型的下载过程:

我们今天添加3个模型,分别是DeepSeek模型,Embedding模型和Reranker模型。

 

与模型交互

可以使用页面交互直接与模型 交互。

 

4.2 Xinference 集成应用

Xinference 的一个重要优势是其 OpenAI API 兼容性,这使得它可以轻松集成到许多支持 OpenAI API 的应用中。以下分别介绍如何将 Xinference 集成到 Chatbox、Dify 和 AnythingLLM 中。

集成 Chatbox

Chatbox 是一个流行的跨平台 AI 对话客户端,支持自定义 OpenAI API 服务。

步骤:

  1. 启动 Xinference 服务和模型实例 (如 deepseek)。

  2. 打开 Chatbox 应用,进入设置界面 (通常在左下角 "设置" 按钮)。

  3. 在 "模型提供商" 中,选择 "OpenAI Compatible API"。

  4. 在 "API 域名" 中,输入 Xinference 的 API 端点地址:http://localhost:9997/v1

  5. API Key 可以留空,因为 Xinference 默认不需要 API Key。

  6. 点击 "保存" 或 "应用" 按钮。

现在,你就可以在 Chatbox 中选择 Xinference 提供的模型 (例如deepseek-r1-distill-qwen-tjT7inPl) 进行对话了。

集成 Dify

Dify 是一个强大的 LLM 应用开发平台,可以用于构建各种 AI 应用,包括聊天机器人、知识库、自动化工作流等。

增加Embedding,模型名称和服务器URL都按图填写就可以。

嵌入模型和重排模型都添加后的如下图:

添加知识库如下图:

现在可以利用 Dify 的 RAG (Retrieval-Augmented Generation) 功能,结合 Xinference 构建本地私有知识库应用。

### Ollama 和 DeepSeek 知识库集成指南 #### 一、环境准备 为了成功集成Ollama和DeepSeek本地知识库中,需先准备好运行环境。确保安装Python解释器以及pip包管理工具,并配置好虚拟环境以便于项目依赖项的隔离。 #### 二、安装必要的软件包和服务 通过命令行执行如下操作来设置所需的开发环境: ```bash pip install ollama deepseek ``` 这一步骤会自动下载并安装两个主要组件——Ollama SDK和支持向量机(SVM)优化过的DeepSeek搜索引擎[^2]。 #### 三、初始化服务端口映射 启动前需要定义好各个微服务之间的通信协议及端口号分配方案。对于大多数应用场景而言,默认参数已经足够满足需求;但对于生产环境中,则建议根据实际情况调整这些设定以获得更佳性能表现。 #### 四、加载预训练模型 利用Ollama提供的API可以方便快捷地获取多个高质量的语言处理模型实例。下面是一个简单的例子展示如何加载一个名为`example_model`的大规模预训练语言模型(Large Language Model, LLM): ```python from ollama import load_model model = load_model('example_model') print(f"Model {model.name} loaded successfully.") ``` 此代码片段展示了基本的LLM加载流程[^1]。 #### 五、构建索引结构 针对特定领域文档集建立高效的检索机制是提高查询效率的关键所在。借助DeepSeek强大的自然语言理解能力(NLU),能够快速解析非结构化文本数据并将其转化为易于搜索的形式存储起来供后续使用: ```python import deepseek as ds indexer = ds.IndexBuilder() for doc_id, content in documents.items(): indexer.add_document(doc_id=doc_id, text=content) search_engine = indexer.build_index() query_result = search_engine.search(query="your query here", top_k=5) ``` 上述脚本说明了怎样创建自定义索引来支持复杂条件下的精准匹配功能[^3]。 #### 六、实现交互式问答界面 最后,在完成了以上准备工作之后就可以着手设计友好的前端页面让用户可以通过输入问题的方式得到满意的解答了。这里给出一段伪代码作为参考模板用于指导实际编码工作: ```html <!-- index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Knowledge Base Q&A</title> <script src="./static/js/app.js"></script> <body onload="init()"> <input type="text" id="questionInput"/><button onclick="askQuestion()">Ask!</button><br/> <div id="answerBox"></div> </body> </html> // app.js function init() { // Initialization logic... } async function askQuestion(){ const questionText = document.getElementById('questionInput').value; try{ let response = await fetch('/api/query', { method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify({query:questionText}) }); if(!response.ok){ throw new Error(`HTTP error! status:${response.status}`); } let data = await response.json(); displayAnswer(data); }catch(error){ console.error("Failed to get answer:",error.message); } } ``` 这段HTML与JavaScript组合而成的小程序实现了最基本的Web应用程序框架,允许用户提交问题并通过AJAX请求发送给服务器端进行处理后再返回结果呈现出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiangzhihong8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值