MCPcopy
hub / github.com/HKUDS/RAG-Anything

github.com/HKUDS/RAG-Anything @v1.3.1 sqlite

repository ↗ · DeepWiki ↗ · release v1.3.1 ↗
933 symbols 3,422 edges 59 files 393 documented · 42%
README

RAG-Anything Logo

🚀 RAG-Anything: All-in-One RAG System

  <a href='https://github.com/HKUDS/RAG-Anything'><img src='https://img.shields.io/badge/🔥项目-主页-00d9ff?style=for-the-badge&logo=github&logoColor=white&labelColor=1a1a2e'></a>
  <a href='https://arxiv.org/abs/2510.12323'><img src='https://img.shields.io/badge/📄arXiv-2510.12323-ff6b6b?style=for-the-badge&logo=arxiv&logoColor=white&labelColor=1a1a2e'></a>
  <a href='https://github.com/HKUDS/LightRAG'><img src='https://img.shields.io/badge/⚡基于-LightRAG-4ecdc4?style=for-the-badge&logo=lightning&logoColor=white&labelColor=1a1a2e'></a>






  <a href="https://github.com/HKUDS/RAG-Anything/stargazers"><img src='https://img.shields.io/github/stars/HKUDS/RAG-Anything?color=00d9ff&style=for-the-badge&logo=star&logoColor=white&labelColor=1a1a2e' /></a>
  <img src="https://img.shields.io/badge/🐍Python-3.10-4ecdc4?style=for-the-badge&logo=python&logoColor=white&labelColor=1a1a2e">
  <a href="https://pypi.org/project/raganything/"><img src="https://img.shields.io/pypi/v/raganything.svg?style=for-the-badge&logo=pypi&logoColor=white&labelColor=1a1a2e&color=ff6b6b"></a>






  <a href="https://discord.gg/yF2MmDJyGJ"><img src="https://img.shields.io/badge/💬Discord-社区-7289da?style=for-the-badge&logo=discord&logoColor=white&labelColor=1a1a2e"></a>
  <a href="https://github.com/HKUDS/RAG-Anything/issues/7"><img src="https://img.shields.io/badge/💬微信群-交流-07c160?style=for-the-badge&logo=wechat&logoColor=white&labelColor=1a1a2e"></a>






  <a href="https://github.com/HKUDS/RAG-Anything/raw/v1.3.1/README_zh.md"><img src="https://img.shields.io/badge/🇨🇳中文版-1a1a2e?style=for-the-badge"></a>
  <a href="https://github.com/HKUDS/RAG-Anything/raw/v1.3.1/README.md"><img src="https://img.shields.io/badge/🇺🇸English-1a1a2e?style=for-the-badge"></a>


LiteWrite

🎉 新闻

  • [X] [2025.08.12]🎯📢 🔍 RAGAnything 现在支持 VLM增强查询 模式!当文档包含图片时,系统可以自动将图片与文本上下文一起直接传递给VLM进行综合多模态分析。
  • [X] [2025.07.05]🎯📢 RAGAnything 新增上下文配置模块,支持为多模态内容处理添加相关上下文信息。
  • [X] [2025.07.04]🎯📢 RAGAnything 现在支持多模态内容查询,实现了集成文本、图像、表格和公式处理的增强检索生成功能。
  • [X] [2025.07.03]🎯📢 RAGAnything 在GitHub上达到了1K星标🌟!感谢您的支持和贡献。

🌟 系统概述

下一代多模态智能

RAG-Anything是一个综合性多模态文档处理RAG系统。该系统能够无缝处理和查询包含文本、图像、表格、公式等多模态内容的复杂文档,提供完整的检索增强(RAG)生成解决方案。

RAG-Anything

🎯 核心特性

  • 🔄 端到端多模态处理流水线 - 提供从文档解析到多模态查询响应的完整处理链路,确保系统的一体化运行
  • 📄 多格式文档支持 - 支持PDF、Office文档(DOC/DOCX/PPT/PPTX/XLS/XLSX)、图像等主流文档格式的统一处理和解析
  • 🧠 多模态内容分析引擎 - 针对图像、表格、公式和通用文本内容部署专门的处理器,确保各类内容的精准解析
  • 🔗 基于知识图谱索引 - 实现自动化实体提取和关系构建,建立跨模态的语义连接网络
  • ⚡ 灵活的处理架构 - 支持基于MinerU的智能解析模式和直接多模态内容插入模式,满足不同应用场景需求
  • 📋 直接内容列表插入 - 跳过文档解析,直接插入来自外部源的预解析内容列表,支持多种数据来源整合
  • 🎯 跨模态检索机制 - 实现跨文本和多模态内容的智能检索,提供精准的信息定位和匹配能力

🏗️ 算法原理与架构

核心算法

RAG-Anything 采用灵活的分层架构设计,实现多阶段多模态处理流水线,将传统RAG系统扩展为支持异构内容类型的综合处理平台。

📄

文档解析

🧠

内容分析

🔍

知识图谱

🎯

智能检索

1. 文档解析阶段

