【實用技巧】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.pswp.cn/bicheng/72227.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72227.shtml
英文地址,請注明出處:http://en.pswp.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 系列芯片上部署…