手把手教你在个人电脑部署本地知识库(基于RAGFlow + DeepSeek [+ Ollama])
1. 实现方案及准备工作
按照教程一步一步操作,基本没有什么太大难度,稍显麻烦的可能就是因网络问题有些资源无法下载,对于镜像无法下载的问题,文中也提供了替代的方法,但是github访问不稳定这点,如果你不是上网达人,只能找朋友求助了。
本文档提供了两种部署方法:半本地化部署、完全本地化部署,你可以根据自己的需求选择。
部署本地知识库的工具有很多,RAGFlow、FastGPT、DIFY、AnythingLLM等,他们各有特点,本文以RAGFlow为例。
本文讲述的是在Windows操作系统中进行的部署,但实际上在Linux系统中部署差别也不是很大,因为本文的部署主要是基于docker-compose。
1.1. 安装docker桌面版
docker桌面版用于容器化运行ragflow相关组件。
官网下载地址:https://www.docker.com/
下载后安装,一直下一步,直至安装成功。
这里有一点需要注意,很多虚拟机软件包括docker默认会使用Hyper-V,比如先安装vmware再安装docker后,可能就会引起冲突,建议先卸载本机上的虚拟机软件,再安装docker。
安装完成后,打开docker desktop(下文称docker桌面版),点右上角的设置(齿轮)按钮,选择Resource -> Advanced,修改此处的路径,下载的镜像、docker运行期间占用的虚拟磁盘空间,都会使用这个目录。

2. 半本地化部署
半本地化部署是指知识库工具部署在本地,但语言模型不部署在本地,而是接入互联网模型提供商提供的接口。这种方式对本机性能要求不算太高,但需要按用量付费,且文件安全性较完全本地化部署要差一些。
2.1. 克隆ragflow仓库
选择一个盘符,确保其剩余空间大于100GB。
打开docker桌面版,点击右下角的“Terminal”进入终端模式。

输入下面命令进入选择的盘符。
cd e:\
然后输入下面命令克隆仓库。
git clone https://github.com/infiniflow/ragflow.git

如果提示git命令不存在,可能是本机没有安装git,通过下列地址下载安装:https://git-scm.com/
因为github连接的不稳定性,这里可能会有一些问题,可根据报错自行上网寻找解决方法或向朋友求助。
克隆成功后,会创建E:\ragflow目录,执行如下命令。
cd ragflow
git checkout -f v0.16.0
2.2. 修改.env文件
在“我的电脑”中,进入刚刚克隆的目录,进入其子目录docker下,用文本编辑器打开.env文件。
决定要下载的版本,配置文件中提供了两个版本,一个是v0.16.0-slim(第84行),一个是v0.16.0(第87行),两者的区别是,前者不会预下载嵌入模型,默认会安装前者,为了方便这里改为后者。
修改前。

但因为DockerHub官方镜像源很早开始就无法访问了,直接修改还不行。如果你能正常下载,如上面修改就行;但大概率是不能正常下载的,这里提供了一种解决办法,可以按docker镜像无法下载问题解决中的步骤来操作。
操作完成后,将新的镜像地址填写进来。最终如下图。

.env的第二处修改,是将HF_ENDPOINT=https://hf-mirror.com这一行取消注释,因为一般情况下我们是访问不了huggingface。修改后如下。

第三处修改,包括多个组件的密码,比如MYSQL_PASSWORD(第46行),等号后面的值改为自己要设定的密码。

2.3. 修改docker-compose-base.yml文件
这个文件的修改并非强制,主要是指定挂载文件的路径,比如MySQL的数据文件存放目录。
如下图,我配置了将MySQL文件存放到e:\docker\ragflow\mysql目录下。

以下是代码文本,注意driver_opts:这一行必须与上一行对齐,type: none以及下面两行缩进两个字符间距。
driver_opts:
type: none
device: /e/docker/ragflow/mysql/
o: bind
还有一种情况,即默认的镜像无法下载成功时,使用docker官网镜像无法下载解决方法后,需要在这里修改镜像地址。
2.4. 启动容器
回到docker桌面版,确保此时位于ragflow目录。因为我用的是nvidia显卡,所以用docker-compose-gpu.yml文件来启动,如果是其他情况,可以用docker-compose.yml文件。
docker compose -f docker/docker-compose-gpu.yml up -d
初次运行,docker会下载多个镜像。如果出同下面这种错误,说明拉取镜像失败。

