前言
满血版DeepSeek虽然很好用,但仍然有三个主要缺陷:
- 联网的DeepSeek无法解决数据安全问题,如果使用,数据将传输到其服务器,数据隐私性无法保证。
- 上传的文件存在限制,无法解决有多个文件的问题。
- 回答的内容存在幻觉,或是缺乏数据的泛泛而谈,不够精确。
为解决这三点问题,可采用RAGFlow+DeepSeek本地部署的方案。
1. 配置准备
这套方案对设备依赖性较高,因为需要使用Docker做部署+本地大模型进行推理,因此需要中高端设备。
以下我采用的设备配置为 i9-13900K + 64G内存 + 4090显卡,操作系统为windows10,实测发现,至少需要32G内存才能流畅运行。
2. DeepSeek本地部署
如何本地部署DeepSeek在我之前的文章《DeepSeek-R1论文阅读及本地调用》已详细写过,这里不做赘述,文章链接:https://blog.csdn.net/qq1198768105/article/details/145627633
主要是通过Ollama进行模型下载,deepseek-r1包含了以下几个版本,网站上有对应的参数量和所需显存,对于4090显卡24G显存来说,最大是部署32b参数的版本,实测下来,加上windows本身图形化界面所占显存,总共显存占用约为22.1GB。
这里有两点需要补充说明,下载完ollama,先不用急着下载模型,先配置两个环境变量:
- OLLAMA_HOST:0.0.0.0:11434
这里设置OLLAMA服务默认端口号为11434
,这里设置该环境变量,方便后续RAGFlow进行服务访问
- OLLAMA_MODELS:设置为自己模型保存路径
OLLAMA默认的模型保存路径在C:\Users\用户名\.ollama
,未避免挤占C盘控件,可先设置到其他盘。
配置完重启,环境变量生效。
之后,执行ollama run deepseek-r1:32b
,即可自动下载32b的本地模型。
3. RAGFlow部署
首先理解一下RAG(Retrieval-Augmented Generation)的技术原理:
- 检索(Retrieval):当用户提出问题时,系统会从外部的知识库中检索出与用户输入相关的内容。
- 增强(Augmentation):系统将检索到的信息与用户的输入结合,扩展模型的上下文。这让生成模型(也就是Deepseek)可以利用外部知识,使生成的答案更准确和丰富。
- 生成(Generation):生成模型基于增强后的输入生成最终的回答。它结合用户输入和检索到的信息,生成符合逻辑、准确且可读的文本内容。
通过这项技术,可有效减少模型的“幻觉”问题。
RAGFlow是基于RAG的一套大模型运行流水线,提供了完整的前端界面和数据存储方式,支持通过上传文件等方式,构建自己的知识库。
首先下载RAGFlow源码:https://github.com/infiniflow/ragflow
由于RAGFlow需要mysql、redis等数据库依赖,因此比较方便的做法是直接通过docker进行部署。
docker官网下载地址:https://www.docker.com/
准备好之后,开始部署流程:
3.1 修改源码镜像
仓库里docker文件夹下,有个.env
文件,其默认的镜像是不带embedding的轻量化版本,所谓embedding就是通过模型将文件编码成特征向量,方便后续模型在搜索资料时进行相似度匹配。 具体操作方式是将第84行注释,第87行取消注释,如下图所示:
3.2 拉取镜像
中断进入到源码docker文件夹,执行
docker compose -f docker-compose.yml up -d
拉取完成后如图所示:
3.3 启动RAGFlow服务
再执行
docker logs -f ragflow-server
启动RAGFlow服务,此时通过浏览器访问localhost:80
此时进入到RAGFlow的登陆界面,需要通过邮箱和密码进行登录,这些信息都存在本地的数据库,因此可以随意设置,此功能方便同一团队不同成员通过不同的账号进行登录。
登录完成,进入到主界面。
3.4 配置模型
进入到设置界面,选择模型提供商,点击Ollama下面的添加模型。
这里模型类型选择chat
,模型名称输入deepseek-r1:32b
这里的名称需要和ollama中严格对应,如果忘了名称,可通过ollama list
查看当前所有模型名称。
基础Url设置为http://本机ip:11434
,最大token数尽可能设置大些即可。
3.5 配置数据库
进入到数据库配置界面,这里可以选择配置嵌入模型(embedding model),它默认带了几个,如果是中文,设置带zh
标记的模型。
配置完之后,上传文件,上传完之后,需要点击图中的运行键,执行文档解析,这样才能让模型访问到。
3.6 问答配置
配置完成之后,进入到聊天模块,创建自己的Ai智能体,即可进行问答。
这里放一组对比,首先我直接访问DeekSeek的官网,问它你知道M3FD数据集吗
。
这个数据集的确是可见光和红外多模态数据集,但不是人脸检测数据,满血版的DeepSeek出现幻觉,回答错误。
下面我问一下我的专属Ai助理,我在知识库里,上传了一篇多模检测的论文,它的回答如下:
回答得很准确,并且给出了具体数据在参考资料具体出处。
4. FRP配置外部访问
搭建了这么好玩的一个玩意,自己玩可不行,还想给别人玩,下面就可通过云服务器实现外部的穿透访问。
在此之前,我已写过两篇文章,在我的云服务器上配置了Frps和Nginx的基础服务,因此一些初始配置方式不作赘述,文章链接:
1.【实用技巧】云服务器+FRP搭建自己的远程控制向日葵]:https://zstar.blog.csdn.net/article/details/145708943
- 个人主页搭建全流程(Nginx部署+SSL配置+DCDN加速:https://zstar.blog.csdn.net/article/details/145135743
下面的目的是通过子域名来绑定转发RAGFlow的服务。
- 首先在域名控制平台配置子域名解析
记录名为子域名开头
,比如域名是zstar163.com
,子域名是zz.zstar163.com
,子域名开头
即为zz
,A记录,记录值为公网IP地址。
- 配置frps.toml文件
在frps.toml文件中,加入两个变量:
vhostHTTPPort = 7005
subdomainHost = "主域名"
注意,这里新版的frp的变量名vhostHTTPPort
和老版有所不同,老版的是vhost_http_port
,这里被资料误导过。
配置完成后,重启服务端frps服务。
- 配置frpc客户端
这里在Frpc Desktop里面添加一个http的代理,名称任意,主要是代理本机的80端口,子域名为之前解析的子域名开头
。
- 配置nginx文件
修改nginx配置文件,我的默认路径是/etc/nginx/nginx.conf
添加一个额外的server块,内容如下,子域名替换成待访问的完整子域名。
server {
listen 80;
server_name 子域名;
location / {
proxy_pass http://127.0.0.1:7005;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
配置完之后,重启nginx
sudo systemctl restart nginx
- 完成访问
配置完之后,用户在浏览器内,访问子域名
,服务器就先触发nginx的机制,将其转发到本机的7005
端口,而这个端口信号又被frp转发到部署服务的80端口,最终实现了RAGFlow的穿透访问,出现登陆界面,完成访问。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。