RAGFlow系列教程(一)环境搭建&推理测试

577 阅读4分钟

Dify对企业级的应用不是太友好。最近有个RAG的项目需求,又重新好好调研了下这个问题,发现RagFlow这个项目还是很活跃,更新很及时,也支持GraghRAG。OK,那就让我们开始吧。

一、架构介绍

RagFlow是一种融合了数据检索与生成式模型的新型系统架构,其核心思想在于将大规模检索系统与先进的生成式模型(如Transformer、GPT系列)相结合,从而在回答查询时既能利用海量数据的知识库,又能生成符合上下文语义的自然语言回复。该系统主要包含两个关键模块:数据检索模块和生成模块。数据检索模块负责在海量数据中快速定位相关信息,而生成模块则基于检索结果生成高质量的回答或文本内容。

在实际应用中,RAGFlow能够在客户服务、问答系统、智能搜索、内容推荐等领域发挥重要作用,通过检索与生成的双重保障,显著提升系统的响应速度和准确性。

0

1、检索流程

(1)首先Questions提出问题,由查询分析器进行Keyword & Embedding,到AI 原生数据库(Infinity)进行相似性检索,返回Chunk数据

(2)基于多路召回、融合重排序处理,得到更精确、准确答案

(3)调用LLMs进行内容生成,返回答案给用户

2、知识加载

(1)Documents加载进行Task Dispatch分发,进行Task Exector

(2)基于深度文档理解(DeepDoc)处理,如:OCR、文档解析、文档分层分析、表结构识别

(3)基于可控可解释的模板文本切片,形成Chunk存入AI 原生数据库

3、主要功能

(1)"Quality in, quality out"

(2)基于模板的文本切片

(3)有理有据、最大程度降低幻觉(hallucination)

(4)兼容各类异构数据源

(5)全程无忧、自动化的 RAG 工作流

二、环境安装

1、环境需求

在搭建RAGFlow系统前,需要确保开发与运行环境满足以下要求:

硬件配置:建议采用多核CPU、充足内存(16GB及以上)以及支持高并发访问的存储设备;如需部署大规模检索服务,可考虑使用分布式存储集群。

操作系统:推荐使用Linux发行版(如CentOS、Ubuntu)以便于Shell脚本自动化管理;同时也支持Windows环境,但在部署自动化脚本时可能需要适当调整。

开发语言与工具:主要使用Java进行系统核心模块开发,同时结合Shell脚本实现自动化运维。

依赖环境:需要安装Java 8及以上版本,同时配置Maven或Gradle进行依赖管理;对于数据检索部分,可采用ElasticSearch、Apache Solr等开源检索引擎;生成模块则依赖于预训练模型,可以借助TensorFlow或PyTorch进行实现。

2、服务器配置

CPU >= 4 核

RAM >= 16 GB

Disk >= 50 GB

Docker >= 24.0.0 & Docker Compose >= v2.26.1

3、环境安装

git clone github.com/infiniflow/…

cd /datas/work/zzq/RAGFlow/ragflow-main/docker

sysctl -w vm.max_map_count=262144

vi docker-compose-gpu.yml 删除

include:

  • ./docker-compose-base.yml

4、拉取镜像并启动

docker compose -f docker-compose-base.yml -f docker-compose-gpu.yml up -d

0

5、80端口占用报错

0

6、修改80端口

0

7、选择带embedding模型的镜像

0

8、重新执行

0

9、查看服务

docker logs -f ragflow-server

0

10、关闭容器服务

docker compose -f docker-compose-base.yml -f docker-compose-gpu.yml down -v

11、如果报Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.错误

参考www.cnblogs.com/wes1502/p/1… 处理

三、推理测试

1、浏览器打开 http:ip:800/login,(800为二、6步骤中改的数据)

0

2、注册后登录,可以选择语言

0

3、安装Ollama(参考网址:github.com/infiniflow/…)

docker pull ollama/ollama

docker run --name ollama -p 11434:11434 ollama/ollama

4、下载bge-m3嵌入模型

docker exec ollama ollama pull bge-m3

0

5、验证ollama是否正常

docker exec -it ragflow-server bash

curl host.docker.internal:11434/

0

退出容器

curl http://localhost:11434/

0

6、RagFlow不支持Ollama的reranker模型,安装Xinference,使用Xinference的reranker支持模型,安装Xinference

cd /datas/work/zzq/RagFlow/ragflow-main/docker

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

启动xinference

docker exec xinference xinference-local --host 0.0.0.0 --port 9997

网页端打开

http://192.168.175.6:9997/

7、下载rerank模型

modelscope download --model BAAI/bge-reranker-v2-m3 README.md --local_dir .//bge-reranker-v2-m3

8、载入rerank模型

docker exec xinference xinference launch --model-uid bge-reranker-v2-m3 --model-name bge-reranker-v2-m3 --model-type rerank --replica 1 --n-gpu auto --model-path /data/bge-reranker-v2-m3

0

9、注册DeepSeek语言模型

 

0

 

0

10、Xinference大语言模型加载

0

加载成功后,Running Models显示如下

0

11、命令行启动

docker exec xinference xinference launch --model-name DeepSeek-R1-Distill-Qwen-7B --model-format pytorch --model-engine transformers

12、选择模型提供商Ollama或者XInference

 

0

13、添加embedding模型和chat模型

0

14、添加rerank模型

0

15、设置默认模型

0

16、知识库上传

0

17、知识库测试

0

18、聊天模式设置知识库

0

19、聊天测试

 

0

原文地址:https://www.cnblogs.com/nick-algorithmer/p/18883193