微信扫码
添加专属顾问
我要投稿
打造专属AI助手,提升数据安全和效率。 核心内容: 1. DeepSeek面临的数据安全和功能限制问题 2. RAGFlow+DeepSeek本地部署方案的优势和配置需求 3. RAG技术原理与RAGFlow的部署流程
满血版DeepSeek虽然很好用,但仍然有三个主要缺陷:
为解决这三点问题,可采用RAGFlow+DeepSeek本地部署的方案。
这套方案对设备依赖性较高,因为需要使用Docker做部署+本地大模型进行推理,因此需要中高端设备。
以下我采用的设备配置为 i9-13900K + 64G内存 + 4090显卡,操作系统为windows10,实测发现,至少需要32G内存才能流畅运行。
如何本地部署DeepSeek在我之前的文章《DeepSeek-R1论文阅读及本地调用》已详细写过,这里不做赘述,文章链接:https://blog.csdn.net/qq1198768105/article/details/145627633
主要是通过Ollama进行模型下载,deepseek-r1包含了以下几个版本,网站上有对应的参数量和所需显存,对于4090显卡24G显存来说,最大是部署32b参数的版本,实测下来,加上windows本身图形化界面所占显存,总共显存占用约为22.1GB。
这里有两点需要补充说明,下载完ollama,先不用急着下载模型,先配置两个环境变量:
这里设置OLLAMA服务默认端口号为11434
,这里设置该环境变量,方便后续RAGFlow进行服务访问
OLLAMA默认的模型保存路径在C:\Users\用户名\.ollama
,未避免挤占C盘控件,可先设置到其他盘。
配置完重启,环境变量生效。
之后,执行ollama run deepseek-r1:32b
,即可自动下载32b的本地模型。
首先理解一下RAG(Retrieval-Augmented Generation)的技术原理:
通过这项技术,可有效减少模型的“幻觉”问题。
RAGFlow是基于RAG的一套大模型运行流水线,提供了完整的前端界面和数据存储方式,支持通过上传文件等方式,构建自己的知识库。
首先下载RAGFlow源码:https://github.com/infiniflow/ragflow
由于RAGFlow需要mysql、redis等数据库依赖,因此比较方便的做法是直接通过docker进行部署。
docker官网下载地址:https://www.docker.com/
准备好之后,开始部署流程:
仓库里docker文件夹下,有个.env
文件,其默认的镜像是不带embedding的轻量化版本,所谓embedding就是通过模型将文件编码成特征向量,方便后续模型在搜索资料时进行相似度匹配。 具体操作方式是将第84行注释,第87行取消注释,如下图所示:
中断进入到源码docker文件夹,执行
docker compose -f docker-compose.yml up -d
拉取完成后如图所示:
再执行
docker logs -f ragflow-server
启动RAGFlow服务,此时通过浏览器访问localhost:80
此时进入到RAGFlow的登陆界面,需要通过邮箱和密码进行登录,这些信息都存在本地的数据库,因此可以随意设置,此功能方便同一团队不同成员通过不同的账号进行登录。
登录完成,进入到主界面。
进入到设置界面,选择模型提供商,点击Ollama下面的添加模型。
这里模型类型选择chat
,模型名称输入deepseek-r1:32b
这里的名称需要和ollama中严格对应,如果忘了名称,可通过ollama list
查看当前所有模型名称。
基础Url设置为http://本机ip:11434
,最大token数尽可能设置大些即可。
进入到数据库配置界面,这里可以选择配置嵌入模型(embedding model),它默认带了几个,如果是中文,设置带zh
标记的模型。
配置完之后,上传文件,上传完之后,需要点击图中的运行键,执行文档解析,这样才能让模型访问到。
配置完成之后,进入到聊天模块,创建自己的Ai智能体,即可进行问答。
这里放一组对比,首先我直接访问DeekSeek的官网,问它你知道M3FD数据集吗
。
这个数据集的确是可见光和红外多模态数据集,但不是人脸检测数据,满血版的DeepSeek出现幻觉,回答错误。
下面我问一下我的专属Ai助理,我在知识库里,上传了一篇多模检测的论文,它的回答如下:
回答得很准确,并且给出了具体数据在参考资料具体出处。
搭建了这么好玩的一个玩意,自己玩可不行,还想给别人玩,下面就可通过云服务器实现外部的穿透访问。
在此之前,我已写过两篇文章,在我的云服务器上配置了Frps和Nginx的基础服务,因此一些初始配置方式不作赘述,文章链接:
1.【实用技巧】云服务器+FRP搭建自己的远程控制向日葵]:https://zstar.blog.csdn.net/article/details/145708943
下面的目的是通过子域名来绑定转发RAGFlow的服务。
记录名为子域名开头
,比如域名是zstar163.com
,子域名是zz.zstar163.com
,子域名开头
即为zz
,A记录,记录值为公网IP地址。
在frps.toml文件中,加入两个变量:
vhostHTTPPort = 7005
subdomainHost = "主域名"
注意,这里新版的frp的变量名vhostHTTPPort
和老版有所不同,老版的是vhost_http_port
,这里被资料误导过。
配置完成后,重启服务端frps服务。
这里在Frpc Desktop里面添加一个http的代理,名称任意,主要是代理本机的80端口,子域名为之前解析的子域名开头
。
修改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的穿透访问,出现登陆界面,完成访问。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-10-27
2024-09-04
2024-07-18
2024-05-05
2024-06-20
2024-06-13
2024-07-09
2024-07-09
2024-05-19
2024-07-07