新鲜速递: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技术感兴趣,不妨可以尝试一下。

相关推荐
小华同学ai10 小时前
Van-Nav:新年,将自己学习的项目地址统一整理搭建自己的私人导航站,供自己后续查阅使用,做技术的同学应该都有一个自己网站的梦想
学习·gitee·开源·github
杨荧11 小时前
【开源免费】基于Vue和SpringBoot的美食推荐商城(附论文)
前端·javascript·vue.js·spring boot·开源
时光追逐者17 小时前
一组开源、免费、Metro风格的 WPF UI 控件库
ui·开源·c#·.net·wpf·.netcore·微软技术
杨荧17 小时前
【开源免费】基于Vue和SpringBoot的常规应急物资管理系统(附论文)
前端·javascript·vue.js·spring boot·开源
timer_01717 小时前
网易有道开源 “子曰 - o1” 推理模型
开源
若年封尘1 天前
OpenAI的真正对手?DeepSeek-R1如何用强化学习重构LLM能力边界——DeepSeek-R1论文精读
开源·openai·强化学习·deepseek·deepseek-r1
ai产品老杨1 天前
能够对设备的历史数据进行学习与分析,通过与设备当前状态的比对,识别潜在故障并做出预判的名厨亮灶开源了。
vue.js·人工智能·学习·安全·开源·音视频
编程乐趣2 天前
可视化任务调度框架:15个热门.Net开源项目
开源·.net
说私域2 天前
数字化创新者如何利用开源2+1链动模式AI智能名片S2B2C商城小程序源码重塑市场地位
大数据·人工智能·小程序·开源