DeepSeek+RagFlow搭建企业级知识库:Docker镜像构建(基础篇)

221 阅读4分钟

本文较长,建议点赞收藏,以免遗失。更多AI大模型开发 学习视频/籽料/面试题 都在这>>Github<<

随着AI技术的火热发展,企业和个人用户需要搭建知识库的需求越来越迫切。如果自己动手搭建一个功能强大的知识库对于非专业技术人员来说可能面临挑战,更别说那些非专业人士了。我在网上看了大量相关的教程,大多数都是搬砖,偶尔看到一些非搬砖大佬写的教程,总会省略一些细节,导致很多人就算面对教程也是各种踩坑,折腾很久最后也都放弃了。

本文主要内容是利用RagFlow开源框架来搭建企业级知识库。

初衷是考虑到大多数,非技术人员也能搭建,所以我从构建镜像到安装整个过程,为大家提供傻瓜式的教程。

还在苦恼DeepSeek不知道怎么使用使用而苦恼吗,不用着急,寒暄为大家精心总结30个比较全面的DeepSeek提示词模板,按照这个模版写提示词,让工作效率翻倍。

硬件最低要求

  • CPU ≥ 4 核心
  • 运行内存 ≥ 16 GB
  • 磁盘空间 ≥ 50 GB
  • Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1

安装 RagFlow(通用)

1. RAGFlow 是什么?

RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。

2. docker安装

在开始安装RagFlow之前要首先安装docker

2.1 Linux 系统

2.2 Windows 系统 和 MacOS 系统

去官网下载对应的安装包:www.docker.com/ 图片

选择自己对应系统架构的安装包下载安装即可。图片

⚠️这里windows 系统要特别注意,可能需要专业版的系统才支持docker desktop的安装。

3. vm.max_map_count 参数设置

此值设置进程可以拥有的最大内存映射区域数。其默认值为 65530。虽然大多数应用程序需要的映射数少于一千个,但降低此值可能会导致异常行为,并且当进程达到限制时,系统将抛出内存不足错误。

RAGFlow v0.17.0 使用 Elasticsearch 或Infinity进行多次召回。正确设置vm.max_map_count的值对于 Elasticsearch 组件的正常运行至关重要。

⚠️ 确保此参数 ≥ 262144

3.1 Linux

3.1.1 检查vm.max_map_count的值:

$ sysctl vm.max_map_count

3.1.2 如果不是,则将vm.max_map_count重置为至少 262144 的值。

$ sudo sysctl -w vm.max_map_count=262144

⚠️此更改将在系统重启后重置。如果您在下次启动服务器时忘记更新该值,您可能会收到Can't connect to ES cluster异常。

3.1.3 为确保您的更改永久生效,请在/etc/sysctl.conf中相应地添加或更新vm.max_map_count值:

vm.max_map_count=262144

3.2 MacOs系统

如果你使用的是装有 Docker Desktop 的 macOS,请运行以下命令来更新vm.max_map_count :

docker run --rm --privileged --pid=host alpine sysctl -w vm.max_map_count=262144

⚠️此更改将在系统重启后重置。如果您在下次启动服务器时忘记更新该值,您可能会收到Can't connect to ES cluster异常

3.3 Windows

3.3.1 如果您在装有 Docker Desktop 的 Windows 上,则必须使用 docker-machine 来设置vm.max_map_count :

$ docker-machine ssh
$ sudo sysctl -w vm.max_map_count=262144

3.3.2 如果你在带有 Docker Desktop WSL 2 后端的 Windows 上,则使用 docker-desktop 设置vm.max_map_count :

$ wsl -d docker-desktop -u root
$ sysctl -w vm.max_map_count=262144

详细设置请参考官网文档:ragflow.io/docs/v0.17.…

图片

4.克隆源代码并切换分支

$ git clone https://github.com/infiniflow/ragflow.git
$ cd ragflow/docker
$ git checkout -f v0.17.0

5.使用Docker镜像启动服务器

以下命令拉取 RAGFlow Docker 镜像的v0.17.0-slim版本。请参阅下表了解不同 RAGFlow 版本的描述。要下载不同于v0.17.0-slim RAGFlow 版本,请在使用docker compose启动服务器之前在docker/.env中相应地更新RAGFLOW_IMAGE变量。

例如:为完整版本v0.17.0设置 RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.0 。

$ docker compose -f docker-compose.yml up -d

.env文件:如果使用AMD64(比如大部分windows系统和大部分Linux系统和Inter芯片的MacOS系统)架构并且使用docker安装的情况下,最好不要修改这个环境配置文件。

图片

