近期,DeepSeek-R1模型凭借其在数学推理、代码生成和自然语言推理Reasoning等领域的卓越性能,引起广泛关注,从AI界火出圈了。
很少有一种技术既能充当幕后扛旗的无名英雄,又能兼具网红明星的气质。
而DeepSeek做到了这一点。
作为提升生产力的利器,DeepSeek正吸引着众多个人开发者与企业用户的兴趣,他们纷纷寻求在本地环境中部署DeepSeek-R1模型,以充分利用其强大的AI能力。
随着大语言模型和RAG技术的快速发展,AI知识库系统正在全面渗透各行各业。
目前,我们已经在多个领域见证了其成功应用,包括跨境电商平台的智能客服、教育机构的个性化学习助手、医疗机构的诊断支持系统,以及餐饮行业的智能点餐服务等实际落地案例。
下面博主将详细介绍如何利用一张RTX 4090显卡在本地部署基于DeepSeek-R1(深度思考模型)和RAG技术的知识库系统(Knowledge Base System)。
该系统可广泛应用于智能客服、企业内部知识管理、学术研究及教育等多个领域,为企业智能化转型提供新动能,助力企业实现提质增效。
首先体验一下部署效果(图片来自MaxKB),一睹为快。
若有系统搭建或咨询需求,请留言或私信博主。












在数字化转型的浪潮下,个人和企业内部的信息管理面临着很大的挑战。传统的信息管理系统往往存在数据分散、检索效率低下、缺乏智-能化支持等问题。尤其是在面对海量非结构化数据时,企业难以快速提取有价值的信息,导致决策效率低下。
在专有领域,AI大模型LLM无法学习到所有的专业知识细节,因此在面向专业领域知识的提问时,无法给出可靠准确的回答,甚至会“胡言乱语”,这种现象称之为LLM的“幻觉”。
为此,实现AI大模型商用级知识库主要有两种方法:
第一种:通过专业知识的再训练或模型微调来增强模型能力,但这种方法需要大量标注数据和计算资源,成本高昂,对个人用户来说不太可行;
第二种:在向大模型提问时提供相关背景知识,使模型能够基于这些上下文信息生成更准确的回答。这种知识库构建方法的核心就是RAG(Retrieval-Augmented Generation,检索增强生成)技术。
RAG将信息检索与生成模型相结合,其核心流程是:
在生成回答前,先从外部知识库中检索相关信息,让模型能够引用训练数据之外的专业知识,使其在生成响应之前能够引用训练数据来源之外的权威知识库,再将检索结果与用户输入结合,指导生成模型输出更可靠的回答。
这种方法允许大型语言模型在不重新训练的情况下访问特定领域或组织的内部知识库,从而保持其输出的相关性、准确性和实用性。
检索增强生成(RAG)把信息检索技术和大模型结合起来,将检索出来的文档和提示词一起提供给大模型服务,从而生成更可靠的答案,有效地缓解大模型推理的“幻觉”问题。
作为商用级的知识库,不仅仅需要通过RAG和其它基础组件满足用户问题分类、敏感词检索等各类复杂场景需求,还能够内置强大的工作流引擎和函数库,支持业务流程编排,甚至是通过低代码实现可视化自定义工作流,从而指导大模型的工作过程,满足复杂业务场景下的需求,而这些则交由Agent智能体解决。
如果把AI大模型LLM比作学生的大脑,把RAG比作教材教辅,那么,就可以把Agent比作眼、耳、鼻、舌、身,协助LLM完成“应试教育”之外的“素质教育”。为了过五关斩六将,应对各种考试,学霸则需要LangChain这样的工程化框架,统筹以上各项能力的发挥。
实际上,LangChain提供了Models、Prompts、Indexes、Memory、Chains、Agents六大核心抽象,在降低系统实现复杂度的同时,提升系统整体的扩展性。它的能力边界只取决于LLM的智力水平和LangChain能提供的工具集的丰富程度。
一、整体框架
1、技术架构

