HKUDS / RAG-Anything
HKUDS/RAG-Anything
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 仓库: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 的日期)。