LLMs之RAG:RAGFlow(基于深度文档理解的开源 RAG 引擎)的简介、安装和使用方法、案例应用之详细攻略

LLMs之RAG:RAGFlow(基于深度文档理解的开源 RAG 引擎)的简介、安装和使用方法、案例应用之详细攻略

目录

RAGFlow的简介

0、最新更新日志

1、特点

2、系统架构

RAGFlow的安装和使用方法:

1、安装

(1)、配置环境

系统设置

克隆仓库

(2)、使用方法

T1、启动服务器 (使用预构建的 Docker 镜像)

配置

T2、从源码启动服务 (开发环境)

2、使用方法

RAGFlow的案例应用


RAGFlow的简介

RAGFlow 是一个基于深度文档理解开源检索增强生成 (RAG) 引擎。它提供了一个简化的 RAG 工作流程,适用于任何规模的企业,结合大型语言模型 (LLM) 提供可靠的问答能力,并从各种复杂格式的数据中提供有根据的引用。 RAGFlow 支持多种数据源,例如 Word、幻灯片、Excel、文本、图像、扫描件、结构化数据、网页等,并支持多种大型语言模型和嵌入模型

GitHub地址GitHub - infiniflow/ragflow: RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine based on deep document understanding.

0、最新更新日志

2025 年 2 月 5 日 更新了“SILICONFLOW”的模型列表,并增加了对 Deepseek-R1/DeepSeek-V3 的支持。
2025 年 1 月 26 日 优化了知识图谱的提取和应用,提供了多种配置选项。
2024 年 12 月 18 日 升级了 Deepdoc 中的文档布局分析模型。
2024 年 12 月 4 日 在知识库中增加了对 PageRank 分数的支持。
2024 年 11 月 22 日 向 Agent 增加了更多变量。
2024 年 11 月 1 日 在解析的片段中增加了关键词提取和相关问题生成,以提高检索的准确性。
2024 年 8 月 22 日 通过 RAG 支持文本到 SQL 语句的转换。

1、特点

>> 深度文档理解:基于深度文档理解技术,能够从复杂格式的非结构化数据中提取知识。 可以处理海量文本数据,找到“大海捞针”式的特定信息。
>> 模板化分块:使用模板化分块方法,提高效率并增强可解释性。 提供多种模板选项。
>> 可靠的引用和减少幻觉:通过可视化文本分块,允许人工干预。 提供关键参考和可追溯的引用,支持可靠的答案,减少模型幻觉。
>> 兼容异构数据源:支持多种数据源,包括 Word、幻灯片、Excel、文本、图像、扫描件、结构化数据、网页等。
>> 自动化和简化的 RAG 工作流程:简化了 RAG 的编排过程,适用于个人和大型企业。 支持配置 LLM 和嵌入模型,支持多种召回方法和融合重排序。 提供直观的 API,方便与业务系统集成。
>> 支持 Text-to-SQL:支持通过 RAG 将文本转换为 SQL 语句。
>> 知识图谱支持:支持知识图谱的提取和应用,并提供多种配置选项,包括pagerank评分。

2、系统架构

这张图片展示了一个智能文档处理和问题回答系统的流程图。系统的整体架构可以分为几个主要模块:

  • 用户输入(问题与文档):用户可以输入问题或上传文档文件,文件被传输到系统中进行处理。

  • Web Nginx:此模块作为前端,负责接收用户的请求并将其转发到后端API服务进行进一步处理。

  • API服务器:这个模块是系统的核心,包含多个子模块:

    • 多重召回(Multi-way Recall):根据用户问题从数据库中召回相关的文档或内容。
    • 查询分析(Query Analyze):对用户输入的查询进行分析和处理。
    • 任务调度(Task Dispatch):将分析的结果分发给不同的任务执行模块。
  • LLMs(大语言模型):对输入问题进行深度处理,并返回相应的答案。

  • 文档处理模块:在系统的另一部分,文档通过文档解析器(Document Parser)、**OCR(光学字符识别)任务执行器(Task Executor)**等模块进行解析和理解,完成对文件内容的提取和处理。

  • 数据库与数据存储:文档数据和生成的“块(Chunk)”被存储在数据库中,并为后续查询提供支持。

通过这种架构,系统能够高效地处理用户问题自动识别和解析文档中的内容,结合大语言模型生成精确答案。

RAGFlow的安装和使用方法:

1、安装

(1)、配置环境

CPU:4 核以上

RAM:16 GB 以上

磁盘空间:50 GB 以上

Docker:24.0.0 以上版本

Docker Compose:v2.26.1 以上版本

系统设置

检查并设置 vm.max_map_count 的值至少为 262144。 如果需要永久生效,请修改 /etc/sysctl.conf 文件。

克隆仓库

git clone GitHub - infiniflow/ragflow: RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine based on deep document understanding.

(2)、使用方法

T1、启动服务器 (使用预构建的 Docker 镜像)

进入 ragflow/docker 目录,使用 docker compose -f docker-compose.yml up -d 命令启动服务器。 可以选择不同的镜像版本(例如 v0.16.0 或 v0.16.0-slim),v0.16.0-slim 版本大小约为 2GB,不包含嵌入模型;v0.16.0 版本大小约为 9GB,包含嵌入模型。 nightly 版本为不稳定版本。

检查服务器状态:使用 docker logs -f ragflow-server 命令检查服务器状态。 成功启动后,将会显示启动信息。

配置

