支持私有云部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


RAGFlow+DeepSeek搭建私人Ai助理

发布日期:2025-03-24 09:56:51 浏览次数: 1599 来源:我有一计
推荐语

打造专属AI助手,提升数据安全和效率。

核心内容:
1. DeepSeek面临的数据安全和功能限制问题
2. RAGFlow+DeepSeek本地部署方案的优势和配置需求
3. RAG技术原理与RAGFlow的部署流程

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

前言

满血版DeepSeek虽然很好用,但仍然有三个主要缺陷:

  1. 联网的DeepSeek无法解决数据安全问题,如果使用,数据将传输到其服务器,数据隐私性无法保证。
  2. 上传的文件存在限制,无法解决有多个文件的问题。
  3. 回答的内容存在幻觉,或是缺乏数据的泛泛而谈,不够精确。

为解决这三点问题,可采用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

  1. 个人主页搭建全流程(Nginx部署+SSL配置+DCDN加速:https://zstar.blog.csdn.net/article/details/145135743

下面的目的是通过子域名来绑定转发RAGFlow的服务。

  1. 首先在域名控制平台配置子域名解析

记录名为子域名开头,比如域名是zstar163.com,子域名是zz.zstar163.com子域名开头即为zz,A记录,记录值为公网IP地址。

  1. 配置frps.toml文件

在frps.toml文件中,加入两个变量:

vhostHTTPPort = 7005
subdomainHost = "主域名"

注意,这里新版的frp的变量名vhostHTTPPort和老版有所不同,老版的是vhost_http_port,这里被资料误导过。

配置完成后,重启服务端frps服务。

  1. 配置frpc客户端

这里在Frpc Desktop里面添加一个http的代理,名称任意,主要是代理本机的80端口,子域名为之前解析的子域名开头

  1. 配置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
  1. 完成访问

配置完之后,用户在浏览器内,访问子域名,服务器就先触发nginx的机制,将其转发到本机的7005端口,而这个端口信号又被frp转发到部署服务的80端口,最终实现了RAGFlow的穿透访问,出现登陆界面,完成访问。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询