RAGFlow 一种开源检索增强生成(RAG)引擎
- Rifx.Online
- Generative AI , Machine Learning , Technology/Web
- 19 Jan, 2025
RAGFlow 是一个开源的检索增强生成 (RAG) 引擎,能够与大型语言模型 (LLMs) 集成,从复杂的数据格式中提供准确的、带有引用的答案。RAGFlow 开发者文档 提供了有关有效部署、配置和使用 RAGFlow 的全面指导。
架构组件
以下是架构:
数据摄取与处理:
- RAGFlow 接受多种数据格式,包括 PDF、Word 文档和网页。
- 深度文档理解模块处理这些输入,提取并结构化信息以便于有效检索。
知识库管理:
- 处理后的数据存储在知识库中,组织方式支持高效的搜索和检索操作。
- 系统采用先进的索引和分块策略,以提高检索准确性。
检索机制:
- 在接收到用户查询后,RAGFlow 搜索知识库以识别相关信息。
- 它利用多种召回策略结合融合重排序,以优先考虑最相关的结果。
语言模型集成:
- RAGFlow 与可配置的 LLM 集成,以根据检索到的信息生成响应。
- 这种集成确保生成的答案既与上下文相关,又基于基础数据。
引用与响应生成:
- 系统生成的答案附带引用,提供对原始数据源的透明性和可追溯性。
- 这一特性增强了响应的可靠性和可信度。
用户界面与 API 访问:
- RAGFlow 提供直观的用户界面以便于直接交互。
- 此外,它还提供 API,便于与其他业务应用程序无缝集成,实现自动化工作流程和扩展功能。
本地部署 RAGFlow
要在本地部署 RAGFlow,请确保您的系统满足以下先决条件:
硬件要求:
- CPU:4 核(x86\)
- RAM:16 GB
- 磁盘空间:50 GB
软件要求:
- Docker:版本 24.0.0 或更高
- Docker Compose:版本 2.26.1 或更高
在启动服务器之前,请将 vm.max_map_count
设置调整到至少 262144,以确保 Elasticsearch 正常运行。可以使用以下命令完成此操作:
sudo sysctl -w vm.max_map_count=262144
要使此更改永久生效,请将 vm.max_map_count=262144
添加到您的 /etc/sysctl.conf
文件中。
在满足先决条件后,您可以使用 Docker Compose 启动 RAGFlow 服务器:
docker compose -f docker/docker-compose.yml up -d
服务器运行后,通过在您的网页浏览器中导航至 http://<IP_OF_YOUR_MACHINE>
访问 RAGFlow 界面。
配置语言模型
RAGFlow 需要与 LLM 集成以提供准确、可靠的响应。它支持多种模型,包括来自 OpenAI、Ollama 等的模型。
要配置 LLM:
- 点击 RAGFlow 界面右上角的个人资料图标。
- 从下拉菜单中选择“模型提供者”。
- 通过输入必要的 API 密钥和配置细节添加所需的 LLM。
确保您添加的模型已正确配置以与 RAGFlow 交互。
创建知识库
RAGFlow 中的知识库是从各种文档中提取的数据集的集合。要创建一个知识库:
- 导航到页面顶部的“知识库”选项卡。
- 点击“创建知识库”,并为其提供一个名称。
- 配置适合您文档的嵌入模型和分块方法。
- 以支持的格式上传您的文档,例如 PDF、DOCX、XLSX 等。
- 上传后,启动解析过程,将文档转换为数据集。
RAGFlow 提供多种分块模板,专门针对不同的文档布局,增强信息检索的准确性。
您可以通过导航到“检索测试”部分来测试检索:
在上面的示例中,我正在测试我上传到“super-secret-data”知识库中的文档的检索。
创建助手
您可以通过导航到“聊天”并点击添加来创建助手。
上图显示了在 RAGFlow 中创建专用助手的“聊天配置”界面。该界面允许用户配置助手的设置,包括:
- 助手名称 — “Web Application Security Expert” 是该助手的指定名称。
- 助手描述 — 简要描述标记为“Web 应用安全专家助手”。
- 助手头像 — 上传助手头像的选项,目前未设置。
- 空响应 — 一个字段,处理助手可能没有答案的情况,但留空。
- 设置开场白 — 用户的问候信息:“Hi Omar! 👋 我是您的 Web 应用安全助手,我能为您做些什么?”
- 显示引用 — 开关已启用,表明响应可能包含引用或参考文本。
- 文本转语音 — 此开关关闭,意味着助手将通过文本而非语音进行响应。
- 知识库 — 助手链接到一个名为“super-secret-data”的知识库。(在这种情况下,我使用的是我之前创建的“super-secret-data”知识库)。
RAGFlow 中聊天配置界面的“提示引擎”选项卡允许您创建系统提示并配置其他参数。
系统提示(专家定义):
- 助手被配置为充当 Web 应用安全专家,专注于检测和减轻 SQL 注入、XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)等漏洞。
- 描述清楚地概述了助手的角色和职责。
相似度阈值(滑块):
- 此设置控制检索结果与输入查询的匹配程度。较高的值通过减少不太相关的结果来提高精度。
关键词相似度权重(滑块):
- 调整在检索相关文档或生成响应时关键词匹配的重要性。
前 N(滑块):
- 确定在查询处理过程中考虑的前几个结果的数量。较高的值检索更多潜在匹配项。
多轮优化(切换):
- 此功能已启用,表明助手已针对多轮对话进行了优化,允许后续问题和上下文对话。
重新排序模型(下拉菜单):
- 有选择重新排序模型的选项,但目前没有选择任何模型。
变量部分(键值对):
- 添加一个标记为“knowledge”的变量,以引用与助手相关的知识库。这可以影响助手处理和引用外部数据的方式。
干预文件解析
RAGFlow 提供了对解析过程的可视化,允许手动干预以提高数据准确性。在解析文档后:
- 点击解析的文件以查看其分块结果。
- 审查每个块并进行必要的调整,例如添加关键词或修改内容。
- 保存更改以确保知识库反映准确的信息。
此功能确保用于生成响应的数据是精确且相关的。
创建代理
RAGFlow 引入了一种创新的代理机制,旨在增强 LLM 在商业应用中的能力。此功能结合了无代码工作流编辑器和全面的基于图形的任务编排框架,使用户能够创建针对特定需求的复杂代理。
RAGFlow 中的代理充当中介,通过编排各种搜索技术来管理复杂任务,包括查询意图分类、对话引导和查询重写。这种编排旨在:
- 提高检索准确性: 通过优化用户查询和管理交互,代理提高了从知识库中检索信息的精确度。
- 处理复杂场景: 代理能够管理多层次的交互,使其适用于多种商业应用。
创建代理
- 导航到 RAGFlow 界面顶部中央的“代理”选项卡。
- 点击“+ 创建代理”以打开代理模板页面。
- 选择“空白”模板从头开始构建代理,或从现有模板中选择适用于常见场景的模板,例如通用聊天机器人。
使用无代码工作流编辑器通过拖放组件(操作符)到工作流中来设计代理的行为。
为每个组件设置输入和输出参数,选择合适的知识库,并根据需要调整大型语言模型(LLM)设置。
有关详细指南,请访问 RAGFlow 文档网站上的 代理介绍 页面。
高级配置
RAGFlow 提供多种高级设置以优化性能:
- Docker 环境变量: 通过调整
.env
文件中的变量来配置 Elasticsearch、MySQL 和 Redis 等服务。 - 服务配置: 修改
service_conf.yaml.template
文件以设置 RAGFlow 的 API 服务器和任务执行器的系统级参数。
有关这些配置的详细信息,请参阅文档中的 Configurations 部分。
升级 RAGFlow
要将 RAGFlow 升级到最新版本:
- 拉取最新的 Docker 镜像:
docker pull infiniflow/ragflow:latest
2. 更新您的 .env
文件以引用新镜像版本。
3. 重启 RAGFlow 服务:
docker compose down docker compose up -d
有关详细的升级说明,请参阅 Upgrade RAGFlow 指南。
RAGFlow 开发者文档提供了有效部署和使用 RAGFlow 的全面路线图。