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])的更多相关文章

  1. 手把手教你从ESXI部署到vSphere web Client管理控制

    作为实验环境,一台物理机即可 既然是实验环境,那么首先把这个物理机装成ESXI6.5的宿主机并配置网络系统 第二步骤就是在ESXI上面导入OVF文件,注册一台虚机,作为数据管理中心 第三步骤就是基于这 ...

  2. 手把手教你用Docker部署一个MongoDB集群

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...

  3. 手把手教你vue配置请求本地json数据

    本篇文章主要介绍了vue配置请求本地json数据的方法,分享给大家,具体如下:在build文件夹下找到webpack.dev.conf.js文件,在const portfinder = require ...

  4. 从0开始,手把手教你开发并部署上线一个知识测验微信小程序

    上线项目演示 微信搜索[放马来答]或扫以下二维码体验: 项目源码 项目源码 其他版本 Vue答题App实战教程 Hello小程序 1.注册微信小程序 点击立即注册,选择微信小程序,按照要求填写信息 2 ...

  5. 手把手教你使用rpm部署ceph集群

    环境准备 1.在运行 Ceph 守护进程的节点上创建一个普通用户,ceph-deploy 会在节点安装软件包,所以你创建的用户需要无密码 sudo 权限.如果使用root可以忽略. 为赋予用户所有权限 ...

  6. 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)

    公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 ...

  7. 手把手教你写一个windows服务 【基于.net】 附实用小工具{注册服务/开启服务/停止服务/删除服务}

    1,本文适用范围 语言:.net 服务类型:windows服务,隔一段时间执行 2,服务搭建: 1,在vs中创建 console程序 2,在console项目所在类库右键 添加-新建项-选择Windo ...

  8. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(四)-使用Travis自动部署Hexo(2)

    前言 前面一篇文章介绍了Travis自动部署Hexo的常规使用教程,也是个人比较推荐的方法. 前文最后也提到了在Windows系统中可能会有一些小问题,为了在Windows系统中也可以实现使用Trav ...

  9. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(三)-使用Travis自动部署Hexo(1)

    前言 前面两篇文章介绍了在github上使用hexo搭建博客的基本环境和hexo相关参数设置等. 基于目前,博客基本上是可以完美运行了. 但是,有一点是不太好,就是源码同步问题,如果在不同的电脑上写文 ...

  10. 手把手教你Chrome扩展开发:本地存储篇

    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...

随机推荐

  1. 接口压力测试工具之go-wrk

    go-wrk 是一个用Go语言实现的轻量级的http基准测试工具,类似于wrk,本文将简单介绍一下如何使用go-wrk实现接口的性能(压力)测试. github地址:https://github.co ...

  2. SSD:清华出品,可切换密集稀疏的大模型预训练加速方案 | ICML'24

    来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Exploring the Benefit of Activation Sparsity in Pre-training 论文地址:https ...

  3. WxPython跨平台开发框架之表格数据导出到Excel并打开

    在 Python 中使用 wxPython 导出实体类列表数据到 Excel,通常可以借助 openpyxl 或 pandas 库来实现.本篇随笔由浅入深,逐步介绍导出Excel文件的操作,然后结合跨 ...

  4. 前端跨平台调试代理神器Whistle

    概述 抓包一直是平时开发中经常要做的,有一款好用的抓包工具可以让开发体验更棒,以前一直用fiddler,fiddler虽然强悍,但是入手有一定难度,而且较笨重,今天介绍另一款抓包工具:Whistle. ...

  5. R机器学习:重复抽样在机器学习模型建立过程中的地位理解

    在做机器学习项目的时候,一开始我们会将数据集分为训练集和测试集,要记住测试集只能用一次,只能用来评估最终最好的模型.如果你反复去使用测试集,反复测试后从里面挑最好的,你就是在耍流氓. 建模过程中肯定有 ...

  6. pip 安装 Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1123)'))

    1.问题 1.1 问题截取 pip install redis -i https://pypi.tuna.tsinghua.edu.cn/simple Looking in indexes: http ...

  7. shell脚本忽略错误继续执行

    在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行.如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set +e 命令来取消该设置. 例如,下面是一个忽略错误并继 ...

  8. 离线部署yum依赖

    利用本地源解决在无网环境部署应用需要解决的问题: 应用需要哪些软件包? 如何把应用依赖的软件包制作成一个精简的本地源? 如何使用本地源? 第一个问题使用yum-utils解决,它带的repotrack ...

  9. 鲲鹏cpu

    cat /etc/openEuler-release sudo dmidecode -t processor |grep Version   lscpu  

  10. 问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist

    https://cloud.tencent.com/developer/article/1993317 大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误& ...