RAGFlow安装和使用体验
RAGFlow是一个基于深度文档理解的开源 RAG(检索增强生成)引擎。当与大型语言模型(LLMs)结合时,它能够提供可靠的问答能力,并且可以引用各种复杂格式数据中的内容作为依据。现目前也算是主流的开源知识库管理应用之一,安装过程中需要一堆依赖,好在有docker让步骤变得容易。
1.硬件需求
这个安装必须使用docker了,手动部署安装过于折磨。官方提供了详细的安装教程,Quick start | RAGFlow。
提到了硬件要求:
- CPU ≥ 4 cores (x86);
- RAM ≥ 16 GB;
- Disk ≥ 50 GB;
- Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1.
需要修改当前系统的最大虚拟内存区域数量限制:
Linux直接使用sudo sysctl -w vm.max_map_count=262144
,配置即可。重启后会失效,持久化修改,需要修改配置文件/etc/sysctl.conf
。
2.克隆仓库并选择镜像源
# 拉取镜像
git clone https://github.com/infiniflow/ragflow.git
# 进入配置文件
cyqsd@cyqsd-MS-7D90:~/Project/ragflow/docker$ ls -a
. docker-compose-CN-oc9.yml docker-compose-macos.yml entrypoint-parser.sh infinity_conf.toml nginx service_conf.yaml.template
.. docker-compose-gpu-CN-oc9.yml entrypoint.sh init.sql ragflow-logs
docker-compose-base.yml docker-compose-gpu.yml docker-compose.yml .env launch_backend_service.sh README.md
编辑.env
文件:
# 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
我是用的阿里云的源。
3.选择要拉取的镜像
写本文时,版本号为:v0.16.0,官方有如下版本可选:
RAGFlow image tag | Image size (GB) | Has embedding models and Python packages? | Stable? |
---|---|---|---|
v0.16.0 | ≈9 | ✔️ | Stable release |
v0.16.0-slim | ≈2 | ❌ | Stable release |
nightly | ≈9 | ✔️ | Unstable nightly build |
nightly-slim | ≈2 | ❌ | Unstable nightly build |
每夜版nightly
就不安装了。slim
是不带嵌入式模型的,要小一点,镜像大约2G,因为后面要使用ollama连接,选不选都无所谓。
然后使用下面的命令进行安装, docker-compose-CN-oc9.yml, docker-compose-gpu-CN-oc9.yml, or docker-compose-gpu.yml
是不积极维护的配置文件,具体版本差异,见官方文档:Configurations | RAGFlow。
docker compose -f docker-compose.yml up -d
如果运行出错可以使用docker logs -f ragflow-server
,查看运行日志。如果还没有安装docker/compose,可以上官网先安装:docker/compose: Define and run multi-container applications with Docker。
完成后,会创建下面的一堆容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
994e8d245364 registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly-slim "./entrypoint.sh" 13 days ago Up 13 days 0.0.0.0:9380->9380/tcp, :::9380->9380/tcp, 0.0.0.0:8000->80/tcp, :::8000->80/tcp, 0.0.0.0:4433->443/tcp, :::4433->443/tcp ragflow-server
412e90c800d8 quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z "/usr/bin/docker-ent…" 13 days ago Up 13 days 0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp ragflow-minio
3f4567c0cd56 valkey/valkey:8 "docker-entrypoint.s…" 13 days ago Up 13 days 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp ragflow-redis
122001b65974 docker.elastic.co/elasticsearch/elasticsearch:8.11.3 "/bin/tini -- /usr/l…" 13 days ago Up 13 days (healthy) 9300/tcp, 0.0.0.0:1200->9200/tcp, :::1200->9200/tcp ragflow-es-01
ceb04c461711 mysql:8.0.39 "docker-entrypoint.s…" 13 days ago Up 13 days (healthy) 33060/tcp, 0.0.0.0:5455->3306/tcp, :::5455->3306/tcp ragflow-mysql
配置ollama
注册账号后登录,选择模型提供商
:
选择ollama
并添加模型
:
- key并未使用,可以不填
- 最大token数,根据模型情况填写
- 如需其他模型提供商可以查看:Supported models | RAGFlow
需要手动填写连接信息。然后等待添加完成。
此处测试的模型依旧是:
- 嵌入模型:bge-m3:latest
- 推理模型:deepseek-r1:32b 和 14b
使用体验
API接口列表直接就在本页面,或者在官方文档中查看:HTTP API | RAGFlow:
自带的数据集解析功能支持的文件格式:DOCX,EXCEL、PPT、IMAGE、PDF、TXT、MD、JSON、EML、HTML可以。相比MaxKB这种支持压缩包的就稍差一点,但是也算覆盖全面了。
解析方法可手动调整。
可使用文本对知识库的内容进行预测,并返回准确率。
创建智能体
Agent是RAGFlow的一大功能亮点之一,具有完善的图形化、流程化处理步骤,不比商用平台差多少。截图中的例子是文本转SQL语句。
捣鼓到这里,本文就结束了。从各项依赖中就可以看出,RAGFlow确实是一个功能完善,偏向商业应用的知识库框架,中文的本地化、大模型的提供商、API接口都很全面。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。