💻 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
为什么要本地化知识库
- 隐私保护、数据安全
- 个性化知识库构建
安装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已经启动成功。
浏览器中访问localhost:80
即可看到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使用页面比较友好,这里创建了几个知识库,如下图:
创建好知识库之后,即可在知识库中新增文件,注意:新增的文件一定要进行解析(解析可能需要一定的时间,耐心等待即可)
之后,我们便可以和知识库中的内容进行对话问答了。
以上。