在前面修改.env文件时我们已经提到了,目前docker官网的镜像直接访问不了,请按docker镜像无法下载问题解决中的步骤来操作。
启动成功后,在Containers中就会出现ragflow相关组件。

2.5. 删除容器
只有需要修改配置文件时,才需要执行此操作。
使用下面的命令删除容器。
docker compose -f docker/docker-compose-gpu.yml down
修改配置文件后,再重新启动容器。
docker compose -f docker/docker-compose-gpu.yml up -d
3. 首次登录
在docker桌面版的Containers中,找到ragflow-server,点击其右侧的Show all ports。

点击80:80。

系统会在默认浏览器中打开登录地址http://localhost/login。
点击注册,来注册一个账号。

用注册的账号登录后,点击右上角English右侧的下拉图标,可将语言切换为简体中文。

4. 完全本地化部署
完全本地化部署是指所有组件都部署在本地,这一步并不是必须的,取决于你的需求,同时对电脑配置有一定要求。如果不需要,可以跳过这一步,继续从添加互联网模型开始。
4.1. 部署要求
系统:Windows、Linux均可,本文以Windows为例。
显卡:7B参数模型需要NVIDIA GeForce RTX 3060 Ti或更高端显卡,14B参数模型需要NVIDIA GeForce RTX 4080或更高端显卡。
内存:7B参数模型推荐32GB内存,14B参数模型推荐64GB内存。
CPU:Intel Core i5 12400或同级别以上CPU。
磁盘:剩余磁盘空间大于100GB。
4.2. 下载ollama并运行本地模型
ollama是一个模型管理工具,可以通过它下载多种不同模型。ollama官网地址:https://ollama.com/。
下载后安装,安装成功后在浏览器打开http://127.0.0.1:11434/。如果页面上显示Ollama is running,表示安装成功。如果下载页面加载失败,可以到github中下载OllamaSetup.exe,下载页面:https://github.com/ollama/ollama/releases。
仅下载ollama还不行,还必须下载需要的模型。
ollama默认将模型下载到C盘,因此我们需要修改模型下载目录。
1.打开系统设置,进入系统属性或系统变量设置。
2.创建一个新的系统变量或修改现有的环境变量,变量名为OLLAMA_MODELS。
3.将变量的值设置为ollama模型文件下载路径,例如d:\ollama。
设置完以后重启Ollama服务即可。
打开ollama官网,在导航栏上找到Models,点击进入。

在这个页面中可以搜索到各类模型,找到我们需要下载的模型。点击进入该模型详情页面。

在模型页面选择需要下载的参数规模,一般个人电脑最多只能支持到14b,然后点击右侧的“复制”按钮,复制下载模型的命令。

打开windows命令提示符工具(WIN +R快捷键,然后输入cmd,回车)。点击右键粘贴命令,回车,ollama会自动下载模型。

安装完成后,可以通过CTRL+D快捷键退出会话。

可以通过ollama list命令查看已安装的模型。

4.3. 添加本地模型
点击右上角的头像,在设置页面点击“模型供应商”,在列表中找到Ollama,点击其下方的“添加模型”。

模型类型根据情况选择。
chat:语言(会话、聊天)模型。
embedding:嵌入模型,用于将文本向量化。
rerank:重排模型,用于对检索结果进行再次排序,在ragflow中创建助理时,默认使用矢量余弦相似性进行这一处理,除非指定了rerank模型。
image2text:图片转文本模型。

模型名称必须与ollama中的名称一致,如想将deepseek-r1:7b添加为本地模型,就需要将其完整名称复制到文本框中。

基础Url:因为ragflow是基于docker运行,但是ollama是直接安装在宿主机的,因此基础Url填写:http://host.docker.internal:11434
API-Key:留空。
最大token数:根据需要填写,不超过8192。
填写完成后单击右下角“确定”。

如果要继续添加本地模型,可以点击ollama中的“添加模型”按钮,进行添加。

5. 添加互联网模型
本章中只描述半本地化部署的模型添加方法,完全本地化部署的模型添加方法请参考的添加本地模型步骤。
5.1. 获取API KEY
本文以DeepSeek为例,进入DeepSeek开放平台,https://platform.deepseek.com/。
在API Keys中,创建API key。然后复制并保存。

