💻 DeepSeek+RAGFlow构建个人知识库

RAGFlow
RAGFlow 是一个基于 RAG 技术的知识库构建工具,它可以帮助用户快速构建个人知识库。 (RAG: Retrieval-Augmented Generation 的缩写,是一种基于检索的生成技术。)

DeepSeek
DeepSeek 是一个基于 AI 技术的智能助手,它可以帮助用户快速构建个人知识库。

为什么要使用RAG技术 & RAG和模型微调的区别

原因:→ 解决大模型幻觉问题 \

区别:

  • 模型微调:在已有的预训练模型基础上,再结合特定任务的数据集进一步对其进行训练,以提高模型在特定任务上的表现。
  • RAG: 在生成回答之前,通过信息检索从外部知识库查找与问题相关的信息,并将其与模型生成的回答相结合,以提高回答的准确性和相关性。
    【可以理解为: 微调 → 靠前复习,RAG → 考试带小抄】

补充:RAG的原理

  • 检索 Retrieval:从外部知识库中查找与问题相关的信息。
  • 增强 Augmentation:将检索到的信息与用户的输入结合,扩展模型的上下文,再传给模型生成回答。
  • 生成 Generation:模型根据扩展后的上下文生成回答。(参考了外部知识库的内容,所以回答更准确、更相关)

补充:Embedding模型
在RAG中(检索 Retrieval的过程),Embedding模型用于将文本转换为向量,以便于在知识库中进行检索。(将自然语言转化为机器可以理解的高纬向量,并且通过这一过程捕获到文本背后的语义信息) 此外,用户的输入同样会经过嵌入Embedding处理,生成一个高维向量,去查询知识库中相关的文档片段。 【文本数据 → Embedding → 向量数据】

补充:常见模型的分类

  • 对话模型 (Chat Models):专门用于对话交互的模型
    • GPT-4、Claude、DeepSeek Chat、Gemini等
  • 嵌入模型 (Embedding Models):将文本转换为向量表示的模型
    • OpenAI Ada-002、DeepSeek Embedding、BGE Embedding等
  • 文本生成模型 (Text Generation Models):用于生成连续文本的模型
    • GPT-3、BLOOM、LLaMA等
  • 多模态模型 (Multimodal Models):可处理文本、图像、音频等多种类型数据的模型
    • GPT-4V、Claude 3、Gemini Pro Vision等
  • 代码模型 (Code Models):专门用于代码生成和理解的模型
    • Github Copilot、CodeLlama、StarCoder等
  • 语音模型 (Speech Models):处理语音相关任务的模型
    • Whisper、VALL-E、Bark等

构建个人知识库 - DeepSeek+RAGFlow

为什么要本地化知识库

  1. 隐私保护、数据安全
  2. 个性化知识库构建

安装ollama

通过ollama将DeepSeek模型下载到本地运行

Ollama 是一个开源的大语言模型运行框架,它可以让用户在本地运行和管理各种开源AI模型。主要特点:

  • 支持多种开源模型:如DeepSeek、Llama2、Mistral等
  • 简单易用:通过简单的命令行即可下载和运行模型
  • 本地部署:所有模型和对话都在本地运行,保护隐私
  • 资源占用可控:可以根据本地硬件情况选择合适大小的模型
  • API支持:提供REST API接口,方便与其他应用集成

注意:安装ollama命令行工具。

# 第一次使用时,会先下载
➜  ~ ollama run deepseek-r1:32b
...
...
success
>>>
>>>
>>>

# 测试:
>>> 介绍一下你自己
<think>
您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。
</think>

您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。
...
...

安装RAGFlow

下载RAGflow源代码和Docker
通过Docker来本地部署RAGflow

① 下载代码

$ git clone https://github.com/RAG-flow/RAG-flow.git

② 修改配置
在用docker启动服务器之前,我们需要先修改一个配置:(在readme中有说明)
RAGFlow image tag:默认是v0.16.0-slim,需要修改为v0.16.0,把轻量版改为完整版。(轻量版本没有embedding模型)

# ragflow/docker/.env

# 如下修改:
# The RAGFlow Docker image to download.
# Defaults to the v0.16.0-slim edition, which is the RAGFlow Docker image without embedding models.
# RAGFLOW_IMAGE=infiniflow/ragflow:v0.16.0-slim
RAGFLOW_IMAGE=infiniflow/ragflow:v0.16.0

另外,本机系统是MacOS,需要额外修改:

# 1.
# Optimizations for MacOS
# Uncomment the following line if your OS is MacOS:
# MACOS=1
MACOS=1


# 2. (如果无法下载RAGFlow Docker镜像) 
# If you cannot download the RAGFlow Docker image:
#
# - For the `nightly-slim` edition, uncomment either of the following:
# RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:nightly-slim
# RAGFLOW_IMAGE=registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly-slim
#
# - For the `nightly` edition, uncomment either of the following:
RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:nightly
RAGFLOW_IMAGE=registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly

③ 启动服务器

$ cd ragflow
$ docker compose -f docker/docker-compose.yml up -d
➜  docker git:(main) ✗ docker compose -f docker-compose.yml up -d
WARN[0000] The "HF_ENDPOINT" variable is not set. Defaulting to a blank string.
[+] Running 5/5
 ✔ Container ragflow-redis  Running      0.0s
 ✔ Container ragflow-es-01  Running      0.0s
 ✔ Container ragflow-mysql   Healthy    3.5s
 ✔ Container ragflow-minio   Running    0.0s
 ✔ Container ragflow-server  Running    0.0s

至此,ragflow已经启动成功。 RAGflow启动成功

浏览器中访问localhost:80即可看到RAGflow的界面,如下图: RAGflow界面

可以在这个页面注册一个用户登录。登录之后,还需要做一些配置(和ollama模型关联)

① 配置「模型提供商」,把本地部署的deepseek模型添加进去。
选择ollama模型,注意:模型类型是chat,模型名称是:deepseek-r1:32b, 模型提供商配置

这里可能会报错:Fail to access model(deepseek-r1:32b).ERROR: [Errno 111] Connection refused

解决方案:这里ragflow运行在docker容器中,需要使用host.docker.internal来访问本地ollama模型。 因此,url配置为:http://host.docker.internal:11434

② 系统模型设置:选择刚刚配置的模型提供商,即ollama模型。 系统模型设置

在RAGflow中构建个人知识库并实现个人知识库的对话问答

ragflow使用页面比较友好,这里创建了几个知识库,如下图: 知识库

创建好知识库之后,即可在知识库中新增文件,注意:新增的文件一定要进行解析(解析可能需要一定的时间,耐心等待即可) 新增文件

之后,我们便可以和知识库中的内容进行对话问答了。 对话问答

以上。