## 项目概述

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（离线缓存）

## 安装与快速开始

**安装：**

```bash
# 从 PyPI 安装（推荐）
pip install raganything
# 或安装所有可选依赖
pip install 'raganything[all]'

# 从源码安装
uv sync
```

**快速开始：**

```python
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 仓库：https://github.com/HKUDS/RAG-Anything
- arXiv 论文：https://arxiv.org/abs/2510.12323
- PyPI 包：https://pypi.org/project/raganything/
- 相关项目：LightRAG (https://github.com/HKUDS/LightRAG)、VideoRAG、MiniRAG

## 信息来源和分析时间

- 信息来源：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 的日期）。