5.2. 添加模型
点击右上角头像。

点击“模型提供商”,在列表中找到自己期望的模型供应商,以DeepSeek为例,点击“添加模型”。

在弹出的窗口中填写上一步获取的API KEY,确定。

添加成功后,可以在页面上半部分的已添加模型列表中,看到刚刚添加的DeepSeek了。

6. 添加知识库与对话
6.1. 修改系统模型
在模型供应商中,点击右上角的“系统模型设置”。

在其中选择各类模型的默认模型,比如聊天模型选deepseek等。
嵌入模型和Rerank模型一般不必修改。
Img2txt、Sequence2txt、TTS这三种模型,可以等需要用到的时候,添加模型后,再来配置。其中img2txt模型用于识别图片,Sequence2txt模型用于识别语音,TTS模型用于生成语音。

6.2. 添加知识库
点击上方导航栏的“知识库”,进入知识库页面,点击右侧的“创建知识库”按钮。

在弹出窗口中,输入名称后确定,进入知识库配置页面。
设置知识库的各项参数。
文档语言:“中文”。
嵌入模型:默认不变。
解析方法:取决后面需要上传到知识库的文件类型,每一种在页面右侧都有说明和示例,我要上传的是一个存放在EXCEL中的问答对,所以我选择Q&A。
其他信息如果不懂就不调整。
确认后保存。

在数据集中新增文件,选择本地文件。

在弹出的窗口中,上传准备好的知识库文档。
上传成功后,单击文件右侧的解析按钮开始解析文件,解析成功后,解析状态会变为“成功”。

单击“检索测试”,在该页面中进行问答测试。通过调整相似度阈值和关键字相似度权重两个参数,来测试什么样的设置能获得相对精准的回答。

6.3. 创建对话
点击上方导航栏的“聊天”,再点击“新建助理”。

给助理设置一个姓名,最底部的知识库中选择刚刚创建的知识库。
然后点击窗口上方的“提示引擎”。

在窗口中根据需要修改提示词,因为我需要助手严格按知识库中的内容作答,不要回答其他内容,所以在默认的提示词基础上做了一点修改。
再根据上一步添加知识库时的测试,设置合适的相似度阈值和关键词相似度权重。

提示引擎设置完成后,点击窗口上方的“模型设置”。
选择期望使用的模型,以及模型的回复风格。
注意模型下拉列表中,Ollama下面的是本地模型,上面的DeepSeek是接入供应商的API,需要按用量付费的。实际使用中,我们要么选择半本地化部署,要么选择完全本地化部署,一般是不太会出现二者皆有的情况,这里只是为了方便演示。
最大token数,如果助手给出的回答中预估内容比较长,可以适当增加最大token数。
一切确定后,单击“确定”按钮,创建助手成功。

点击聊天右侧的“+”号,创建新的对话。

然后就可以开始对话了。

6.4. 分享助手
有时候助手需要分享给别人使用,点击右上角头像,进入API页面,点击API KEY按钮。

在弹出的窗口中点击“创建新密钥”,然后确定。

点击上方导航栏“聊天”,回到聊天页面。
鼠标光标停留在智能助手上方时,会出现一个设置按钮,将光标移动上去,在弹出的列表中选择“嵌入网站”。

将src后面引号内的内容复制出来,将localhost替换为本机IP或域名,就可以分享给别人使用了。