需要配置 .env 和 service_conf.yaml.template 文件。 .env 文件包含基本系统设置;service_conf.yaml.template 文件配置后端服务,启动 Docker 容器时会自动填充环境变量。 可以通过修改 docker-compose.yml 文件来更改默认的 HTTP 服务端口 (80)。 修改配置后需要重启容器。

切换文档引擎 (可选):默认使用 Elasticsearch 作为文档存储引擎,可以通过修改 .env 文件中的 DOC_ENGINE 变量为 infinity 来切换到 Infinity 引擎。 切换后需要删除 Docker 容器卷并重启容器。

T2、从源码启动服务 (开发环境)

安装 uv:pipx install uv

克隆代码并安装 Python 依赖项:uv sync --python 3.10 --all-extras

使用 Docker Compose 启动依赖服务 (MinIO, Elasticsearch, Redis, MySQL):docker compose -f docker/docker-compose-base.yml up -d

修改 /etc/hosts 文件,将 docker/.env 文件中指定的 host 解析到 127.0.0.1。

设置 HF_ENDPOINT 环境变量 (可选,用于访问 HuggingFace 镜像站点)。

启动后端服务:source .venv/bin/activate && export PYTHONPATH=$(pwd) && bash docker/launch_backend_service.sh

安装前端依赖项并启动前端服务。

2、使用方法

演示地址,用户可以在该地址体验 RAGFlow 的功能。

地址:RAGFlow

RAGFlow的案例应用

RAGFlow 可以应用于各种需要从大量文档中提取信息并进行问答的场景,例如:企业内部知识库构建、客户支持、文档检索、学术研究。

持续更新中……

<think>好的,用户想了解如何使用RAGFlow进行关键词提取。首先,我需要回顾一下RAGFlow的相关功能文档。根据之前的引用,RAGFlow支持通过API接口进行信息检索,比如调用/retrieval接口提交问题并获取结果。不过,关键词提取可能属于文本预处理或信息抽取的一部分,可能需要查看是否有相关API或配置参数。 用户提供的引用[3]中有一个API示例,使用POST请求到/retrieval端点,传入问题、数据集ID文档ID。或许关键词提取可以通过类似的方式,将问题设置为提取关键词,或者利用特定的参数来触发关键词提取功能。另外,引用[2]提到提示词构建的步骤,可能需要通过设计合适的提示词来让模型执行关键词提取任务,比如指定角色为文本分析专家,明确任务为提取关键词,并指定输出格式。 此外,引用[1]提到本地部署RAGFlow构建知识库,可能关键词提取需要在文档处理阶段配置,比如在知识库构建时就启用关键词提取功能。但用户的问题更可能是指如何在使用RAGFlow时进行实时的关键词提取,而不是预处理阶段。 可能的步骤包括:通过API调用,设计合适的请求,将需要提取关键词的文本作为问题传入,或者将文档上传到数据集后,调用相关接口。或者,可能需要使用助理配置参数,结合提示词来引导模型生成关键词。例如,在提示词中明确要求模型从文本中提取关键词,并用逗号分隔等方式指定输出格式。 需要注意的是,RAGFlow的官方文档是否有明确的关键词提取功能,但根据现有引用信息,可能需要通过API提示词配合实现。因此,回答中应建议用户查阅API文档,同时提供一个示例请求,结合提示词来演示如何提取关键词。同时,提醒用户可能需要调整参数或使用特定的模型配置来优化结果。</think>### RAGFlow 关键词提取使用方法 根据 RAGFlow 的 API 接口能力提示词构建方法,关键词提取可通过以下两种方式实现: #### 方法一:通过 API 接口实现 1. **配置提示词参数** 在请求体中添加 `prompt_overwrite` 参数,构建包含关键词提取需求的提示词模板: ```bash curl --request POST \ --url http://{address}/api/v1/retrieval \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <YOUR_API_KEY>' \ --data '{ "question": "请从以下文本提取关键词:企业数字化转型需要数据治理、流程优化人工智能技术结合", "prompt_overwrite": "作为文本分析专家,请从用户提供的文本中提取5个核心关键词,用逗号分隔,按重要性排序。文本内容:{question}", "dataset_ids": ["b2a62730759d11ef987d0242ac120004"] }' ``` 2. **响应处理** 系统会返回 JSON 格式结果,关键词将包含在 `answer` 字段中: ```json { "answer": "企业数字化转型, 数据治理, 流程优化, 人工智能技术, 技术结合", "references": [...] } ``` #### 方法二:通过助理配置实现 1. **创建专用助理** 在 RAGFlow 控制台创建助理时配置以下参数: - **角色设定**:文本关键词提取机器人 - **任务说明**:从用户输入中提取3-5个核心关键词 - **输出格式**:关键词用中文分号分隔,按词频降序排列 - **参考示例**: ``` 输入:量子计算机利用量子叠加原理实现并行计算 输出:量子计算机; 量子叠加原理; 并行计算 ``` 2. **调用专用助理** 通过会话接口调用该助理实现批量化处理: ```python import requests headers = {"Authorization": "Bearer <API_KEY>"} data = { "session_id": "keyword_extract_01", "question": "区块链技术在供应链金融中的应用包含身份验证、智能合约信用穿透" } response = requests.post("http://{address}/api/v1/chat", json=data, headers=headers) print(response.json()["answer"]) # 输出:区块链技术; 供应链金融; 身份验证; 智能合约; 信用穿透 ``` #### 性能优化建议 1. 在知识库中预存领域术语词典提升识别准确率[^2] 2. 启用 `stream=True` 参数加速长文本处理[^3] 3. 对高频使用场景可训练专用关键词提取模型并集成到 RAGFlow 流水线[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值