
本地化搭建 DeepSeek+RAGFlow构建个人知识库,附常见踩雷解决办法。
deepseek与ragflow构建知识库,解决docker拉取镜像超时问题,解决连接到github端口443失败:无法连接到服务器问题,配置docker镜像源,解决遇到docker compose 不认识-f 标识的报错问题。
一、为什么不直接使用网页版DeepSeek?
- 我们的需求:
- 绝对的隐私保护:联网使用大模型,数据会上传到DeepSeek服务器,隐私性无法得到绝对保证。
- 个性化知识库构建。
- 可能面临的场景:如果你希望大模型能根据你们企业的规章制度来回答问题,那么你一般需要上传企业规章制度的附件,但你仍然可能面临的问题:
- 数据隐私问题:联网使用大模型数据隐私性无法得到绝对保证。
- 上传文件的限制问题:网页版AI对于文件上传的数量、大小一般有限制并且通常需要付费。
- 仅通过附件扩展上下文功能有限:每次在新对话中提问相关问题时,仍需要重新上传附件;修改删除对话中已有的附件困难
二、如何实现网页版DeepSeek不能实现的需求?
- 隐私保护:通过对话大模型,如DeepSeek的本地部署解决隐私问题。
- 个性化知识库构建:
- 使用RAG技术(Retrieval-augmented Generation,检索增强生成)构建个人知识库,为此我们需要:
- 本地部署RAG技术所需要的开源框架RAGFlow。
- 本地部署Embedding大模型,或者直接部署自带Embedding模型的RAGFlow版本。
- 使用RAG技术(Retrieval-augmented Generation,检索增强生成)构建个人知识库,为此我们需要:
三、RAG技术和模型微调
- RAG和模型微调都是为了解决大模型的幻觉(在回答他不知道的问题的时候,会乱编)问题。
- RAG技术:在生成回答之前,通过信息检索从外部知识库中查找与问题相关的知识,增强生成过程中的信息来源,从而提升回答的质量及准确性,抽象为开卷考试。
- 模型微调:在已有的预训练模型的基础上,再结合特定任务的数据集进一步对其进行训练,使得模型在这一领域中表现得更好,抽象为考前复习。
- 很大程度上能解决幻觉问题,缺点:成本高。
实践证实:本地部署一个蒸馏后的大模型+RAG技术是一个出色的解决方案。
- 共同点:都是为了赋予模型某个领域的特定知识,解决大模型的幻觉问题。
- RAG技术的原理:
- 检索:当用户提出问题时,系统会从外部的知识库中检索出与用户输出相关的内容。
- 增强:系统将检索到的信息与用户的输入结合,扩展模型的上下文,然后再传给DeepSeek。
- 生成:生成模型基于增强后的输入生成最终的回答。
四、什么是Embedding?为什么需要这个模型?
- 检索的详细过程:
- 准备外部知识库:外部知识库可能来自本地的文件、搜索引擎结果、API等等。
- 通过Embedding嵌入模型,对知识库文件进行解析:Embedding的主要作用是将自然语言转化为机器可以理解的高维向量,并且通过这一过程捕获到文本背后的语义信息,比如不同文本间的相似度关系。
- 通过Embedding嵌入模型,对用户的提问进行处理。用户的输入同样会经过Embedding,生成一个高维向量。
- 拿用户的提问去匹配本地知识库:使用这个用户输入生成的高维向量,去查询知识库中相关的文档片段,在这个过程中,系统会利用某些相似度度量,如余弦相似度去判断相似度。
- 模型的分类:Chat模型、Embedding模型。
- 简而言之:Embedding模型是用来对你上传的文件进行解析的。
文本数据->Embedding->向量数据
五、本地部署全流程
- 下载ollama,通过ollama将DeepSeek模型下载到本地运行。
ollama是一个平台,存放了很多开源的大语言模型。
ollama也是一个工具,可以将模型下载到本地并运行。
- 下载RAGFlow源代码和Docker,通过Docker来本地部署RAGFlow。
- 在RAGFlow中构建个人知识库并实现基于个人知识库的对话问答。
具体实现:
1)下载ollama平台,通过ollama将DeepSeek和Embedding模型都下载到本地:
直接使用官方下载可能会比较慢,建议使用
- 进入https://github.com/ollama/ollama,找到页面右侧一栏中的"Releases",此处为实时更新的最新版本。
- 找到对应的版本并右键,复制链接地址。
- 进入github代理的一个地址http://ghfast.top,粘贴下载。
可见速度还是非常快的:
注:浏览器默认下载到C盘,磁盘空间不足需到浏览器设置中更改下载地址。
可以通过win + r键,输入cmd,输入ollama命令,下载成功的话,会输出相关内容。
扩展:下载的ollama和docker安装包,在安装解析时文件会自动安装到C盘,可以通过以下解决:
-
按
Win+R
输入regedit
打开注册表。 -
导航至:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
-
修改
ProgramFilesDir
和ProgramFilesDir (x86)
的值为E盘路径(如E:\Program Files
)
2)配置用户环境变量。
环境变量1:OLLAMA_HOST-0.0.0.0:11434
- 作用:让虚拟机里的RAGFlow能够访问到本机上的ollama。
- 如果配置后虚拟机无法访问,可能是你的本机防火墙拦截了端口11434。
- 不想直接暴露11434端口,用SSH端口转发来实现。
- 更新完两个环境变量记得重启。
环境变量2:OLLAMA_MODELS-自定义位置
作用:ollama默认会把模型下载到C盘,如果希望下载到其他盘需要进行配置。
3)通过ollama下载模型deepseek-r1:1.5b
(1)进入https://ollama.com/library/deepseek-r1,根据个人电脑配置及需求选择相对应的模型。
拿deepseek-r1:1.5b模型举例,1.5b就是15亿个参数,后面的1.1GB是所需电脑显存,而非内存。也可以下载其他模型,建议先下载小的模型,下载更快,后续可以更换模型。
(2)复制模型相对应的命令,在cmd中粘贴即可下载。
此处就是开始下载了。
4)下载docker
- docker镜像是一个封装好的环境,包含了所有运行RAGFlow所需的依赖、库和配置。
- 进入http://docker.com,下载相对应的版本,安装即可。
- 安装好后点击桌面的docker desktop,在登陆界面选择without sign up后面同样跳过即可。
- 还有很重要的一步,因为已有文件提供的镜像源不可用所造成拉取超时的问题,所以需要在docker中加一个国内可用的仓库:
如下为拉取时的报错:
解决办法:
Setting->Docker Engine->添加文本
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors":[
"https://hub.rat.dev"
]
}
5)下载RAGFlow
注意:需要提前下载Git!!!
进入https://git-scm.com/downloads,若出现无法打开的情况,将以下链接用迅雷app打开即可:https://github.com/git-for-windows/git/releases/download/v2.49.0.windows.1/Git-2.49.0-64-bit.exe
下载并安装好后,在cmd运行:
git clone https://github.com/infiniflow/ragflow.git
⚠️此处可能报错: 他告诉我们:“连接到github端口443失败:无法连接到服务器”。
解决办法:
这种连接失败的错误提示。这个问题常常与网络配置、代理设置或 VPN 环境的干扰有关。
此处共有两种情况:
(1)使用 VPN 环境下的解决方案:
1. 检查当前代理设置
首先,确认你系统的代理设置。通常,VPN 会配置一个本地代理端口来进行网络请求。你可以通过以下步骤检查代理端口:打开 设置 > 网络与互联网 > 代理,找到代理设置,并记录当前代理端口。假设端口号为 1234。
2. 配置 Git 使用代理
确保 Git 使用与系统代理设置相同的端口。可以通过以下命令配置 Git 的代理:
- git config --global http.proxy http://127.0.0.1:1234
- git config --global https.proxy http://127.0.0.1:1234
如果你的代理端口号是 1234,那么命令就如上所示。这样,Git 会通过该代理访问 GitHub,确保网络请求能够顺利传输。
3. 验证代理设置是否生效
在配置完成后,你可以使用以下命令验证代理设置是否正确:
- git config --global -l
这将列出当前的 Git 配置信息,确保其中的 http.proxy 和 https.proxy 设置为你刚刚配置的端口。
4. 刷新 DNS 缓存
有时 DNS 缓存可能会导致连接问题。在执行 Git 操作前,建议刷新系统的 DNS 缓存:Windows 用户:
- ipconfig /flushdns
Mac 用户:
- sudo dscacheutil -flushcache
- sudo killall -HUP mDNSResponder
刷新 DNS 缓存后,重新进行 Git 操作,看是否能够正常连接到 GitHub。
5. 重新尝试 Git 操作
在完成上述步骤后,尝试执行 git push 或 git pull 等 Git 命令,看看是否能成功连接并操作 GitHub。如果问题仍然存在,请检查网络连接是否稳定,或者尝试更换 VPN 服务器。
(2)未使用 VPN 环境下的解决方案:
如果你并未使用 VPN,但仍然遇到连接 GitHub 端口 443 失败的问题,那么可能是 Git 配置了代理,但实际并不需要。你可以按照以下步骤解决该问题:
1. 取消 Git 配置的代理
如果 Git 配置了代理,而你并不需要它,或者你的网络环境不适合使用代理,那么需要取消 Git 的代理设置。使用以下命令取消代理:
- git config --global --unset http.proxy
- git config --global --unset https.proxy
这两条命令将移除所有全局代理设置,恢复 Git 的默认直连模式。
2. 验证代理设置已成功移除
通过以下命令检查代理是否已经被成功移除:
- git config --global -l
如果没有显示 http.proxy 和 https.proxy 相关的条目,说明代理已经被成功移除。
3. 重试 Git 操作
取消代理设置后,重新执行 Git 操作,看看是否可以顺利连接到 GitHub。如果问题依然存在,建议检查本地网络连接,确保没有防火墙或其他网络配置阻止了端口 443 的访问。
解决问题后重新执行git命令即可:
git clone https://github.com/infiniflow/ragflow.git
6)修改.env文件
.env文件会默认下载slim版本的docker镜像,这个版本的镜像不包含Embedding模型,所以接下来要更改.env文件使其在运行时下载非slim版本的镜像,具体操作如下:
- 在刚刚下载好的ragflow文件中找到docker,进入.env文件:
ragflow->docker->.env
- 找到第84、87行代码,修改为下即可:
此处操作是将自动下载的slim版通过“#”注释掉,并且取消非slim版的注释。
7)配置docker镜像源:
🚃配置Docker镜像源
为了加速Docker镜像的拉取,建议将Docker镜像源更改为国内源。具体步骤如下:
- 进入docker文件目录
- 新建一个文本文档,将其改名为"daemon.json"
- 编辑以下内容:
{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "features": { "buildkit": true }, "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1panel.live", "https://registry.docker-cn.com", "https://cr.console.aliyun.com", "https://mirror.ccs.tencentyun.com", "https://huecker.io/", "https://dockerhub.timeweb.cloud", "https://noohub.ru/", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn", "https://xx4bwyg2.mirror.aliyuncs.com", "http://f1361db2.m.daocloud.io", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.registry.cyou", "https://docker-cf.registry.cyou", "https://dockercf.jsdelivr.fyi", "https://docker.jsdelivr.fyi", "https://dockertest.jsdelivr.fyi", "https://mirror.aliyuncs.com", "https://dockerproxy.com", "https://mirror.baidubce.com", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.edu.cn", "https://docker.mirrors.ustc.edu.cn", "https://mirror.iscas.ac.cn", "https://docker.rainbond.cc" ] }
8)利用提前编译好的docker镜像启动服务器:
-
进入docker目录:
cd ragflow
- 启动docker容器:
docker compose -f docker/docker-compose.yml up -d
⚠️此处可能会遇到docker compose 不认识-f 标识的报错。将命令及报错发给网页版deepseek,回答是:
AI:在 Windows 的 CMD 中遇到
unknown shorthand flag: 'f' in -f
错误,通常是因为命令格式或 Docker 环境配置问题。问题出在了未正确安装 Docker Compose 插件。
解决办法:
- 首先要下载compose插件:
进入https://github.com/docker/compose/releases/tag/v2.34.0找到合适版本点击下载。
- 将已下载好的.exe文件重命名为docker-compose.exe(去掉-Windows-x86_64部分)
- 将将文件移动到系统PATH环境变量包含的目录(例如 C:\Windows\System32),确保 CMD 能全局访问该命令。
- 运行
sudo move "E:\Google下载\docker-compose.exe" "C:\Windows\System32\docker-compose.exe
此处将示例地址改为正确地址即可。
- 检查是否安装成功
docker-compose --version
若输出:docker-compose version 1.29.2, build xxxxxxx即安装成功。
- 最后再次执行命令
docker-compose -f docker/docker-compose.yml up -d
注意:此处的命令与git官方教程中命令不同,加了一个"-"。
最后成功拉取,大概需要40min:
六、在ragflow中构建个人知识库并实现基于个人知识库的对话问答:
- docker成功启动后,浏览器输入localhost:80来访问ragflow。
更多推荐
所有评论(0)