手把手教你在个人电脑部署本地知识库(基于RAGFlow + DeepSeek [+ Ollama])的更多相关文章
- 手把手教你从ESXI部署到vSphere web Client管理控制
作为实验环境,一台物理机即可 既然是实验环境,那么首先把这个物理机装成ESXI6.5的宿主机并配置网络系统 第二步骤就是在ESXI上面导入OVF文件,注册一台虚机,作为数据管理中心 第三步骤就是基于这 ...
- 手把手教你用Docker部署一个MongoDB集群
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...
- 手把手教你vue配置请求本地json数据
本篇文章主要介绍了vue配置请求本地json数据的方法,分享给大家,具体如下:在build文件夹下找到webpack.dev.conf.js文件,在const portfinder = require ...
- 从0开始,手把手教你开发并部署上线一个知识测验微信小程序
上线项目演示 微信搜索[放马来答]或扫以下二维码体验: 项目源码 项目源码 其他版本 Vue答题App实战教程 Hello小程序 1.注册微信小程序 点击立即注册,选择微信小程序,按照要求填写信息 2 ...
- 手把手教你使用rpm部署ceph集群
环境准备 1.在运行 Ceph 守护进程的节点上创建一个普通用户,ceph-deploy 会在节点安装软件包,所以你创建的用户需要无密码 sudo 权限.如果使用root可以忽略. 为赋予用户所有权限 ...
- 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)
公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 ...
- 手把手教你写一个windows服务 【基于.net】 附实用小工具{注册服务/开启服务/停止服务/删除服务}
1,本文适用范围 语言:.net 服务类型:windows服务,隔一段时间执行 2,服务搭建: 1,在vs中创建 console程序 2,在console项目所在类库右键 添加-新建项-选择Windo ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(四)-使用Travis自动部署Hexo(2)
前言 前面一篇文章介绍了Travis自动部署Hexo的常规使用教程,也是个人比较推荐的方法. 前文最后也提到了在Windows系统中可能会有一些小问题,为了在Windows系统中也可以实现使用Trav ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(三)-使用Travis自动部署Hexo(1)
前言 前面两篇文章介绍了在github上使用hexo搭建博客的基本环境和hexo相关参数设置等. 基于目前,博客基本上是可以完美运行了. 但是,有一点是不太好,就是源码同步问题,如果在不同的电脑上写文 ...
- 手把手教你Chrome扩展开发:本地存储篇
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...
随机推荐
- 0-JavaScript入门
1.1 JS用途 JavaScript属于一门脚本语言,可用于前端给网页添加一些动态效果. 也可用于node平台,开发服务器 React.Vue框架底层也是通过JS实现 1.2 JS组成 前端分为三层 ...
- 论文解读《LightRAG: Simple and Fast Retrieval-Augmented Generation》
博客:https://learnopencv.com/lightrag 视频:https://www.youtube.com/watch?v=oageL-1I0GE 代码:https://github ...
- 小程序 + node koa2 session存储验证码碰到最大的坑,(喜极而泣 /狗头)
问题:session存验证码.本地拿postman测试了半天,都没有问题. 但到了小程序,服务端再获取(ctx.session.verifyCode)就一直提示不存在.undefined 小程序会 ...
- 技术实践|Hive数据迁移干货分享
导语 Hive是基于Hadoop构建的一套数据仓库分析系统,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能.它的优点是可以通过类SQL语句快速实现简单的MapReduce统计,不 ...
- bug记录:Vue.use 加载 TabPane ,浏览器卡死
问题描述 Vue.use 加载 TabPane ,浏览器卡死 原因分析 参考资料:https://blog.csdn.net/ye987987/article/details/103780297 经过 ...
- linux shell移植,sh不支持数组及bash移植
查看此时系统shell ls -al /bin/sh Linux 操作系统缺省的 shell 是Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,与 Bou ...
- Qt数据库应用20-csv文件转xls
一.前言 最近又多了个需求就是将csv格式的文件转xls,需求一个接着一个,还好都是真实的需求,而且都是有用的需求,并不是不靠谱的需求,不靠谱的需求就比如程序自动识别手机壳颜色自动换背景颜色或者边框颜 ...
- ERROR: SSL peer shut down incorrectly错误解决(Android Studio)
错误信息:ERROR: SSL peer shut down incorrectly错误解决(Android Studio) 错误原因:android studio在下载"gradle-4. ...
- 海量用户IM聊天室的架构设计与实践
本文由网易云信资深服务端开发工程师曹佳俊分享,本文收录时有内容修订和重新排版. 1.引言 聊天室是一类非常重要的 IM 业务形态,不同于单聊和群聊,聊天室是一种大规模的实时消息分发系统.聊天室有多种技 ...
- 开源即时通讯IM框架MobileIMSDK的微信小程序端开发快速入门
一.理论知识准备 您需要对微信小程序开发有所了解: 1)真正零基础入门学习笔记系列 2)从零开始的微信小程序入门教程 3)最全教程:微信小程序开发入门详解 您需要对WebSocket技术有所了解: 1 ...