首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >RAG-Anything:多模态 RAG 终极形态,让 AI 真正理解你的所有文档

RAG-Anything:多模态 RAG 终极形态,让 AI 真正理解你的所有文档

作者头像
安全风信子
发布2026-06-18 11:16:42
发布2026-06-18 11:16:42
4460
举报
文章被收录于专栏:AI SPPECHAI SPPECH

引言

在 RAG(检索增强生成)领域,HKUDS 团队一直是重要的开源贡献者。继 LightRAG 之后,他们又带来了一个重磅项目——RAG-Anything

如果说 LightRAG 解决的是"文本知识库"的问题,那么 RAG-Anything 解决的是"一切文档"的知识库问题——不仅是文本,还包括图片、表格、公式、图表等非结构化多模态内容。

本文所有技术细节均来自 RAG-Anything 官方 GitHub 仓库(https://github.com/HKUDS/RAG-Anything)及技术报告(arXiv:2510.12323)。


一、项目介绍

官方定义

RAG-Anything 的官方定位是 All-in-One Multimodal Document Processing RAG system(一站式多模态文档处理 RAG 系统),构建于 LightRAG 之上。项目由香港大学数据科学实验室(HKUDS)的 Zirui Guo 主导开发,采用 MIT 开源协议。

核心目标

现代企业文档中充斥着多模态内容——文本、图像、表格、公式、图表和多媒体元素,传统的纯文本 RAG 系统无法有效处理这些内容。RAG-Anything 要解决的就是这个核心痛点:一个统一框架处理所有文档类型中的所有内容模态

项目路线

时间节点

里程碑

2025.06

项目初始发布

2025.07

GitHub 1K ⭐ Stars

2025.07

支持多模态查询,无缝处理文本、图像、表格和公式

2025.08

VLM-Enhanced Query 模式,整合视觉语言模型实现深度多模态分析

2025.10

发布技术报告 arXiv:2510.12323

2026.06

LightRAG 通过原生集成 RAG-Anything 实现多模态 RAG


二、支持的文件类型

RAG-Anything 实现了真正的"万物皆可解析",支持的文件类型覆盖了日常办公和科研场景的绝大部分需求:

来源:RAG-Anything README.md - “Universal Format Support” 章节

文件类型

格式

说明

PDF

.pdf

高保真结构提取

Word 文档

.doc / .docx

需安装 LibreOffice

PowerPoint

.ppt / .pptx

需安装 LibreOffice

Excel 表格

.xls / .xlsx

需安装 LibreOffice

图片

.png, .jpg, .bmp, .tiff, .gif, .webp

需安装 [image] 可选依赖

文本文件

.txt, .md

需安装 [text] 可选依赖

解析引擎集成了 MinerU(由 OpenDataLab 开发的高保真文档结构提取工具),能够自动将文档分解为文本块、视觉元素、结构化表格和数学公式,同时保持上下文关联关系。


三、为什么重要——从安全行业的一个真实场景说起

现实中的痛点

想象一个渗透测试报告场景。这份 PDF 报告包含:

  • 文字描述:漏洞发现、利用过程
  • 截图证据:SQL 注入回显、XSS 弹窗、命令执行结果
  • 网络拓扑图:目标网络架构、攻击路径
  • 表格数据:资产清单、漏洞评分(CVSS)
  • 命令输出:工具执行结果

传统 RAG 系统只能读取其中的文字部分,而截图、拓扑图、表格中的数据全部被忽略。

据行业估算,企业文档中 70% 以上的信息不在纯文本中——它们存在于图片、图表、表格、公式等非文本载体中。

RAG-Anything 的解法

RAG-Anything 的架构通过 5 个阶段解决了这一问题:

  1. 文档解析 → 高保真提取所有元素
  2. 多模态内容理解 → 自动分类并路由到专用处理通道
  3. 多模态分析引擎 → 图像分析器、表格解释器、公式解析器协同工作
  4. 多模态知识图谱 → 建立跨模态实体关系
  5. 模态感知检索 → 向量搜索 + 图遍历的混合检索

这意味着一份渗透测试报告中的网络拓扑图截图会被视觉分析器识别,CVSS 评分表会被结构化数据解释器解析,命令输出会被作为代码块处理——所有信息最终汇聚到一个统一的知识图谱中。

适用场景
  • 安全行业:渗透测试报告、安全审计文档、威胁情报分析
  • 法律行业:合同文档、证据材料(含扫描件)
  • 医疗行业:含影像报告的病例文档
  • 科研文献:含公式、图表、实验数据的论文

四、与传统方案对比

维度

LangChain

LlamaIndex

GraphRAG

RAG-Anything

多模态支持

❌ 需拼接大量组件

⚠️ 能力有限

❌ 文本为主

✅ 原生支持

图像解析

需外接工具

有限支持

✅ 专用视觉分析器

表格理解

需外接工具

⚠️ 基础支持

✅ 结构化数据解释器

公式解析

✅ 原生 LaTeX 支持

知识图谱

✅ 但成本高

✅ 多模态知识图谱

配置复杂度

极高

低(开箱即用)

成本

极高(需大量 Token)

可控

注:以上对比基于各项目在 2025-2026 年间的公开文档和社区反馈。

核心优势

RAG-Anything 最大的差异化在于其 All-in-One 的设计理念:

  • 不需要在多个工具之间拼接(LangChain 的方式)
  • 不需要为多模态能力做额外适配(LlamaIndex 的局限)
  • 不需要承担 GraphRAG 那样的高昂成本
  • 一个 pip install,一个 RAGAnything 类,搞定所有

五、实际使用心得

在体验 RAG-Anything 之后,我认为它是目前最接近"企业级多模态知识库"的开源方案

安装体验
代码语言:javascript
复制
# 基础安装
pip install raganything

# 全功能安装
pip install 'raganything[all]'

来源:RAG-Anything README.md - “Installation” 章节

需要注意:处理 Office 文档需要额外安装 LibreOffice(免费开源),模型在首次使用时自动下载。

架构亮点

RAG-Anything 的 5 阶段流水线设计值得深入理解:

  1. 文档解析:基于 MinerU 的高保真结构提取
  2. 多模态理解:自动内容分类与并发多流水线处理
  3. 分析引擎:视觉分析器 + 表格解释器 + 公式解析器 + 可扩展处理器
  4. 知识图谱:多模态实体提取、跨模态关系映射、层次结构保持
  5. 智能检索:向量-图谱融合 + 模态感知排序
适用建议
  • 最适合:文档类型混杂、包含大量图片/表格/公式的场景
  • 需注意:Office 文档需要 LibreOffice 支持;首次使用需要下载模型
  • 可选解析器:支持 mineru、docling、paddleocr 三种解析器

六、代码示例——真实项目的使用流程

以下代码来自 RAG-Anything 官方示例文件 examples/raganything_example.py,展示了完整的文档处理与多模态查询流程:

代码语言:javascript
复制
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, paddleocr
        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
    ):
        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="your-document.pdf",
        output_dir="./output",
        parse_method="auto"
    )

    # 文本查询
    result = await rag.aquery("文档的主要内容是什么?", mode="hybrid")
    print(f"Answer: {result}")

    # 多模态查询 - 结合表格数据进行检索
    multimodal_result = await rag.aquery_with_multimodal(
        "请分析这份性能数据并与文档中的类似结果对比",
        multimodal_content=[{
            "type": "table",
            "table_data": """Method,Accuracy,Processing_Time
RAGAnything,95.2%,120ms
Traditional_RAG,87.3%,180ms
Baseline,82.1%,200ms""",
            "table_caption": "性能对比结果",
        }],
        mode="hybrid",
    )
    print(f"Answer: {multimodal_result}")

    # 多模态查询 - 结合数学公式
    equation_result = await rag.aquery_with_multimodal(
        "解释这个公式并与文档中的相关概念关联",
        multimodal_content=[{
            "type": "equation",
            "latex": r"F1 = 2 \cdot \frac{precision \cdot recall}{precision + recall}",
            "equation_caption": "F1-Score 计算公式",
        }],
        mode="hybrid",
    )
    print(f"Answer: {equation_result}")

