HKUDS / RAG-Anything

HKUDS/RAG-Anything

open_in_new前往仓库

RAG-Anything:一体化RAG框架

项目概览

项目概述

RAG-Anything 是一个基于 LightRAG 构建的全能型多模态检索增强生成(RAG)框架,旨在解决传统文本 RAG 系统无法有效处理包含文本、图像、表格、公式和图表等多样化多模态内容的现代文档问题。它提供了一个统一的端到端管道,从文档摄取、解析到智能多模态查询回答,支持 PDF、Office 文档、图像等多种格式,并具备多模态知识图谱、混合智能检索等高级功能。

核心功能

  • 端到端多模态管道:完整的文档摄取、解析和智能多模态查询回答工作流。
  • 通用文档支持:无缝处理 PDF、Office 文档(DOC/DOCX/PPT/PPTX/XLS/XLSX)、图像和文本文件。
  • 专门内容分析:针对图像、表格、数学公式和异构内容类型的专用处理器。
  • 多模态知识图谱:自动实体提取和跨模态关系发现,增强文档理解。
  • 自适应处理模式:基于 MinerU 的灵活解析或直接多模态内容注入工作流。
  • 直接内容列表插入:绕过文档解析,直接插入来自外部来源的预解析内容列表。
  • 混合智能检索:支持文本和多模态内容的先进搜索能力,具备上下文理解。
  • 上下文感知处理:自动提取周围文本作为上下文,提高多模态分析的准确性。
  • 批量处理:支持并行处理多个文档,提高吞吐量。
  • 增强 Markdown 转换:提供高质量的 Markdown 转 PDF 功能,支持多种后端和样式。

适用与不适用场景

适用场景:

  • 学术研究:处理包含公式、图表和表格的科研论文。
  • 技术文档:解析包含代码、架构图和表格的技术手册。
  • 财务报告:分析包含数据表格和趋势图的财务文件。
  • 企业知识管理:统一处理混合内容的文档库。
  • 需要多模态检索增强生成的任何场景。

不适用场景:

  • 纯文本 RAG 需求:如果文档仅包含文本,使用 LightRAG 等轻量级框架可能更简单。
  • 实时性要求极高的场景:多模态解析和知识图谱构建可能耗时较长。
  • 资源受限环境:需要 GPU 加速以获得最佳性能,且依赖 LibreOffice 等外部软件。
  • 离线环境:需要额外配置 tiktoken 缓存,否则无法初始化。

技术架构与依赖

RAG-Anything 基于 LightRAG 构建,采用多阶段多模态管道架构,包括文档解析、内容理解、多模态分析、知识图谱索引和模态感知检索。

主要依赖:

  • Python 3.10+
  • LightRAG(核心引擎)
  • MinerU(文档解析,可选 Docling、PaddleOCR)
  • OpenAI API(LLM 和嵌入模型,可通过 vLLM 等替代)
  • LibreOffice(处理 Office 文档)
  • 可选:Pillow(图像格式)、ReportLab(文本文件)、tiktoken(离线缓存)

安装与快速开始

安装:

# 从 PyPI 安装(推荐)
pip install raganything
# 或安装所有可选依赖
pip install 'raganything[all]'

# 从源码安装
uv sync

快速开始:

import asyncio
from raganything import RAGAnything, RAGAnythingConfig

async def main():
    config = RAGAnythingConfig(working_dir="./rag_storage", parser="mineru")
    rag = RAGAnything(config=config, llm_model_func=..., embedding_func=...)
    await rag.process_document_complete(file_path="document.pdf")
    result = await rag.aquery("问题", mode="hybrid")
    print(result)

asyncio.run(main())

典型使用方法

  • 端到端文档处理:使用 process_document_complete 处理单个文档,然后查询。
  • 直接多模态内容处理:使用 ImageModalProcessor、TableModalProcessor 等处理图像、表格。
  • 批量处理:使用 process_folder_complete 或 BatchParser 处理多个文档。
  • 自定义模态处理器:继承 GenericModalProcessor 实现自定义内容类型。
  • 查询选项:支持纯文本查询(aquery)、VLM 增强查询(自动启用)和多模态查询(aquery_with_multimodal)。
  • 加载现有 LightRAG 实例:通过传递 lightrag 参数复用已有知识库。
  • 直接内容列表插入:使用 insert_content_list 插入预解析内容。

配置与部署要点

  • 环境变量:通过 .env 文件配置 OPENAI_API_KEY、PARSER、PARSE_METHOD 等。
  • 解析器选择:支持 MinerU(默认)、Docling、PaddleOCR,各有优势。
  • MinerU 配置:通过命令行参数或函数参数配置语言、设备、公式/表格解析等。
  • 上下文配置:通过 RAGAnythingConfig 或环境变量设置上下文窗口、模式等。
  • 公共媒体 URL:设置 RAGANYTHING_PUBLIC_ASSET_BASE_URL 和 RAGANYTHING_PUBLIC_ASSET_STRIP_PREFIX 以生成可访问的 URL。
  • 离线部署:设置 TIKTOKEN_CACHE_DIR 指向本地缓存,避免网络依赖。
  • vLLM 集成:支持使用 vLLM 作为 LLM 和嵌入后端,提高生产环境吞吐量。

限制、风险与许可证

限制:

  • 依赖外部服务(如 OpenAI API)或需要本地模型部署。
  • 处理大型文档或复杂多模态内容时可能耗时较长。
  • 公共 URL 映射目前仅支持 MinerU 解析器。

风险:

  • 解析质量可能受文档质量影响,如 OCR 错误、表格结构丢失等。
  • 离线环境需要额外配置 tiktoken 缓存。
  • 依赖 LibreOffice 等外部软件,需确保安装正确。

许可证: MIT 许可证。

官方链接

信息来源和分析时间

  • 信息来源:GitHub 仓库 README、docs 目录下的文档(batch_processing.md、context_aware_processing.md、enhanced_markdown.md、multimodal_rag_failure_modes.md、offline_setup.md、vllm_integration.md)。
  • 分析时间:2026年5月21日(基于最新发布版本 v1.3.1 的日期)。