【实用技巧】RAGFlow+DeepSeek搭建私人Ai助理

前言

满血版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
2. 个人主页搭建全流程(Nginx部署+SSL配置+DCDN加速:https://zstar.blog.csdn.net/article/details/145135743

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

  1. 首先在域名控制平台配置子域名解析,记录名为子域名开头,比如域名是zstar163.com,子域名是zz.zstar163.com子域名开头即为zz,A记录,记录值为公网IP地址。

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

vhostHTTPPort = 7005
subdomainHost = "主域名"

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

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

  1. 配置frpc客户端
    这里在Frpc Desktop里面添加一个http的代理,名称任意,主要是代理本机的80端口,子域名为之前解析的子域名开头
    在这里插入图片描述

  2. 配置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的穿透访问,出现登陆界面,完成访问。

在这里插入图片描述

参考资料

【保姆级教程】手把手教你DeepSeek + RAGFlow 构建个人知识库(含各种踩坑经验)跟着教程来,不怕学不会!
https://www.bilibili.com/video/BV1ZYPLegErb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72227.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Storm实时流式计算系统(全解)——中

storm编程的基本概念-topo-spout-bolt 例如下: storm 编程接口-spout的结构及组件实现 storm编程案例-spout组件-实现 这是我的第一个组件(spout组件继承BaseRichSput)所有重写内部的三个方法,用于接收数据(这里数据是…

【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别

老式路由器TPLINK,接入校园网后一人登录,所有人都能通过连接此路由器上网,无法解决遂上网搜索,无果,幸而偶然看到一个帖子说要把信号源网线接入路由器lan口,开启新世界。 一、wan-lan,lan-lan区…

Qt常用控件之旋钮QDial

旋钮QDial QDial 表示一个旋钮控件。 1. QDial属性 属性说明value当前数值。minimum最小值。maximum最大值。singleStep按下方向键时改变的步长。pageStep按下 pageUp/pageDown 的时候改变的步长。sliderPosition界面上旋钮显示的初始位置。tracking外观是否会跟踪数值变化&…

微服务笔记 2025/2/15

微服务是一种软件架构风格,它是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用。 微服务是一种架构。 微服务是一种架构。 微服务是一种架构。 以前自己做项目最常用的架构是单体架构。单体项目不适合开发大型项目。 学习微服务技术来解…

7-1JVMCG垃圾回收

一、GC的作用与原理 ​核心功能​ 自动识别并回收堆内存中不再被引用的对象,释放内存空间。 避免手动管理内存的复杂性(如C/C中的delete/free操作),降低内存泄漏风险。 ​判断对象可回收的方法​ ​可达性分析算法:…

yunedit-post ,api测试比postman更好

postman应该是大家最熟悉的api测试软件了,但是由于它是外国软件,使用它的高端功能注册和缴费都比较麻烦。生成在线文档分享也经常无法访问被拦截掉。 这里可以推荐一下yunedit-post,该有的功能都有。 https://www.yunedit.com/postdetail …

010 rocketmq批量消息

文章目录 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量发送可以提⾼发送性能,但有⼀定的限制: topic 相同 waitStoreMsgOK 相同 (⾸先我们建设消息的iswaitstoremsgoktrue(默认为true), 如果没有异常,我们将始终收到"O…

6.6.6 嵌入式SQL

文章目录 2个核心问题识别SQL语句主语言和SQL通信完整导图 2个核心问题 SQL语句嵌入高级语言需要解决的2个核心问题是:如何识别嵌入语句?如何让主语言(比如C,C语言)和SQL通信? 识别SQL语句 为了识别主语言中嵌入的SQL…

Windows安装sql server2017

看了下官网的文档,似乎只有ubuntu18.04可以安装,其他debian系的都不行,还有通过docker的方式安装的。 双击进入下载的ISO,点击执行可执行文件,并选择“是” 不要勾选 警告而已,不必理会 至少勾选这两…

RuoYi框架介绍,以及如何基于Python使用RuoYi框架

若依框架(RuoYi)是一款基于Spring Boot和Vue.js的开源快速开发平台,广泛应用于企业级应用开发。它提供了丰富的功能模块和代码生成工具,帮助开发者快速搭建后台管理系统。 主要特点 前后端分离:前端采用Vue.js&#x…

从零搭建Tomcat:深入理解Java Web服务器的工作原理

Tomcat是Java生态中最常用的Web服务器之一,广泛应用于Java Web应用的部署和运行。本文将带你从零开始搭建一个简易的Tomcat服务器,深入理解其工作原理,并通过代码实现一个基本的Servlet容器。 1. Tomcat的基本概念 Tomcat是一个开源的Servl…

京东云DeepSeek-R1模型一键部署教程,基于智算GCS【成本2元】

使用京东云智算一键部署DeepSeek-R1模型,京东云智算服务AI平台GCS支持DeepSeek-R1模型预装环境,支持1.5B、7B、32B及70B参数模型环境,用户可在GCS中快速启动,使用ChatbotUI或者Open-WebUI作为用户界面,进行测试并接入业…

Jenkins 自动打包项目镜像部署到服务器 ---(前端项目)

Jenkins 新增前端项目Job 指定运行的节点 选择部署运行的节点标签,dev标签对应开发环境 节点的远程命令执行配置 jenkins完整流程 配置源码 拉取 Credentials添加 触发远程构建 配置后可以支持远程触发jenkins构建(比如自建的CICD自动化发布平台&…

7.2 - 定时器之计算脉冲宽度实验

文章目录 1 实验任务2 系统框图3 软件设计 1 实验任务 本实验任务是通过CPU私有定时器来计算按键按下的时间长短。 2 系统框图 参见7.1。 3 软件设计 注意事项: 定时器是递减计数的,需要考虑StartCount<EndCount的情况。 /***********…

双机热备旁挂组网实验

1拓扑图 2.要求 1 、 SW3 的流量 正常情况下: SW1_VRF-->FW1--->SW1_Public--->R5 故障情况下: SW2_VRF-->FW2--->SW2_Public--->R6 2 、 SW4 的流量 正常情况下: SW2_VRF-->FW2--->SW2_Public--->R6 故障情…

2025春新生培训数据结构(树,图)

教学目标: 1,清楚什么是树和图,了解基本概念,并且理解其应用场景 2,掌握一种建图(树)方法 3,掌握图的dfs和树的前中后序遍历 例题与习题 2025NENU新生培训(树&#…

HTML 日常开发常用标签

文章目录 HTML 日常开发常用标签1、基本结构标签2、内容标签3、多媒体标签4、表单标签5、列表和定义标签6、表格标签7、链接和图像8、元数据9、语义化标签(HTML5新增)10、框架和内联11、交互12、过时或不推荐使用的标签 HTML 日常开发常用标签 1、基本结…

7.1.1 计算机网络的组成

文章目录 物理组成功能组成工作方式完整导图 物理组成 计算机网络是将分布在不同地域的计算机组织成系统,便于相互之间资源共享、传递信息。 计算机网络的物理组成包括硬件和软件。硬件中包含主机、前端处理器、连接设备、通信线路。软件中包含协议和应用软件。 功…

【AI论文】MedVLM-R1:通过强化学习激励视觉语言模型(VLMs)的医疗推理能力

摘要:推理是推进医学影像分析的关键前沿领域,其中透明度和可信度对于赢得临床医生信任和获得监管批准起着核心作用。尽管医学视觉语言模型(VLMs)在放射学任务中展现出巨大潜力,但大多数现有VLM仅给出最终答案&#xff…

国产RISCV64 也能跑AI

Banana Pi BPI-F3 进控时空 K1开发板 AI人工智能AI 部署工具使用手册_bianbu software-CSDN博客 文章置顶了 有兴趣的可以一起留言探索,非常有意思: 我最近接触到了进迭时空研发的 Spacengine™,这是一套能在进迭时空 RISC-V 系列芯片上部署…