基于DeepSeek(本地部署)和RAGFlow构建个人知识库
总结自视频(很强的小姐姐视频,讲解清晰明了):【知识科普】【纯本地化搭建】【不本地也行】DeepSeek + RAGFlow 构建个人知识库_哔哩哔哩_bilibili
1. 背景
deepseek官方网页版也虽然很强,能够满足绝大部分需求,但是存在局限。
(1)隐私问题,企业内部资料不方便上传,需本地部署;
(2)需定制回答格式和内容;
(3)需定义输入,以此限定问答的情景环境,且不需要每次问答都要上传大量文件;
(4)大模型幻觉问题;
2. RAG技术
RAG模型通过结合检索和生成两种机制,能够有效提升模型在特定任务上的表现。其核心思想是利用外部知识库中的相关信息,增强生成过程。具体来说,RAG模型首先通过检索模块从大规模知识库中检索出与输入相关的文档,然后将这些文档与输入一起输入到生成模块中,生成最终的输出。
3. RAG和模型微调的区别
微调是把知识学进模型了,RAG是临场问答时查阅资料再回答问题(边考边抄)。
对比维度 | RAG | 模型微调 |
---|---|---|
核心思想 | 结合检索(如公司内部资料或者网上实时资料)和生成,动态从外部知识库获取信息。 | 在预训练模型基础上,用任务数据调整参数以适应特定任务。 |
主要组件 | 检索模块 + 生成模块。 | 单一模型(如BERT、GPT)。 |
适用任务 | 知识密集型任务(如开放域问答、对话生成)。 | 特定任务(如文本分类、命名实体识别)。 |
优点 | 动态获取知识,生成结果更准确、丰富。 | 快速适应任务,数据效率高,计算成本低。 |
缺点 | 依赖外部知识库,计算成本高,实时性受限。 | 知识局限于预训练数据,无法动态获取新知识,可能过拟合。 |
4. 本地部署全流程
- 下载ollama,使用ollamap平台下载deepseek模型并本地运行;
- 下载RAGFlow源代码和Docker,通过Docker本地部署RAGFlow;
- 在RAGFlow中构建个人知识库并搭建对话系统。
4.1 ollama
Ollama平台一个专注于本地化运行和微调大型语言模型(LLMs)的工具,旨在让用户能够在自己的设备上高效地部署和管理大模型,而无需依赖云端服务。
Ollama平台的功能包括:模型下载与管理;模型运行与交互;模型微调;性能优化。
4.1.1 下载并安装Ollama平台软件
4.1.2 配置两个环境变量
OLLAMA_HOST: 0.0.0.0:11434
- 作用是让Docker虚拟机里面的RAGFlow能够访问本地的Ollama;
- 如果配置后的虚拟机无法访问Ollama,可能是本地防火墙拦截了11434端口;
- 不想直接暴露11434端口,也可以改用SSH端口转发来实现;
OLLAMA_MODELS: 自定义位置
- 作用是ollama默认将模型下载在c盘,模型太大,需另存。
设置环境变量后,需重启电脑。
4.1.3 Ollama平台下载模型deepseek-r1: 1.5b
打开ollama平台网站:Ollama
复制下载命令行。
cmd执行下载命令。下载速度好快~
到这一步,完成了deepseek本地部署
5. 通过docker本地部署RAGFlow
docker负责管理环境依赖,RAGFlow源码可以运行在此环境中。
5.1 下载RAGFlow和Docker
cmd执行命令:git clone https://github.com/infiniflow/ragflow.git
docker下载连接:Docker: Accelerated Container Application Development
5.2 安装docker
如何和电脑硬件不匹配,安装时会报如下错误。
安装docker过程中会提醒重启电脑,重启后继续安装docker。
在cmd输入docker,如果界面是如下,则说明docker安装成功。
5.3 安装RAGFlow
修改前面clone下来的ragflow工程docker环境文件,使其能够下载完整版ragflow(包含embedding模块)
注释84行,打开87行,如下。
保存后,cmd进入到ragflow/docker工程目录下,利用提前编译好的 Docker 镜像启动服务器。
执行命令安装启动ragflow:docker compose -f docker-compose.yml up -d
解决上面的问题,重启docker。
cmd进入docker安装目录:C:\Program Files\Docker\Docker
执行重启命令:DockerCli.exe -SwitchDaemon
重启cmd,再次执行docker命令。
如果出现上面这些红色报错,则多次执行上面的docker命令:docker compose -f docker-compose.yml up -d
如何尝试了5次还是不行,则修改成国内docker镜像源。
打开docker-desktop软件,点击设置。
添加国内镜像。
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docker.1ms.run"]
}
停止所有正在运行的容器
docker compose -f docker-compose.yml down -v
重新启动容器
docker compose -f docker-compose.yml up -d
上面这四个依赖在缓慢下载中。(没使用VPN-,大概需要20分钟下载完毕)
docker-desktop中也出现了刚拉取下来的镜像环境
执行成功后,下一次执行启动ragflow会很快。启动后默认是跑在localhost:80端口。进入页面。
注册登录ragflow。登陆后页面。
5.4 在RAGFlow构建个人知识库并实现对话问答
5.4.1 RAGFlow添加LLM模型
点击头像,找到模型提供商。
在模型提供商添加本地deepseek模型。
部署chat模型,不是embedding模型。查看本地模型名称。
ollama list
复制模型名称。
复制电脑ip地址。
ollama默认监听端口号是11434。
5.4.2 RAGFlow系统模型设置
在ragflow系统设置设置刚才添加模型的其他参数。
因为我们下载是完整版的ragflow,自带了嵌入模型(large,中文)。
5.4.3 构建个人知识库
添加后页面如下。
嵌入模型前面配置过了,这里还可以再改。解析方法可以选择解析简历、书籍、法律等,没啥特殊情况,可以简单选择general,其他参数是模型即可。
知识库建立好了。
添加知识库内的资料文档。并点击解析,解析会解析里面的文字,并通过embedding映射成高维向量。(这里资料文档是网上文档:员工手册(精简版)免费下载 - 人事星球,内部xxxx公司改成蟹宝王即可)。
5.4.4 构建定制助理
RAGFlow可以有很多知识库,知识库内有可以有很多很多知识文档,定制助理时可以有选择性的选取部分知识库作为参考资料。这样可以定制化助理的知识结构。
我这里前面只添加了一个知识库,所以只能选择一个知识库。
设置提示引擎(可以根据需求定制,这里使用默认设置)
回答的文本token数量可以设置大一点,不然回复字数太少。
构建助理成功,如下。
5.4.5 测试
新建聊天,进行测试。先声明知识库内的文档内容如下。看是否回答正确,助理会根据给她的知识库,并使用本地部署的deepseek-r1:1.5b模型,给出答案。
可以看到回复是完全正确的,并且会把引用标明出来, 推理和回复总时间是(5s左右,显卡是笔记本nvidia Quadro P620,非常低端)。
6. 只搭建个人知识库(不本地部署大模型)
即在线使用大模型。RAGFlow有自带的在线大模型。
接下来直接引用视频中小姐姐的话了。
“实现起来更简单,而且效果一般来说会更好。
步骤:
- 下载RAGFlow源代码和docker,通过docker本地部署RAGFlow(RAGFlow目前没有官方的网页版);
- 在RAGFlow中配置任意的Chat模型和Embedding模型(你需要到这些模型对应的官网去付费申请apiKey);
一般来说,直接使用在线模型肯定更简单,因为你不需要本地部署大模型了;然后直接使用企业的在线模型,性能肯定更优越,因为你在本地部署的模型参数量肯定没发跟人家比; 但是,使用在线模型,你无法保证数据的绝对隐私性,同时很多企业api虽然有免费额度,但是用着用着就会开始收费了。”
相关文章:
基于DeepSeek(本地部署)和RAGFlow构建个人知识库
总结自视频(很强的小姐姐视频,讲解清晰明了):【知识科普】【纯本地化搭建】【不本地也行】DeepSeek RAGFlow 构建个人知识库_哔哩哔哩_bilibili 1. 背景 deepseek官方网页版也虽然很强,能够满足绝大部分需求…...
微信小程序文件缓存处理的完善方案
以下是微信小程序文件缓存处理的 完善方案,涵盖存储管理、缓存策略、清理机制和异常处理,确保高效、可靠的文件缓存系统: 一、文件缓存架构设计 1. **存储分层**:- **内存缓存**:存储高频访问的小文件(Bas…...
Tailwind CSS 问题:npm error could not determine executable to run
问题与处理策略 问题描述 npx tailwindcss init -p在使用 Tailwind CSS 的前端项目中,执行上述指令,即初始化 Tailwind CSS 时,报如下错误 npm error could not determine executable to run# 报错npm 错误无法确定要运行的可执行文件问题…...
CAD2025电脑置要求
Windows 系统 操作系统:64 位 Microsoft Windows 11 和 Windows 10 version 1809 或更高版本。 处理器 基本要求:2.5-2.9GHz 处理器,不支持 ARM 处理器。 推荐配置:3GHz 以上处理器(基础),4GHz …...
javascript字符串截取有哪些
在 JavaScript 中,字符串截取主要通过以下方法实现,每种方法有不同的特性,适用于不同场景: 1. slice(startIndex, endIndex) 功能:从 startIndex 到 endIndex(不包含)截取子字符串。特性&#…...
使用CSS Grid布局时,如何避免元素重叠?
使用CSS Grid布局时,如何避免元素重叠? 文章目录 使用CSS Grid布局时,如何避免元素重叠?1. 引言2. 元素重叠的常见原因2.1 显式定位错误2.2 使用 grid-auto-flow: dense2.3 网格区域定义不明确2.4 内容尺寸超出预期 3. 解决策略3.…...
ALG(Alloy+Loki+Grafana)轻量级日志系统
ALG(AlloyLokiGrafana)轻量级日志系统 前提要求 GrafanaMinioNginxPrometheus Grafana日志收集系统旧版是PLG(ProtailLokiGrafana), Protail收集日志, Loki存储, Grafana展示, 后续的Protail不维护了, Grafana推出了Alloy代替Pritial, 除了收集日志外, 还集成管理Prometheus各种…...
Golang的网络流量控制
# Golang的网络流量控制 什么是网络流量控制? 网络流量控制是指针对网络数据传输过程中的流量进行管理和调控的一种技术手段。通过网络流量控制,我们可以对网络中的数据传输速率、带宽使用情况、数据包丢失率等进行监控和调整,以达到优化网络…...
MRI学习笔记-Meta分析之SDM-PSI
软件介绍 软件下载:https://www.sdmproject.com/software/ 软件教程: https://zhoubolin.netlify.app/posts/sdm-psi/sdm-psi Meta-analysis of Voxel-Based Neuroimaging Studies using Seed-based d Mapping with Permutation of Subject Images (…...
Spring Boot 项目中 Redis 常见问题及解决方案
目录 缓存穿透缓存雪崩缓存击穿Redis 连接池耗尽Redis 序列化问题总结 1. 缓存穿透 问题描述 缓存穿透是指查询一个不存在的数据,由于缓存中没有该数据,请求会直接打到数据库上,导致数据库压力过大。 解决方案 缓存空值:即使…...
3-9 WPS JS宏单元格复制、重定位应用(拆分单表到多表)
************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…...
Java集合面试篇
目录 1.概念 1.1.数组与集合的区别,用过哪些? 1.2.说说Java中的集合? 1.3.Java中的线程安全的集合是什么? 1.4.集合遍历的方法有哪些? 2.List 2.1.list可以一边遍历一边修改元素吗? 2.2.Arraylist和…...
C++入门——命名空间
C入门——命名空间 本期内容,我们正式进入C专栏。前几期内容中,我们用C语言实现了一些数据结构,包括顺序表,单链表,双向循环链表,栈和队列等等,为C的学习打下了基础。从现在开始,让…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例3: 行选择
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
pytest结合allure
Allure 一、文档二、指令三、装饰器3.1 allure.step装饰器3.2 allure.description装饰器3.3 allure.title装饰器3.4 allure.link、allure.issue 和 allure.testcase装饰器3.5 allure.epic、allure.feature 和 allure.story装饰器3.6 allure.severity装饰器 一、文档 allure文档…...
C++入门基础
文章目录 C核心特性详解(基础增强版)一、第一个C程序:Hello World完整代码解析新手常见问题 二、命名空间(详解版)1. 为什么需要命名空间?2. 命名空间使用场景3. 嵌套命名空间4. 匿名命名空间 三、输入输出…...
《大语言模型的原理发展与应用》:此文为AI自动生成
《大语言模型的原理发展与应用》:此文为AI自动生成 一、引言:大语言模型,AI 时代的 “新引擎” 在当今数字化浪潮中,大语言模型宛如一颗璀璨的明星,照亮了人工智能发展的道路,成为推动各领域变革的核心驱…...
SpringCloud系列教程(十三):Sentinel流量控制
SpringCloud中的注册、发现、网关、服务调用都已经完成了,现在就剩下最后一部分,就是关于网络控制。SpringCloud Alibaba这一套中间件做的非常好,把平时常用的功能都集成进来了,而且非常简单高效。我们下一步就完成最后一块拼图Se…...
[MySQL初阶]MySQL(4)基本查询
标题:[MySQL初阶]MySQL(4)基本查询 水墨不写bug 文章目录 一. 数据表设计二、对数据表的操作1. Create 操作(插入数据)查看最近受影响的行数: 2. Retrieve 操作(读取数据)࿰…...
使用Open WebUI下载的模型文件(Model)默认存放在哪里?
🏡作者主页:点击! 🤖Ollama部署LLM专栏:点击! ⏰️创作时间:2025年2月21日21点21分 🀄️文章质量:95分 文章目录 使用CMD安装存放位置 默认存放路径 Open WebUI下…...
Maven 私服的搭建与使用(一)
一、引言 在 Java 项目开发中,Maven 作为强大的项目管理和构建工具,极大地提高了开发效率,而 Maven 私服在开发过程中也扮演着至关重要的角色。私服是一种特殊的远程仓库,架设在局域网内,代理广域网上的远程仓库&…...
java每日精进 3.06 【多数据源】
数据库连接池(Database Connection Pool) 基本信息 是一种用于管理数据库连接的技术。它通过预先创建一定数量的数据库连接,并将其缓存在池中,供多个客户端或应用程序使用,从而减少了每次请求时连接数据库的开销。 …...
Leetcode 3469. Find Minimum Cost to Remove Array Elements
Leetcode 3469. Find Minimum Cost to Remove Array Elements 1. 解题思路2. 代码实现 题目链接:3469. Find Minimum Cost to Remove Array Elements 1. 解题思路 这一题我没啥特别好的思路,就只能动态规划了,倒是也能过,不过总…...
多线程-CompletableFuture
简介 CompletableFuture:异步任务编排工具。java 8中引入的一个类,位于juc包下,是Future的增强版。它可以让用户更好地构建和组合异步任务,避免回调地狱。 在CompletableFuture中,如果用户没有指定执行异步任务时的线…...
常用限流算法解析与实现
一、固定窗口计数器法 原理:在固定时间窗口(如1秒)内统计请求次数,超过阈值则触发限流。 Java实现: public class FixedWindowCounter { private static final long WINDOW_MS 1000; // 1秒窗口 priv…...
Swift系列02-Swift 数据类型系统与内存模型
Swift 是一门现代的、安全的编程语言,其类型系统和内存模型设计对性能和安全性有着重要影响。本文将深入探讨 Swift 的数据类型系统与内存模型,帮助你更好地理解并利用这些特性来优化你的 iOS 应用。本文主要包含: 值类型和引用类型…...
如何不重启,生效windows环境变量
场景 使用php 进行composer 时,composer 要求php7.2以上,我常用的是7.1,不想来回修改,还是重启电脑 临时修改 打印当前环境变量 echo %PATH%临时修改当前环境变量(如果需要指定的值,可将全部复制出来&a…...
Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(二):训练与推理
Ubuntu20.04本地配置IsaacLab4 4.2.0的G1训练环境(二):训练与推理 训练推理 写在前面,本文档的实现需要IsaacLab的成功安装,可参考(一)。 训练 在IsaacLab目录下,isaaclab的conda虚…...
设计模式说明
23种设计模式说明 以下是常见的 23 种设计模式 分类及其核心思想、应用场景和简单代码示例,帮助你在实际开发中灵活运用: 一、创建型模式(5种) 解决对象创建问题,降低对象耦合。 1. 单例模式(Singleton&…...
K8s 1.27.1 实战系列(四)验证集群及应用部署测试
一、验证集群可用性 1、检查节点 kubectl get nodes ------------------------------------------------------ NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane 3h48m v1.27.1 k8s-node1 Ready <none> …...
Artec Leo+Ray II 三维扫描仪成功为VR展数字化30吨重设备-沪敖3D
挑战:在贸易展上展示重达30吨的机械设备,同时克服设备搬运和展示的难题,减轻物流负担。。 解决方案:Artec Leo、Artec Ray II、Artec Studio、Blender、Unity、Microsoft HoloLens、HTC VIVE PRO 效果:在虚拟展厅中&am…...
Redis 各数据类型使用场景详解
1. 字符串(String) 场景 1:计数器(如文章阅读量) 问题: 高并发下对同一数值进行增减操作时,需保证原子性,避免竞态条件导致数据不一致。 频繁读写可能成为性能瓶颈。 解决方案&a…...
spark写数据库用连接池找不到driver类
最近遇到一个很离谱的bug,在写spark代码把数据写到mysql的时候考虑到连接的开销,所以用了HikariCP连接池,但是无语的是程序执行死活加载不到mysql的Driver类,但是解压了jar看到mysql-conn包就在lib下面,版本也是5.x的没…...
上传文件到对象存储是选择前端还是后端
对于云上对象存储的上传方式选择(前端直传或后端代理上传),需综合考虑安全性、性能、成本、业务需求等因素。 1. 推荐前端直传的场景 适用条件: 大文件上传(如视频、大型数据集)高并发场景(如…...
NanoMQ ds笔记250306
NanoMQ多版本下载地址 https://www.emqx.com/zh/downloads/nanomq NanoMQ官方文档 https://nanomq.io/docs/zh/latest/ NanoMQ 是一个专为物联网边缘计算设计的轻量级、高性能 MQTT 消息代理(Message Broker),由中国的开源物联网公司 EMQ 开…...
sqlmap:从基础用法到漏洞利用实战
1. sqlmap基础认知 sqlmap是一款开源的渗透测试工具,能自动检测和利用SQL注入漏洞,支持MySQL、Oracle、PostgreSQL等多种数据库管理系统。其设计旨在简化SQL注入检测流程,助力安全人员在复杂网络环境中快速定位与评估漏洞风险。它通过发送精…...
DFS学习笔记
题目描述 X 国王有一个地宫宝库。是 nm 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个格子中的宝贝价值…...
C++ STL string容器全解析
一、引言 在 C 编程的广阔领域中,字符串处理是一项极为基础且频繁的操作。从简单的文本解析,到复杂的文件读取与处理,字符串几乎无处不在。而 C 中的 string 容器,就像是一把瑞士军刀,为我们处理字符串提供了强大而便…...
React基础之项目创建
项目创建 create-react-app 项目名(小写) 运行 pnpm run start 在React中,使用的语法格式是jsx,也就是js与html相结合的形式 import logo from ./logo.svg; import ./App.css; function App() { return ( <div className"App"> <head…...
迷你世界脚本道具接口:Item
道具接口:Item 彼得兔 更新时间: 2023-04-26 10:26:18 继承自 Actor 具体函数名及描述如下: 序号 函数名 函数描述 1 getItemName(...) 获取道具名称 2 getItemId(...) 获取actor对应的道具ID,如球类等 3 getDropItemNum(...) …...
Unity摄像机跟随物体
功能描述 实现摄像机跟随物体,并使物体始终保持在画面中心位置。 实现步骤 创建脚本:在Unity中创建一个新的C#脚本,命名为CameraFollow。 代码如下: using UnityEngine;public class CameraFollow : MonoBehaviour {public Tran…...
计算机毕业设计SpringBoot+Vue.js青年公寓服务平台(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
vue实现日历签到效果
在工作任务进行时,有一个签到日历的功能需求要实现,经过文档查询和样式优化实现了需求,在此记录一下。 技术背景:vue2vant(样式控件) less 一个公共样式文件 html实现部分: <div class"calenderB…...
(十 八)趣学设计模式 之 观察者模式!
目录 一、 啥是观察者模式?二、 为什么要用观察者模式?三、 观察者模式的实现方式四、 观察者模式的优缺点五、 观察者模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,…...
笔记:在Git中.gitmodules文件的功能和作用和如何使用
一、目的:简单介绍下在Git中.gitmodules文件的功能和作用已经 .gitmodules 文件是 Git 子模块(submodule)功能的一部分,用于管理和配置子模块。子模块允许一个 Git 仓库包含另一个 Git 仓库作为其子目录,这对于管理依赖…...
Swift 常量
Swift 常量 引言 Swift 是一种由苹果公司开发的编程语言,主要用于 iOS、macOS、watchOS 和 tvOS 等平台的应用开发。在 Swift 中,常量是一种不可变的变量,它用于存储固定不变的值。了解和使用常量是 Swift 编程的基础,本文将详细介绍 Swift 常量的概念、类型、声明以及使…...
Ubuntu20.04双系统安装及软件安装(七):Anaconda3
Ubuntu20.04双系统安装及软件安装(七):Anaconda3 打开Anaconda官网,在右侧处填写邮箱(要真实有效!),然后Submit。会出现如图示的Success界面。 进入填写的邮箱,有一封Ana…...
Google AI概览升级,AI模式全新登场!
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
【智能体架构:Agent】LangChain智能体类型ReAct、Self-ASK的区别
1. 什么是智能体 将大语言模型作为一个推理引擎。给定一个任务, 智能体自动生成完成任务所需步骤, 执行相应动作(例如选择并调用工具), 直到任务完成。 2. 先定义工具:Tools 可以是一个函数或三方 API也…...
nginx 配置403页面(已亲测)
问题:GET请求访问漏洞url即可看到泄露的内网ip 解决方式: 1.配置nginx 不显示真实Ip 2.限制接口只能是POST请求 具体配置: 编写一个403.html 在nginx的配置文件中,配置location参数: location /api/validationCode…...