该系统构建了高精度文档解析平台,通过结构化提取引擎实现多模态元素的完整识别与提取。系统采用自适应内容分解机制,智能分离文档中的文本、图像、表格、公式等异构内容,并保持其语义关联性。同时支持PDF、Office文档、图像等主流格式的统一处理,提供标准化的多模态内容输出。

核心组件:

  • ⚙️ 结构化提取引擎:集成 MinerU 文档解析框架,实现精确的文档结构识别与内容提取,确保多模态元素的完整性和准确性。

  • 🧩 自适应内容分解机制:建立智能内容分离系统,自动识别并提取文档中的文本块、图像、表格、公式等异构元素,保持元素间的语义关联关系。

  • 📁 多格式兼容处理:部署专业化解析器矩阵,支持PDF、Office文档系列(DOC/DOCX/PPT/PPTX/XLS/XLSX)、图像等主流格式的统一处理与标准化输出。

2. 多模态内容理解与处理

该多模态内容处理系统通过自主分类路由机制实现异构内容的智能识别与优化分发。系统采用并发多流水线架构,确保文本和多模态内容的高效并行处理,在最大化吞吐量的同时保持内容完整性,并能完整提取和保持原始文档的层次结构与元素关联关系。

核心组件:

  • 🎯 自主内容分类与路由:自动识别、分类并将不同内容类型路由至优化的执行通道。

  • ⚡ 并发多流水线架构:通过专用处理流水线实现文本和多模态内容的并发执行。这种方法在保持内容完整性的同时最大化吞吐效率。

  • 🏗️ 文档层次结构提取:在内容转换过程中提取并保持原始文档的层次结构和元素间关系。

3. 多模态分析引擎

系统部署了面向异构数据模态的模态感知处理单元:

专用分析器:

  • 🔍 视觉内容分析器
  • 集成视觉模型进行图像分析和内容识别
  • 基于视觉语义生成上下文感知的描述性标题
  • 提取视觉元素间的空间关系和层次结构

  • 📊 结构化数据解释器

  • 对表格和结构化数据格式进行系统性解释
  • 实现数据趋势分析的统计模式识别算法
  • 识别多个表格数据集间的语义关系和依赖性

  • 📐 数学表达式解析器

  • 高精度解析复杂数学表达式和公式
  • 提供原生LaTeX格式支持以实现与学术工作流的无缝集成
  • 建立数学方程与领域特定知识库间的概念映射

  • 🔧 可扩展模态处理器

  • 为自定义和新兴内容类型提供可配置的处理框架
  • 通过插件架构实现新模态处理器的动态集成
  • 支持专用场景下处理流水线的运行时配置

4. 多模态知识图谱索引

多模态知识图谱构建模块将文档内容转换为结构化语义表示。系统提取多模态实体,建立跨模态关系,并保持层次化组织结构。通过加权相关性评分实现优化的知识检索。

核心功能:

  • 🔍 多模态实体提取:将重要的多模态元素转换为结构化知识图谱实体。该过程包括语义标注和元数据保存。

  • 🔗 跨模态关系映射:在文本实体和多模态组件之间建立语义连接和依赖关系。通过自动化关系推理算法实现这一功能。

  • 🏗️ 层次结构保持:通过"归属于"关系链维护原始文档组织结构。这些关系链保持逻辑内容层次和章节依赖关系。

  • ⚖️ 加权关系评分:为关系类型分配定量相关性分数。评分基于语义邻近性和文档结构内的上下文重要性。

5. 模态感知检索

混合检索系统结合向量相似性搜索与图遍历算法,实现全面的内容检索。系统实现模态感知排序机制,并维护检索元素间的关系一致性,确保上下文集成的信息传递。

检索机制:

  • 🔀 向量-图谱融合:集成向量相似性搜索与图遍历算法。该方法同时利用语义嵌入和结构关系实现全面的内容检索。

  • 📊 模态感知排序:实现基于内容类型相关性的自适应评分机制。系统根据查询特定的模态偏好调整排序结果。

  • 🔗 关系一致性维护:维护检索元素间的语义和结构关系。确保信息传递的连贯性和上下文完整性。


🚀 快速开始

启动您的AI之旅

安装

选项1:从PyPI安装(推荐)

# 基础安装
pip install raganything

# 安装包含扩展格式支持的可选依赖:
pip install 'raganything[all]'              # 所有可选功能
pip install 'raganything[image]'            # 图像格式转换 (BMP, TIFF, GIF, WebP)
pip install 'raganything[text]'             # 文本文件处理 (TXT, MD)
pip install 'raganything[image,text]'       # 多个功能组合

选项2:从源码安装

git clone https://github.com/HKUDS/RAG-Anything.git
cd RAG-Anything
pip install -e .

# 安装可选依赖
pip install -e '.[all]'

可选依赖

  • [image] - 启用BMP、TIFF、GIF、WebP图像格式处理(需要Pillow)
  • [text] - 启用TXT和MD文件处理(需要ReportLab)
  • [all] - 包含所有Python可选依赖