if __name__ == "__main__":
    asyncio.run(main())

代码来源:https://github.com/HKUDS/RAG-Anything/blob/main/examples/raganything_example.py,有删减和注释调整

代码要点解读
  1. RAGAnythingConfig 是核心配置类,支持灵活启用/禁用各模态处理能力
  2. 支持三种解析器(mineru / docling / paddleocr),适应不同文档类型
  3. vision_model_func 是独立于 llm_model_func 的图像处理通道
  4. aquery() 执行纯文本查询,aquery_with_multimodal() 支持注入表格/公式等多模态内容进行联合检索
  5. mode=“hybrid” 表示使用向量搜索与图遍历的混合检索模式

七、核心观点回顾

回顾全文,我们讨论了以下核心要点:

  1. RAG-Anything 是多模态 RAG 领域的标杆项目,由 HKUDS 团队开发,构建于 LightRAG 之上,定位为 All-in-One 多模态文档处理 RAG 系统。
  2. 它解决了传统 RAG 系统的根本局限——企业文档中 70% 以上的信息存在于非文本载体(图片、表格、公式)中,传统方案无法有效处理这些内容。
  3. 统一解析:PDF、Office 文档、图片等一切文件类型,统一解析为文本+图像+表格+公式的结构化表示。
  4. 多模态知识图谱:不仅是"搜到内容",更是建立跨模态的语义关联——让 AI 真正理解图片中的表格、表格旁边的文字、文字中引用的公式之间的逻辑关系。
  5. 开箱即用:相比 LangChain(需拼接)、LlamaIndex(能力有限)、GraphRAG(成本高昂),RAG-Anything 提供了一站式解决方案。

一句话总结:RAG-Anything 让 “RAG” 不再局限于文字——它是通往"AI 真正理解你的所有文档"之路上的关键一步。


八、参考与延伸

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 一、项目介绍
    • 官方定义
    • 核心目标
    • 项目路线
  • 二、支持的文件类型
  • 三、为什么重要——从安全行业的一个真实场景说起
    • 现实中的痛点
    • RAG-Anything 的解法
    • 适用场景
  • 四、与传统方案对比
    • 核心优势
  • 五、实际使用心得
    • 安装体验
    • 架构亮点
    • 适用建议
  • 六、代码示例——真实项目的使用流程
    • 代码要点解读
  • 七、核心观点回顾
  • 八、参考与延伸
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档