DeepSeek+RAGFlow搭建本地知识库

934 阅读5分钟

下载本地DeepSeek

想要下载本地的DeepSeek需要通过Ollama进行本地部署

Ollama下载和安装

官网地址:https://ollama.com/ 傻瓜式安装就不赘述了 当下载完毕之后如何验证自己有没有安装成功?

  • 打开CMD,输入ollama 看到图中的页面就代表成功了

Pasted image 20250323111227.png

Ollama配置环境变量

默认情况下ollama是只允许本地机器进行访问的,但是到时候我们RAGFlow是通过docker进行运行的,docker就类似于另外一台机器,所以为了让后面RAGFlow可以访问到,需要进行修改

Pasted image 20250323124156.png 同时ollama默认是把模型下载到C盘的,如果不想要下载到C盘的话,那么需要在配置以下的环境变量,并且修改之后要重启电脑。变量值就是你想要下载的位置

Pasted image 20250327220059.png

DeepSeek模型下载

再次打开Ollama的地址,然后搜索Deep Seek-R1,选择自己对应的模型,复制红框中的内容

Pasted image 20250323112842.png 然后打开cmd进行粘贴回车,等待下载完成

Pasted image 20250323113046.png 出现success就代表成功了,并且可以进行对话

Pasted image 20250323123513.png 注意不要退出,后面会用到 如果退出了,那么就打开cmd输入ollama run deepseek-r1 进行启动

安装RAGFlow

RagFlow下载地址:github.com/infiniflow/…

Pasted image 20250323194533.png 任选一个方式进行下载 第一种方式的话就是 git clone https://github.com/infiniflow/ragflow.git

Pasted image 20250323194721.png

修改RAGFlow配置

如果不修改这个配置的话,那么RAGFlow默认下载的版本是没有embedding模型的。而下载完整版的RAGFlow是包含了这个embedding模型的 进入根目录下的docker文件夹,打开.env 文件 搜索 RAGFLOW_IMAGE
注释掉 RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.0-slim
解开注释 RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.0

Pasted image 20250323195125.png

什么是Embedding模型?

将文本(World、PDF等等)中的自然语言转换成机械可以理解的高维向量,然后通过向量之间的匹配和比对去捕获到单词或是句子背后的语义信息。 除了针对知识库的文本之外,还会针对用户输入的信息进行处理。 说人话就是,Embedding模型会把信息转换成对应的身份证,然后会匹配两个身份证最相似的数据

安装Docker环境

先打开启用或关闭Windows功能界面 ,随后打开红框中的内容,如果第一个红框没有的话那么看看有没有一个叫做虚拟机平台 的进行打开

Pasted image 20250327221632.png 随后使用管理员身份打开cmd,输入下面两个命令 第一个命令:wsl --set-default-version 2 ,将WSL的默认版本设置为2

Pasted image 20250327221926.png 第二个命令:wsl --update --web-download ,将WSL更新到最新版本

Pasted image 20250327222101.png 如果再平时不适用wsl的话可以使用这个命令进行关闭wsl --shutdown 随后进入docker官网下载:https://www.docker.com/ 下载安装成功之后打开cmd,输入docker 显示下面的内容就代表成功了

Pasted image 20250328201946.png 记得启动docker。 如果你在启动docker的时候但是一直在加载界面并且报错的话,报错内容看一下是不是下面这个

An unexpected error occurred
Docker Desktop encountered an unexpected error and needs to close.

Search our troubleshooting documentation ⁠ to find a solution or workaround. Alternatively, you can gather a diagnostics report and submit a support request or GitHub issue.

running engine: waiting for the Docker API: context deadline exceeded

如果是的话,那么请你使用管理员身份呢打开cmd,输入netsh winsock reset 并且重启电脑。另外记得关闭代理!!!等启动了之后在打开即可

安装RAGFlow

在修改文件的位置打开cmd,输入指令docker compose -f docker-compose.yml up -d

Pasted image 20250328212631.png 耐心等待安装,安装成功之后启动一下docker(在输入一下上面的指令)随后在浏览器中访问http://localhost/login ,注册一下账号就行

Pasted image 20250328221022.png

构建知识库

看图操作 打开cmd输入ollama list 就可以看到模型名称 打开cmd输入ipconfig 就可以看到ipv4的地址

Pasted image 20250328221653.png

Pasted image 20250328222131.png

Pasted image 20250328222315.png 这边这个地方根据自己的需求进行设置即可

Pasted image 20250328222742.png 上传自己的文件然后一定要解析

Pasted image 20250328223034.png 解析完毕之后就可以使用了,可以将蓝色背景的内容进行删掉,这样就不会遇到没有的内容时不进行回答了

Pasted image 20250328230413.png 看一下效果,具体的自己研究哈

Pasted image 20250328231819.png

其余知识点

RAG技术和模型微调的区别

  • RAG技术和模型微调都是为了解决大模型的幻觉问题
    • 什么是幻觉问题?
      • 大模型在回答不知道的问题的时候会进行胡说八道
  • 微调是指在已有的训练情况下结合特定的训练集任务进一步的进行训练(考前复习)
  • RAG是指在生成回答之前,通过信息检索从外部获取到参考内容增强生成的答案,提升回答质量和可信度(开卷考)

RAG技术的原理

RAG(Retrieval-Augmented Generation)

  • 检索:当用户提出问题的时候,系统会从外部的知识库中检索出和用户输入相关的内容
  • 增强:系统将检索的信息和用户的输入结合,扩展模型的上下文,然后再传给LLM
  • 生成:LLM基于增强后的输入生成最终的回答

检索的详细过程:

  • 整备外部知识库(本地文件、搜索引擎结果、API等等)
  • 通过Embedding(嵌入)模型,对知识库的内容进行解析,并且生成一个高维向量
  • 通过Embedding(嵌入)模型再次对用户输入的信息进行解析,并且也会生成一个高维向量
  • 拿用户的提问去匹配本地知识库:使用用户输入生成的高维向量去查询知识库中相关的文档片段,在这个过程中,系统会利用某些相似度度量(比如余弦相似度)去判断相似度

模型的分类

  • Chat模型:专门优化对话交互,能理解上下文,生成自然回复
  • Embedding模型:将文本转为向量,衡量语义相似度,不直接生成文本