文档 | 路线图 | Twitter | Discord | 演示
💡 什么是RAGFlow?
RAGFlow 是一个基于深度文档理解的开源RAG(检索增强生成)引擎。它为任何规模的企业提供了简化的RAG工作流程,结合大型语言模型(LLM),以提供真实的问题解答能力,并附有来自各种复杂格式数据的可靠引用。
🎮 演示
在 https://demo.ragflow.io 试用我们的演示。
🔥 最新更新
-
2024-08-02 支持GraphRAG,灵感来源于 graphrag 和思维导图。
-
2024-07-23 支持音频文件解析。
-
2024-07-21 支持更多LLMs(LocalAI、OpenRouter、StepFun、Nvidia)。
-
2024-07-18 为图中添加了更多组件(维基百科、PubMed、百度、Duckduckgo)。
-
2024-07-08 支持基于Graph的工作流程。
-
2024-06-27 支持在问答解析方法中使用Markdown和Docx。
-
2024-06-27 支持从Docx文件中提取图片。
-
2024-06-27 支持从Markdown文件中提取表格。
-
2024-06-06 支持Self-RAG,默认在对话设置中启用。
-
2024-05-23 支持 RAPTOR 以改善文本检索。
-
2024-05-15 集成 OpenAI GPT-4o。
🌟 关键特性
🍭 "输入质量,输出质量"
- 基于深度文档理解的知识提取,适用于复杂格式的非结构化数据。
- 在几乎无限制的token中找到“数据中的针”。
🍱 基于模板的分块
- 智能且可解释。
- 提供丰富的模板选项供选择。
🌱 减少幻觉的有依据引用
- 文本分块的可视化,允许人工干预。
- 快速查看关键参考文献,并提供可追踪的引用以支持有依据的答案。
🍔 兼容异构数据源
- 支持Word、幻灯片、Excel、文本、图片、扫描件、结构化数据、网页等。
🛀 自动化且无压力的RAG工作流程
- 简化的RAG编排,适用于个人和大型企业。
- 可配置的LLM以及嵌入模型。
- 多重召回配合融合重新排序。
- 直观的API,便于与业务无缝集成。
🔎 系统架构
🎬 开始使用
📝 先决条件
- CPU >= 4 核
- 内存 >= 16 GB
- 硬盘 >= 50 GB
- Docker >= 24.0.0 & Docker Compose >= v2.26.1
如果尚未在本地机器(Windows、Mac 或 Linux)上安装Docker,请参阅 安装 Docker 引擎。
🚀 启动服务器
-
确保
vm.max_map_count
>= 262144:要检查
vm.max_map_count
的值:$ sysctl vm.max_map_count
如果值不够,请将
vm.max_map_count
重置为至少262144:# 在此情况下,我们将其设置为262144: $ sudo sysctl -w vm.max_map_count=262144
此更改将在系统重启后重置。为确保更改永久生效,请在 /etc/sysctl.conf 中添加或更新
vm.max_map_count
的值:vm.max_map_count=262144
-
克隆代码库:
$ git clone https://github.com/infiniflow/ragflow.git
-
构建预构建的Docker镜像并启动服务器:
运行以下命令将自动下载*开发版 <SOURCE_TEXT>
____ ______ __
/ __ \ ____ _ ____ _ / ____// /____ _ __
/ /_/ // __ `// __ `// /_ / // __ \| | /| / /
/ _, _// /_/ // /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_| \__,_/ \__, //_/ /_/ \____/ |__/|__/
/____/
* 运行在所有地址上 (0.0.0.0)
* 运行在 http://127.0.0.1:9380
* 运行在 http://x.x.x.x:9380
INFO:werkzeug:按 CTRL+C 退出
如果您跳过此确认步骤并直接登录 RAGFlow,您的浏览器可能会提示“网络异常”错误,因为此时您的 RAGFlow 可能尚未完全初始化。
-
在您的网络浏览器中,输入服务器的 IP 地址并登录 RAGFlow。
使用默认设置时,您只需输入
http://IP_OF_YOUR_MACHINE
(不含端口号),因为在使用默认配置时可以省略默认的 HTTP 服务端口80
。 -
在 service_conf.yaml 文件中,选择您想要的 LLM 工厂,并用相应的 API 密钥更新
API_KEY
字段。有关更多信息,请参阅 llm_api_key_setup。
节目现在开始了!
🔧 配置
在系统配置方面,您需要管理以下文件:
- .env: 保存系统的基本设置,如
SVR_HTTP_PORT
、MYSQL_PASSWORD
和MINIO_PASSWORD
。 - service_conf.yaml: 配置后端服务。
- docker-compose.yml: 系统依赖 docker-compose.yml 启动。
您必须确保 .env 文件中的更改与 service_conf.yaml 文件中的内容一致。
./docker/README 文件提供了环境设置和服务配置的详细说明,您必须确保 ./docker/README 文件中列出的所有环境设置与 service_conf.yaml 文件中的相应配置一致。
要更新默认的 HTTP 服务端口(80),请转到 docker-compose.yml 并将 80:80
更改为 <YOUR_SERVING_PORT>:80
。
所有系统配置的更新都需要重启系统才能生效:
$ docker-compose up -d
🛠️ 从源码构建
要从源码构建 Docker 镜像:
$ git clone https://github.com/infiniflow/ragflow.git
$ cd ragflow/
$ docker build -t infiniflow/ragflow:dev .
$ cd ragflow/docker
$ chmod +x ./entrypoint.sh
$ docker compose up -d
🛠️ 从源码启动服务
要从源码启动服务:
-
克隆存储库:
$ git clone https://github.com/infiniflow/ragflow.git $ cd ragflow/
-
创建虚拟环境,确保已安装 Anaconda 或 Miniconda:
$ conda create -n ragflow python=3.11.0 $ conda activate ragflow $ pip install -r requirements.txt
# 如果您的 CUDA 版本高于 12.0,请运行以下附加命令: $ pip uninstall -y onnxruntime-gpu $ pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
-
复制启动脚本并配置环境变量:
# 获取 Python 路径: $ which python # 获取 ragflow 项目路径: $ pwd
$ cp docker/entrypoint.sh . $ vi entrypoint.sh
# 根据实际情况调整配置(以下两个 export 命令是新添加的): # - 将 `which python` 的结果赋值给 `PY`。 # - 将 `pwd` 的结果赋值给 `PYTHONPATH`。 # - 如果配置了 `LD_LIBRARY_PATH`,请注释掉。 # - 可选:添加 Hugging Face 镜像。 PY=${PY} export PYTHONPATH=${PYTHONPATH} export HF_ENDPOINT=https://hf-mirror.com
-
启动第三方服务(MinIO、Elasticsearch、Redis 和 MySQL):
$ cd docker $ docker compose -f docker-compose-base.yml up -d
-
检查配置文件,确保:
- docker/.env 中的设置与 conf/service_conf.yaml 中的设置一致。
- service_conf.yaml 中相关服务的 IP 地址和端口与本机 IP 和容器暴露的端口匹配。
-
启动 RAGFlow 后端服务:
$ chmod +x ./entrypoint.sh $ bash ./entrypoint.sh
-
启动前端服务:
$ cd web $ npm install --registry=https://registry.npmmirror.com --force $ vim .umirc.ts # 将 proxy.target 更新为 http://127.0.0.1:9380 $ npm run dev
-
部署前端服务:
$ cd web $ npm install --registry=https://registry.npmmirror.com --force $ umi build $ mkdir -p /ragflow/web $ cp -r dist /ragflow/web $ apt install nginx -y $ cp ../docker/nginx/proxy.conf /etc/nginx $ cp ../docker/nginx/nginx.conf /etc/nginx $ cp ../docker/nginx/ragflow.conf /etc/nginx/conf.d $ systemctl start nginx
📚 文档
📜 路线图
请参阅 RAGFlow 2024 路线图
🏄 社区
🙌 贡献
RAGFlow 通过开源协作蓬勃发展。本着这种精神,我们欢迎来自社区的多样化贡献。如果您想参与,请先查看我们的 贡献指南。 </SOURCE_TEXT>