⚠️ Office文档处理配置要求: - Office文档 (.doc, .docx, .ppt, .pptx, .xls, .xlsx) 需要安装 LibreOffice - 从LibreOffice官网下载安装 - Windows:从官网下载安装包 - macOSbrew install --cask libreoffice - Ubuntu/Debiansudo apt-get install libreoffice - CentOS/RHELsudo yum install libreoffice

检查MinerU安装:

# 验证安装
mineru --version

# 检查是否正确配置
python -c "from raganything import RAGAnything; rag = RAGAnything(); print('✅ MinerU安装正常' if rag.check_parser_installation() else '❌ MinerU安装有问题')"

模型在首次使用时自动下载。手动下载参考MinerU模型源配置

使用示例

1. 端到端文档处理

```python import asyncio from functools import partial from raganything import RAGAnything, RAGAnythingConfig from lightrag.llm.openai import openai_complete_if_cache, openai_embed from lightrag.utils import EmbeddingFunc

async def main(): # 设置 API 配置 api_key = "your-api-key" base_url = "your-base-url" # 可选

# 创建 RAGAnything 配置
config = RAGAnythingConfig(
    working_dir="./rag_storage",
    parser="mineru",  # 选择解析器:mineru 或 docling
    parse_method="auto",  # 解析方法:auto, ocr 或 txt
    enable_image_processing=True,
    enable_table_processing=True,
    enable_equation_processing=True,
)

# 定义 LLM 模型函数
def llm_model_func(prompt, system_prompt=None, history_messages=[], **kwargs):
    return openai_complete_if_cache(
        "gpt-4o-mini",
        prompt,
        system_prompt=system_prompt,
        history_messages=history_messages,
        api_key=api_key,
        base_url=base_url,
        **kwargs,
    )

# 定义视觉模型函数用于图像处理
def vision_model_func(
    prompt, system_prompt=None, history_messages=[], image_data=None, messages=None, **kwargs
):
    # 如果提供了messages格式(用于多模态VLM增强查询),直接使用
    if messages:
        return openai_complete_if_cache(
            "gpt-4o",
            "",
            system_prompt=None,
            history_messages=[],
            messages=messages,
            api_key=api_key,
            base_url=base_url,
            **kwargs,
        )
    # 传统单图片格式
    elif image_data:
        return openai_complete_if_cache(
            "gpt-4o",
            "",
            system_prompt=None,
            history_messages=[],
            messages=[
                {"role": "system", "content": system_prompt}
                if system_prompt
                else None,
                {
                    "role": "user",
                    "content": [
                        {"type": "text", "text": prompt},
                        {
                            "type": "image_url",
                            "image_url": {
                                "url": f"data:image/jpeg;base64,{image_data}"
                            },
                        },
                    ],
                }
                if image_data
                else {"role": "user", "content": prompt},
            ],
            api_key=api_key,
            base_url=base_url,
            **kwargs,
        )
    # 纯文本格式
    else:
        return llm_model_func(prompt, system_prompt, history_messages, **kwargs)

# 定义嵌入函数
embedding_func = EmbeddingFunc(
    embedding_dim=3072,
    max_token_size=8192,
    func=partial(
        openai_embed.func,
        model="text-embedding-3-large",
        api_key=api_key,
        base_url=base_url,
    ),
)

# 初始化 RAGAnything
rag = RAGAnything(
    config=config,
    llm_model_func=llm_model_func,
    vision_model_func=vision_model_func,
    embedding_func=embedding_func,
)

# 处理文档
await rag.process_document_complete(
    file_path="path/to/your/document.pdf",
    output_dir="./output",
    parse_method="auto"
)

# 查询处理后的内容
# 纯文本查询 - 基本知识库搜索
text_result = await rag.aquery(
    "文档的主要内容是什么?",
    mode="hybrid"
)
print("文本查询结果:", text_result)

# 多模态查询 - 包含具体多模态内容的查询
multimodal_result = await rag.aquery_with_

Core symbols most depended-on inside this repo

get
called by 362
raganything/prompt.py
items
called by 52
raganything/prompt.py
_first_child
called by 41
raganything/omml_extractor.py
_convert_children
called by 32
raganything/omml_extractor.py
dispatch
called by 27
raganything/callbacks.py
omml_to_latex
called by 23
raganything/omml_extractor.py
keys
called by 15
raganything/prompt.py
get_parser
called by 15
raganything/parser.py

Shape

Method 596
Function 224
Class 109
Route 4

Languages

Python100%

Modules by API surface

raganything/parser.py60 symbols
tests/test_core_modules.py51 symbols
raganything/modalprocessors.py48 symbols
tests/test_resilience.py45 symbols
tests/test_callbacks.py45 symbols
tests/test_minimax_integration.py44 symbols
tests/test_custom_parser.py38 symbols
tests/test_omml_extractor.py37 symbols
raganything/callbacks.py37 symbols
raganything/processor.py33 symbols
raganything/omml_extractor.py33 symbols
tests/test_doc_status_creation.py27 symbols

Dependencies from manifests, versioned

huggingface_hub
lightrag-hku

For agents

$ claude mcp add RAG-Anything \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact