新鲜速递:DeepSeek-R1开源大模型本地部署实战—Ollama + MaxKB 搭建RAG检索增强生成应用

在AI技术快速发展的今天,开源大模型的本地化部署正在成为开发者们的热门实践方向。最火的莫过于吊打OpenAI过亿成本的纯国产DeepSeek开源大模型,就在刚刚,凭一己之力让英伟达大跌18%,纳斯达克大跌3.7%,足足是给中国AI产业扬眉吐气了一回。

本文将手把手教大家如何利用DeepSeek-R1开源大模型,通过Ollama工具实现本地部署,并结合MaxKB搭建一个简单的RAG(检索增强生成)应用。

一、环境准备

在开始之前,请确保你的开发环境满足以下要求:

操作系统:Windows/Mac/Linux

Python版本:3.8及以上

硬件要求:建议使用NVIDIA显卡,至少16GB内存

安装工具:Git、Python3.9、pip、pytorch,实现请准备好CUDA驱动、pytorch的GPU版本

运行nvidia-smi命令可以查看CUDA版本

然后到https://developer.nvidia.com/cuda-toolkit-archive下载对应版本的CUDA Toolkit

接下来安装cuDNN:https://developer.nvidia.com/rdp/cudnn-archive,找好对应CUDA版本的cuDNN

再接下来安装pytorch,到官网https://pytorch.org/get-started/locally/

当环境准备妥当之后,进入python,输入import torch,再输入torch.cuda.is_available()回车,看看是不是True,如果不是,则说明安装的版本不正确,比如驱动版本不对、CUDA版本不对、python版本不对、pytorch版本不对,特别要注意使用了国内镜像安装pytorch的朋友,有可能默认命中的是cpu版本而不是gpu版本,必要时需要手动下载whl安装包进行安装。

如果还想要后续使用MaxKB作为界面的话,那么Windows还需要启动Hyper-V并安装Docker Desktop,Linux则安装一套docker就可以,这里不再赘述。

二、Ollama本地部署DeepSeek-R1

Ollama是一个轻量级的AI模型运行框架,支持多种开源大模型的本地化部署。以下是部署deepseek-r1的具体步骤:

1. 安装Ollama

打开终端,Linux输入以下命令安装Ollama:

bash 复制代码
curl -fsSL https://ollama.com/install.sh | sh

而Windows就相对更容易安装一些,直接到官网下载即可

2. 下载并安装DeepSeek-R1模型

使用Ollama拉取DeepSeek-R1模型,这里因为我用的是4090显卡,显存只有24G,所以最大能运行32b模型:

bash 复制代码
ollama run deepseek-r1:32b

如果下载速度较慢,可以尝试使用镜像源或代理加速。下载完成之后即可在命令行里进行问答。

其中的think标签即它的深度思考过程

默认情况下,Ollama会在http://localhost:11434端口提供API服务,后面搭建MaxKB会用到。

三、使用MaxKB搭建RAG应用

MaxKB是一个专注于文档问答的开源工具,支持与本地AI模型结合使用。以下是具体步骤:

1. 安装MaxKB

如果你是使用Linux操作系统,则在有docker的情况下运行

bash 复制代码
docker run -d --name=maxkb --restart=always -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data -v ~/.python-packages:/opt/maxkb/app/sandbox/python-packages cr2.fit2cloud.com/1panel/maxkb

如果用的是Windows操作系统,则运行

bash 复制代码
docker run -d --name=maxkb --restart=always -p 8080:8080 -v C:/maxkb:/var/lib/postgresql/data -v C:/python-packages:/opt/maxkb/app/sandbox/python-packages cr2.fit2cloud.com/1panel/maxkb

2. 配置DeepSeek-R1模型

用浏览器打开localhost:8080,按指示操作初始化管理员用户名和密码

然后到模型设置里手动填上deepseek-r1:32b模型

随后我们创建一个应用

然后我们设置这个应用,把刚才添加的AI模型选中,点击保存并发布

然后点击演示按钮,即可开始和deepseek-r1模型进行对话了

我们可以看到它在写代码方面非常出色

以下是它写出来的代码,效果还不错:

html 复制代码
<template>
  <div class="container">
    <h1 class="title">商品列表</h1>
    <a-row :gutter="24">
      <a-col v-for="item in products" :key="item.id" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
        <a-card class="product-card" hoverable>
          <template #cover>
            <div class="image-wrapper">
              <a-image v-if="item.picture" :src="item.picture" alt="商品图片" />
            </div>
          </template>
          <div class="card-content">
            <h3 class="product-name">{{ item.name }}</h3>
            <p class="product-description">{{ item.description }}</p>
            <div class="price-section">
              <span class="price">¥{{ item.price }}</span>
            </div>
            <div class="action-buttons">
              <a-button type="primary" style="background-color: #ff6600; border-color: #ff6600;">
                查看详情
              </a-button>
              <a-button style="margin-left: 8px; background-color: white; color: #ff6600; border-color: #ff6600;">
                加入购物车
              </a-button>
            </div>
          </div>
        </a-card>
      </a-col>
    </a-row>
  </div>
</template>

<script>
import { defineComponent } from 'vue';
import { Row, Col, Card, Image, Button } from 'ant-design-vue';

export default defineComponent({
  components: {
    ARow: Row,
    ACol: Col,
    ACard: Card,
    AImage: Image,
    AButton: Button
  },
  data() {
    return {
      products: [
        {
          id: 1,
          name: '商品名称1',
          price: 99.99,
          picture: 'https://via.placeholder.com/200x200',
          description: '这是一个商品的简要描述,展示商品的基本信息。'
        },
        // 其他商品数据...
      ]
    };
  }
});
</script>

<style scoped>
.container {
  padding: 24px;
  background-color: #f5f5f5;
}

.title {
  margin-bottom: 24px;
  color: #333;
  font-size: 28px;
  text-align: center;
}

.product-card {
  background-color: white;
  border-radius: 8px;
  transition: transform 0.2s;
  margin-bottom: 24px;
}

.product-card:hover {
  transform: translateY(-5px);
}

.image-wrapper {
  height: 200px;
  overflow: hidden;
  border-radius: 8px 8px 0 0;
}

a-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.card-content {
  padding: 16px;
}

.product-name {
  margin: 0 0 12px 0;
  color: #333;
  font-size: 18px;
}

.product-description {
  color: #666;
  font-size: 14px;
  line-height: 1.5;
  margin-bottom: 16px;
}

.price-section {
  margin-bottom: 16px;
}

.price {
  color: #ff6600;
  font-size: 20px;
  font-weight: bold;
}

.action-buttons {
  display: flex;
  gap: 8px;
  justify-content: space-between;
  align-items: center;
}
</style>

那么它生成这么多token,耗时是多少呢?后台可以看到的

按这么算,生成速度是95tokens每秒,这么棒的效果只需要一块不到2万的4090D,简直不敢相信,相当于2万给自己找了一个会深度思考的助手,而且不是月薪,是妥妥的买断。

四、实战:构建一个简单的RAG应用

将需要问答的文档上传到MaxKB的知识库中。支持的文件格式包括PDF、Word、PPT等。

然后建议你上传markdown文档作为知识库,解析效率比较好,上传完成后可以批量进行向量化并生成问题。

在设置应用的时候勾选关联知识库即可在回答前搜索知识库。

五、总结

通过本文的实践,我们成功地将DeepSeek-R1模型部署到本地,并结合MaxKB搭建了一个简单的RAG应用。这种方式不仅节省了云服务的成本,还能够更好地控制数据隐私和模型性能,随时都可以对模型的回答进行RAG知识库的微调。如果你对AI技术感兴趣,不妨可以尝试一下。

相关推荐
修己xj3 小时前
Anki:让记忆更高效、更智能的开源力量
开源
冬奇Lab8 小时前
一天一个开源项目(第17篇):ViMax - 多智能体视频生成框架,导演、编剧、制片人全包
开源·音视频开发
一个处女座的程序猿10 小时前
AI之Agent之VibeCoding:《Vibe Coding Kills Open Source》翻译与解读
人工智能·开源·vibecoding·氛围编程
一只大侠的侠11 小时前
React Native开源鸿蒙跨平台训练营 Day16自定义 useForm 高性能验证
flutter·开源·harmonyos
IvorySQL12 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
一只大侠的侠12 小时前
Flutter开源鸿蒙跨平台训练营 Day11从零开发商品详情页面
flutter·开源·harmonyos
一只大侠的侠13 小时前
React Native开源鸿蒙跨平台训练营 Day18自定义useForm表单管理实战实现
flutter·开源·harmonyos
一只大侠的侠13 小时前
React Native开源鸿蒙跨平台训练营 Day20自定义 useValidator 实现高性能表单验证
flutter·开源·harmonyos
晚霞的不甘13 小时前
Flutter for OpenHarmony 可视化教学:A* 寻路算法的交互式演示
人工智能·算法·flutter·架构·开源·音视频
晚霞的不甘14 小时前
Flutter for OpenHarmony 实现计算几何:Graham Scan 凸包算法的可视化演示
人工智能·算法·flutter·架构·开源·音视频