一、关于 RAGFlow💡
- 官网:https://ragflow.io
- github : https://github.com/infiniflow/ragflow
- 中文说明:https://github.com/infiniflow/ragflow/blob/main/README_zh.md
- 官方文档:https://ragflow.io/docs/dev/
中文翻译:https://blog.csdn.net/lovechris00/article/details/141650593 - FAQ : https://github.com/infiniflow/ragflow/blob/main/docs/faq.md
- ROADMAP : https://github.com/infiniflow/ragflow/issues/162
- discord : <https://discord.gg/uqQ4YMDf >
- Twitter: https://twitter.com/infiniflowai
RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。
主要功能🌟
- **“Quality in, quality out”**🍭
- 基于深度文档理解,能够从各类复杂格式的非结构化数据中提取真知灼见。
- 真正在无限上下文(token)的场景下快速完成大海捞针测试。
- 基于模板的文本切片 🍱
- 不仅仅是智能,更重要的是可控可解释。
- 多种文本模板可供选择
- 有理有据、最大程度降低幻觉(hallucination) 🌱
- 文本切片过程可视化,支持手动调整。
- 有理有据:答案提供关键引用的快照并支持追根溯源。
- 兼容各类异构数据源 🍔
- 支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据, 网页等。
- 全程无忧、自动化的 RAG 工作流 🛀
- 全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。
- 大语言模型 LLM 以及向量模型均支持配置。
- 基于多路召回、融合重排序。
- 提供易用的 API,可以轻松集成到各类企业系统。
系统架构 🔎
二、快速开始🎬
1、前提条件📝
- CPU >= 4 核
- RAM >= 16 GB
- Disk >= 50 GB
- Docker >= 24.0.0 & Docker Compose >= v2.26.1
2、启动服务器🚀
1、确保 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
2、克隆仓库:
git clone https://github.com/infiniflow/ragflow.git
3、进入 docker 文件夹,利用提前编译好的 Docker 镜像启动服务器:
cd ragflow/docker
chmod +x ./entrypoint.sh
docker compose -f docker-compose-CN.yml up -d
核心镜像文件大约 15 GB,可能需要一定时间拉取。请耐心等待。
4、服务器启动成功后再次确认服务器状态:
docker logs -f ragflow-server
出现以下界面提示说明服务器启动成功:
____ ______ __
/ __ \ ____ _ ____ _ / ____// /____ _ __
/ /_/ // __ `// __ `// /_ / // __ \| | /| / /
/ _, _// /_/ // /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_| \__,_/ \__, //_/ /_/ \____/ |__/|__/
/____/
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:9380
* Running on http://x.x.x.x:9380
INFO:werkzeug:Press CTRL+C to quit
如果您跳过这一步系统确认步骤就登录 RAGFlow,你的浏览器有可能会提示 network anomaly
或 网络异常
,因为 RAGFlow 可能并未完全启动成功。
5、在你的浏览器中输入你的服务器对应的 IP 地址并登录 RAGFlow。
上面这个例子中,您只需输入 http://IP_OF_YOUR_MACHINE 即可:未改动过配置则无需输入端口(默认的 HTTP 服务端口 80)。
-
在 service_conf.yaml 文件的
user_default_llm
栏配置 LLM factory,并在API_KEY
栏填写和你选择的大模型相对应的 API key。详见 ./docs/llm_api_key_setup.md。
好戏开始,接着奏乐接着舞!
三、系统配置🔧
系统配置涉及以下三份文件:
- .env:存放一些基本的系统环境变量,比如
SVR_HTTP_PORT
、MYSQL_PASSWORD
、MINIO_PASSWORD
等。 - service_conf.yaml:配置各类后台服务。
- docker-compose-CN.yml: 系统依赖该文件完成启动。
请务必确保 .env 文件中的变量设置与 service_conf.yaml 文件中的配置保持一致!
./docker/README 文件提供了环境变量设置和服务配置的详细信息。请一定要确保 ./docker/README 文件当中列出来的环境变量的值与 service_conf.yaml 文件当中的系统配置保持一致。
如需更新默认的 HTTP 服务端口(80), 可以在 docker-compose-CN.yml 文件中将配置 80:80
改为 <YOUR_SERVING_PORT>:80
。
所有系统配置都需要通过系统重启生效:
docker compose -f docker-compose-CN.yml up -d
四、源码编译、安装 Docker 镜像🛠️
如需从源码安装 Docker 镜像:
$ git clone https://github.com/infiniflow/ragflow.git
$ cd ragflow/
$ docker build -t infiniflow/ragflow:v0.4.0 .
$ cd ragflow/docker
$ chmod +x ./entrypoint.sh
$ docker compose up -d
五、 源码启动服务🛠️
如需从源码启动服务,请参考以下步骤:
1、克隆仓库
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
2、创建虚拟环境(确保已安装 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/
3、拷贝入口脚本并配置环境变量
cp docker/entrypoint.sh .
vi entrypoint.sh
使用以下命令获取python路径及ragflow项目路径:
which python
pwd
将上述 which python
的输出作为 PY
的值,将 pwd
的输出作为 PYTHONPATH
的值。
LD_LIBRARY_PATH
如果环境已经配置好,可以注释掉。
# 此处配置需要按照实际情况调整,两个 export 为新增配置
PY=${PY}
export PYTHONPATH=${PYTHONPATH}
# 可选:添加 Hugging Face 镜像
export HF_ENDPOINT=https://hf-mirror.com
4、启动基础服务
cd docker
docker compose -f docker-compose-base.yml up -d
5、检查配置文件 确保docker/.env中的配置与conf/service_conf.yaml中配置一致, service_conf.yaml中相关服务的IP地址与端口应该改成本机IP地址及容器映射出来的端口。
6、启动服务
chmod +x ./entrypoint.sh
bash ./entrypoint.sh
7、启动WebUI服务
cd web
npm install --registry=https://registry.npmmirror.com --force
vim .umirc.ts
# 修改proxy.target为http://127.0.0.1:9380
npm run dev
8、部署WebUI服务
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
2024-04-28(日)