镜像版本镜像大小是否嵌入模型和Python包是否稳定
v0.17.0≈9✔️
v0.17.0-slim≈2
nightly≈9✔️
nightly-slim≈2

6. 检查服务器状态

$ docker logs -f ragflow-server

如果有以下输出可以确认系统启动成功:

     ____   ___    ______ ______ __
    / __ \ /   |  / ____// ____// /____  _      __
   / /_/ // /| | / / __ / /_   / // __ | | /| / /
  / _, _// ___ |/ /_/ // __/  / // /_/ /| |/ |/ /
 /_/ |_|/_/  |_|____//_/    /_/ ____/ |__/|__/

 * Running on all addresses (0.0.0.0)

7. 如何访问?

在您的 Web 浏览器中,输入服务器的 IP 地址并登录 RAGFlow

如果出现以下页面,恭喜你,已经成功搭建RAGFlow

图片

ARM 怎么安装 RAGFlow?

如果我们需要在ARM64(比如M芯片的MacOS系统)平台安装RAGFlow。但是RAGFlow官方不维护 ARM 的 RAGFlow Docker 镜像。不过,我们也可以在linux/arm64darwin/arm64主机上自行构建镜像。

对于 ARM64 平台,请将pyproject.toml中的xgboost版本升级到1.6.0并确保unixODBC正确安装。

图片

构建 Docker 映像

1. 克隆代码

git clone https://github.com/infiniflow/ragflow.git

⚠️注意:如果出现超时无法克隆的情况,需要把代理路径修改成本地代理就可以了。

git config --global http.proxy http://127.0.0.1:7890

2. 下载一系列依赖项,包括文件、自然语言处理(NLP)数据包以及 Hugging Face 上的模型仓库

cd ragflow/
uv run download_deps.py

3. 构建 infiniflow/ragflow_deps Docker镜像

docker build -f Dockerfile.deps -t infiniflow/ragflow_deps .

4. 拉取ubuntu:22.04 docker 基础镜像

因为之后构建infiniflow/ragflow:nightly-slim镜像需要使用到这个基础镜像,由于国内网络环境原因,这个镜像没法使用魔法拉取,只能使用代理服务器进行拉取。

图片

4.1 代理拉取镜像
docker pull dockerproxy.net/library/ubuntu:22.04
4.2 重命名镜像
docker tag dockerproxy.net/library/ubuntu:22.04 ubuntu:22.04
4.3 删除代理镜像
docker rmi dockerproxy.net/library/ubuntu:22.04

5.构建 infiniflow/ragflow:nightly-slim镜像

docker build --build-arg LIGHTEN=1 -f Dockerfile -t infiniflow/ragflow:nightly-slim .

⚠️注意:这个过程相当漫长,寒暄在这一步可是等了一个多小时。

启动 RAGFlow 服务

构建 infiniflow/ragflow:nightly-slim 映像后,您就可以启动具有所有必需组件(如 Elasticsearch、MySQL、MinIO、Redis 等)的功能齐全的 RAGFlow 服务。

1.例如:在 Apple M3 Max 启动服务

1.1 编辑 Docker Compose 配置

打开 docker/docker-compose-base.yml 文件。找到infinity.image设置并将图像引用从 infiniflow/infinity:v0.6.0-dev3 更改为 infiniflow/ragflow:nightly-slim 以使用预建图像。

infinity:
  container_name: ragflow-infinity
  image: infiniflow/ragflow:nightly-slim # here
  volumes:
    - ...
    - ...
  ...

图片

1.2 启动服务
cd docker
$ docker compose -f docker-compose-macos.yml up -d

⚠️注意:这个过程可能会比较久,跟网络环境机器配置都有关系。

1.3 访问 RAGFlow 服务

启动完成之后,打开你的网络浏览器并导航到http://127.0.0.1或你的服务器的;(默认端口是= 80)。您将被引导至RAGFlow 欢迎页面。尽情享受吧!🍻

图片

究极方案

如果以上方法没办法构建ARM镜像,寒暄为大家已经编译好了离线镜像包,下载离线镜像包导入到docker 直接运行就可以了。

图片

如何使用离线镜像包?

1. 下载离线镜像包并上传到docker 宿主机(你安装docker的主机)

2. docker导入镜像包

  • 在如图所示的文件夹打开终端

    图片

    执行以下命令

    docker load -i docker-ragflow.tar.gz
    

3. 启动服务器

  • 在如图所示的文件夹下打开终端

    图片

    执行以下命令

    docker compose -f docker-compose-macos.yml up -d
    

    看到容器成功启动就可以尽情的玩耍RAGFlow图片