- 硬件:一张RTX 4090显卡(24GB显存)
- 大语言模型:DeepSeek-R1-Distill-Qwen-32B(Qwen 320亿参数Q4量化版DeepSeek-R1蒸馏模型)
- 模型推理框架:vLLM
- 向量模型:text2vec-base-chinese
- Agent智能体框架:LangChain
- 向量数据库:PostgreSQL / PG Vector
- 前端:Vue.js、LogicFlow
- 后端:Python、Django
2、RAG 原理

二、本地部署DeepSeek
1、GPU显卡内存估算
如何准确计算大模型所需的显存大小,是许多开发者经常遇到的问题。掌握GPU内存的估算方法,并据此合理配置硬件资源以支持模型运行,是确保大模型成功部署和扩展的关键。这一能力也是衡量开发者对大模型生产环境部署和可扩展性理解程度的重要指标。
要估算服务大型语言模型所需的 GPU 内存,可以使用以下公式:
M = ( P ∗ 4 B ) ( 32 / Q ) ∗ 1.2 M=\frac{(P * 4 B)}{(32 / Q)} * 1.2 M=(32/Q)(P∗4B)∗1.2
- M是所需的 GPU 显卡内存(单位:GB千兆字节)。
- P是模型中的参数数量,表示模型的大小。例如,这里使用的 Llama 90B模型有 900 亿个参数,则该值将为 90。
- 4B表示每个参数使用 4 个字节。每个参数通常需要 4 个字节的内存。这是因为浮点精度通常占用 4 个字节(32 位)。但是,如果使用半精度(16 位),则计算将相应调整。
- Q是加载模型的位数(例如,16 位或 32 位)。根据以 16 位还是 32 位精度加载模型,此值将会发生变化。16 位精度在许多大模型部署中很常见,因为它可以减少内存使用量,同时保持足够的准确性。
- 1.2 乘数增加了 20% 的开销,以解决推理期间使用的额外内存问题。这不仅仅是一个安全缓冲区;它对于覆盖模型执行期间激活和其他中间结果所需的内存至关重要。

举例:以满血版DeepSeek-R1(671B参数、加载 16 位精度)为例,计算其推理所需的显存:
M = ( 671 ∗ 4 ) ( 32 / 16 ) ∗ 1.2 = 1610.4 G B M=\frac{(671 * 4)}{(32 / 16)} * 1.2 = 1610.4 GB M=(32/16)(671∗4)∗1.2=1610.4GB
这个计算告诉我们,需要大约1610.4 GB 的 GPU 显存来为 16 位模式下具有 6710 亿个参数的满血版 DeepSeek-R1 大模型提供推理服务。
因此,单个具有 80 GB 显存的 NVIDIA A100 GPU 或者 H00 GPU 不足以满足此模型的需求,需要至少20张具有 80 GB 内存的 A100 GPU 才能有效处理内存负载。
此外,仅加载 CUDA 内核就会消耗 1-2GB 的内存。实际上,无法仅使用参数填满整个 GPU 显存作为估算依据。
如果是训练大模型,则需要更多的 GPU 显存,因为优化器状态、梯度和前向激活每个参数都需要额外的内存。
2、选择模型
目前DeepSeek-R1系列模型在Huggingface上共计开源了8种。

完整系列一览(按参数规模排序):
- DeepSeek-R1 (671B)
- DeepSeek-R1-Zero (671B)
- DeepSeek-R1-Distill-Llama-70B
- DeepSeek-R1-Distill-Qwen-32B
- DeepSeek-R1-Distill-Qwen-14B
- DeepSeek-R1-Distill-Llama-8B
- DeepSeek-R1-Distill-Qwen-7B
- DeepSeek-R1-Distill-Qwen-1.5B
DeepSeek-R1系列的两大明星产品:
DeepSeek-R1-Zero:AI界的"极限探索者"
- 超强算力:6710亿参数(采用MoE架构,每个token可调动370亿参数)
- 创新训练:采用纯强化学习的端到端训练方式
- 突破性能:实现自我验证、长链推理等前沿能力
- 实战表现:在AIME 2024基准测试中取得71%的亮眼成绩
DeepSeek-R1:AI界的"全能冠军"
- 强大算力:同样拥有6710亿参数的超强实力
- 独特训练:创新性采用多阶段混合训练方法
- 双重加持:结合监督微调冷启动与强化学习优化
- 卓越成就:在AIME 2024测试中达到79.8%的惊人准确率
值得一提的是,DeepSeek团队通过知识蒸馏技术,成功将这些顶级模型的能力传承给更轻量级的版本。
这种创新方式不仅大幅降低了模型应用门槛,还提升了小型模型的推理能力,这正是DeepSeek在AI领域备受瞩目的重要原因之一。
DeepSeek-R1 蒸馏模型的几款小尺寸模型,是使用 DeepSeek-R1 生成的包含<think>...</think>标记的思考链数据进行微调后的蒸馏版本,继承了 R1的推理能力。
毕竟博主囊中羞涩,为了完成这篇文章,选择 bartowski/DeepSeek-R1-Distill-Qwen-32B-GGUF 的DeepSeek-R1-Distill-Qwen-32B大模型的4bit量化模型,根据上面的估算公式,仅使用1张具有 24 GB 内存的 4090 GPU 就可以运行完成本文所需的推理任务。
Qwen2.5-32B是一个通用的预训练语言模型,而DeepSeek-R1-Distill-Qwen-32B是基于Qwen2.5-32B使用DeepSeek-R1生成的包含<think>...</think>标记的思考链数据进行微调后的蒸馏版本,因此继承了R1的推理能力。
这些微调数据包含问题拆解、中间推导等推理过程,通过强化学习让DeepSeek-R1-Distill-Qwen-32B对齐了R1生成推理步骤的行为模式。通过这种蒸馏机制,小型模型既能保持计算效率,又获得了接近大模型的复杂推理能力,这在资源受限场景下具有重要应用价值。
3、选择模型推理服务器和推理框架
在选择模型后,本地部署面临的第二个问题便是如何选择推理服务器和推理框架 🤔
对于LLM推理服务器的选择,目前主要有三种方法。

第一种方法是将个人电脑或租用的服务器配置成一台LLM推理服务器,本文采取的便是这种搭建方式。
第二种方法是利用OpenAI、Anthropic等大型公司的LLM服务,只需通过API密钥直接调用,而无需访问其官网。
第三种方法是在云平台上构建LLM服务器,并调用该服务器的API,常见的选择包括阿里云、腾讯云、百度云、AWS、Azure、谷歌云,甚至Modal和SkyPilot等服务。
在具体选择时,一定要综合考虑成本,谨慎挑选最适合的模型。
为编写本文,博主租了一台带有一张RTX 4090 GPU 显卡的服务器(花费大概10元左右就能完成本文案例的部署,当然还需要一些降低费用的小技巧,比如提前租用配置的服务器把模型文件下载到服务器,这样就可以节省很多费用💰,具体情况可以关注本公众号咨询博主)。
模型推理服务器的配置如下:
- GPU:RTX 4090,24GB显存
- CPU:16 核,Xeon® Platinum 8352V
- 内存:90 GB
- 系统盘:30 GB
- 数据盘:50 GB(用于存放模型文件、分词器文件)
在选择模型推理服务器后,本地部署面临的第二个问题便是如何选择推理框架,今天我们就来盘一盘四大主流推理框架的优缺点:
🔥 四大天王对决:
1️⃣ SGLang - 大规模集群部署专家
2️⃣ Ollama - 轻量级玩家最爱
3️⃣ vLLM - GPU推理性能王者
4️⃣ LLaMA.cpp - CPU部署救星
💡 选择秘籍:
✅ 要极致性能 → 选vLLM
✅ 要简单易用 → 选Ollama
✅ 要集群部署 → 选SGLang
✅ 要CPU运行 → 选LLaMA.cpp
📊 性能对比:
- 推理速度:vLLM > SGLang > Ollama > LLaMA.cpp
- 易用程度:Ollama > LLaMA.cpp > vLLM > SGLang
- 硬件要求:vLLM(需GPU) > SGLang > Ollama > LLaMA.cpp
💼 实战建议:
- 单卡或双卡4090用户 → 闭眼入vLLM
- 个人开发者 → Ollama快速上手
- 企业级部署 → SGLang更专业
目前市面上关于如何用Ollama拉取Q4或Q8量化模型进行本地推理的教程已经层出不穷,Ollama 确实以简单易用俘获了一大批开发者,但如果你和我一样,追求的是生产环境的稳定高效,那么Ollama可能就不是你的菜了!
为什么我最终选择了 vLLM?
- 🚀 性能才是硬道理:Ollama 在高并发和推理速度上,相比 vLLM 真的弱了不少,尤其是在吃 GPU 算力的场景下。
- 🏭 生产环境 Real Talk:如果你是认认真真要搞生产部署 DeepSeek-R1,vLLM 这种专为生产设计的框架才是更稳的选择。
- 💻 RTX 4090 最佳拍档:单卡 4090 想发挥最大威力?vLLM 的优化更到位!SGLang 那种大规模集群方案,对我们来说就太重了。
4、搭建环境
如果模型推理服务器没有安装CUDA和cuDNN的话,需要自行安装CUDA和cuDNN,并配置环境变量,具体方法可以参考英伟达官网:


本文所需的的CUDA、cuDNN、Python和PyTorch版本如下:
- Linux版本:Ubuntu 22.04.3 LTS
- CUDA版本:12.1
- cuDNN版本:8.9.0
- Python版本:3.10.8
- PyTorch版本:2.5.1+cu124
读者可以使用VSCode、Cursor或者其它SSH客户端连接到云服务器,然后使用以下命令安装CUDA和cuDNN。
安装前需要确保服务器上已经安装了NVIDIA驱动,可以使用以下命令查看是否安装了NVIDIA驱动:
$ nvidia-smi
安装前,需要确保PyTorch与CUDA的版本对应,否则会报错。

- 安装CUDA 12.1
# 添加 CUDA 存储库
$ sudo apt update
$ sudo apt install -y software-properties-common
$ sudo add-apt-repository ppa:graphics-drivers/ppa
# 下载并安装 CUDA 12.1
$ wget https://developer.download.nvidia.com/compute/cuda/12.1/12.1.0/local_installers/cuda_12.1.0_520.61.05_linux.run
$ sudo sh cuda_12.1.0_520.61.05_linux.run
在安装过程中,选择是否安装 NVIDIA 驱动(如果你已经有安装过,可以跳过)。
设置环境变量:
# 在 .bashrc 中添加 CUDA 路径
$ echo "export PATH=/usr/local/cuda-12.1/bin:$PATH" >> ~/.bashrc
$ echo "export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc
$ source ~/.bashrc
- 安装cuDNN 8.9.0
要安装 cuDNN,首先需要从 NVIDIA 官方下载 cuDNN 8.9.0。
下载后,解压并安装 cuDNN。
# 假设 cuDNN 安装包下载到当前目录
$ tar -xzvf cudnn-12.1-linux-x64-v8.9.0.131.tgz
# 将 cuDNN 文件复制到 CUDA 路径
$ sudo cp cuda/include/cudnn*.h /usr/local/cuda-12.1/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-12.1/lib64
$ sudo chmod a+r /usr/local/cuda-12.1/include/cudnn*.h /usr/local/cuda-12.1/lib64/libcudnn*
# 更新库路径
$ echo "export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc
$ source ~/.bashrc
- 安装Python 3.10.8
# 安装 Python 3.10
$ sudo apt update
$ sudo apt install -y python3.10 python3.10-dev python3.10-distutils
# 设置 Python 3.10 为默认版本
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
# 检查 Python 版本
$ python3 --version
- 安装PyTorch 2.5.1
# 安装 pip
$ sudo apt install -y python3-pip
# 安装 PyTorch 2.5.1+cu124
$ pip install torch==2.5.1+cu124 torchvision torchaudio
# 验证安装
$ python -c "import torch; print(torch.__version__)"
- 验证安装
验证 CUDA 和 cuDNN 是否正确安装:
# 检查 CUDA 版本
$ nvcc --version
# 检查 cuDNN 版本
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
验证 PyTorc


1410

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



