RAG-Anything:一个框架搞定PDF、表格、公式、图片的多模态RAG检索
RAG-Anything:一个框架搞定PDF、表格、公式、图片的多模态RAG检索 你是不是也被这些问题折磨过? 领导甩来一份50页的PDF报告,让你半小时内提炼核心结论;学术论文里密密麻麻的数学公式和实验数据表格,传统RAG工具一解析全变成乱码;产品经理扔过来一份PPT加上Excel数
RAG-Anything:一个框架搞定PDF、表格、公式、图片的多模态RAG检索
你是不是也被这些问题折磨过?
领导甩来一份50页的PDF报告,让你半小时内提炼核心结论;学术论文里密密麻麻的数学公式和实验数据表格,传统RAG工具一解析全变成乱码;产品经理扔过来一份PPT加上Excel数据表,问你"这些数据说明了啥"——你打开一看,图片、表格、公式混在一起,现有的RAG方案根本搞不定。市面上的RAG框架大多只能处理纯文本,遇到多模态内容就抓瞎,要么丢信息,要么直接报错。香港大学HKUDS团队开源的RAG-Anything,就是为解决这个问题而生的。
项目是什么?
RAG-Anything是一个基于LightRAG构建的All-in-One多模态RAG框架,提供从文档解析到多模态查询的完整流水线,能同时处理文本、图片、表格、数学公式等多种内容类型,并通过知识图谱+向量融合检索实现精准问答。
核心功能一览
- 端到端多模态处理:从文档输入到多模态查询输出,一条流水线走完,不用自己拼凑工具链
- 多格式文档支持:PDF、Office全家桶(DOC/DOCX/PPT/PPTX/XLS/XLSX)、常见图片格式(JPG/PNG/BMP/TIFF/GIF/WebP)、纯文本(TXT/MD),基本覆盖你能遇到的文档类型
- 四大多模态内容引擎:
- 视觉内容分析器——让AI"看懂"图片 - 结构化数据解释器——让AI"读懂"表格 - 数学表达式解析器——让AI"算明白"公式(支持LaTeX) - 可扩展模态处理器——自定义内容类型,想加啥加啥
- 多模态知识图谱索引:自动从文档中提取实体、建立跨模态关系,把散落在不同格式里的知识串起来
- VLM增强查询:文档含图片时,直接调用视觉语言模型(VLM)进行多模态分析,不再只有"文字描述图片"这一条路
- 多模态内容查询:可以同时用文本、图片、表格、公式进行混合查询,像和人聊天一样自然
- 向量+图融合检索:向量相似性搜索保"广度",图遍历算法保"深度",两者结合,召回率和准确率兼得
- 三种解析器可选:MinerU(默认,效果最好)、Docling、PaddleOCR,按需选择
- 直接内容列表插入:已有解析好的内容?跳过文档解析,直接插入,节省时间
- 兼容OpenAI API:任何OpenAI兼容的LLM和Embedding都能用,不绑定特定模型
安装步骤
前置条件
- Python 3.10+
- 确保有可用的OpenAI兼容API(本地部署或云端均可)
方式一:pip安装(推荐新手)
# 基础安装(仅核心功能)
pip install raganything
# 全功能安装(推荐,包含所有解析器依赖)
pip install 'raganything[all]'Windows用户注意:如果遇到编译错误,建议先安装Visual C++ Build Tools,或直接用WSL。
方式二:从源码安装(适合需要二次开发的用户)
git clone https://github.com/HKUDS/RAG-Anything.git
cd RAG-Anything
# 安装uv(极速Python包管理器)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 同步依赖
uv syncWindows用户:uv安装建议用PowerShell:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Office文档额外依赖
如果你需要处理Office格式文档(DOC/DOCX/PPT/PPTX/XLS/XLSX),还需要安装LibreOffice:
# macOS
brew install --cask libreoffice
# Ubuntu / Debian
sudo apt-get update && sudo apt-get install libreoffice
# Windows
# 前往 https://www.libreoffice.org/download/ 下载安装包,或用Chocolatey:
choco install libreoffice验证安装
python -c "from raganything import RAGAnything; print('RAG-Anything安装成功!')"看到"RAG-Anything安装成功!"就说明环境就绪了。
使用方法
1. 端到端文档处理(最常用)
这是最核心的用法:给一个文档,自动完成解析→索引→存储,之后就能查询了。
import asyncio
from raganything import RAGAnything, RAGAnythingConfig
from lightrag.llm.openai import openai_complete_if_cache, openai_embed
from lightrag.utils import EmbeddingFunc
async def main():
# 第一步:配置
config = RAGAnythingConfig(
working_dir="./rag_storage", # 存储目录,索引文件都在这里
parser="mineru", # 解析器选择:mineru/docling/paddleocr
parse_method="auto", # 解析方法:auto自动识别
enable_image_processing=True, # 开启图片处理
enable_table_processing=True, # 开启表格处理
enable_equation_processing=True, # 开启公式处理
)
# 第二步:初始化RAG引擎
rag = RAGAnything(
config=config,
llm_model_func=openai_complete_if_cache, # LLM函数
vision_model_func=openai_complete_if_cache, # 视觉模型函数(可复用LLM)
embedding_func=EmbeddingFunc(
embedding_dim=1536,
max_token_size=8192,
func=lambda texts: openai_embed(
texts, model="text-embedding-3-small", base_url="https://api.openai.com/v1"
)
),
)
# 第三步:处理文档(解析+索引+存储,一次搞定)
await rag.process_document_complete(
file_path="./sample_report.pdf", # 你的文档路径
output_dir="./output/" # 中间解析结果输出目录
)
# 第四步:查询
result = await rag.aquery("这份报告的核心结论是什么?", mode="hybrid")
print(result)
asyncio.run(main())关键参数解释:
mode="hybrid":混合模式,同时用向量检索和图遍历,效果最好。还有local(仅向量)和global(仅图)模式可选parser="mineru":MinerU是默认解析器,对中文PDF效果优秀;如果遇到问题可以试试docling或paddleocr
2. 多模态查询(进阶用法)
不止能问纯文本问题,你可以把表格、图片、公式作为查询的一部分:
# 带表格数据的查询——适合"帮我对比一下这组数据"
result = await rag.aquery_with_multimodal(
"比较这些性能指标,哪个模型表现最好?",
multimodal_content=[{
"type": "table",
"table_data": "| 模型 | 准确率 | F1 | 推理速度 |\n|------|--------|-----|----------|\n| GPT-4 | 92.3 | 91.8 | 45ms |\n| Claude | 91.7 | 90.5 | 38ms |\n| GLM-4 | 90.1 | 89.2 | 42ms |",
"table_caption": "大模型性能对比表"
}],
mode="hybrid"
)
print(result)# 带图片的查询——适合"这张图里的趋势说明了什么"
result = await rag.aquery_with_multimodal(
"分析这张图表展示的增长趋势",
multimodal_content=[{
"type": "image",
"image_path": "./charts/revenue_trend.png",
"image_caption": "2024年各季度营收趋势图"
}],
mode="hybrid"
)
print(result)3. VLM增强查询(文档含图片时必用)
当你的文档里包含图片,用VLM(视觉语言模型)增强可以让AI直接"看到"图片内容,而不只是依赖之前的文字描述:
result = await rag.aquery(
"文档中的架构图展示了什么?各模块之间是什么关系?",
mode="hybrid",
vlm_enhanced=True # 关键:开启VLM增强
)
print(result)VLM增强的工作原理:普通的RAG流程遇到图片,只能用图片的文字描述(alt text、caption等)来检索;开启vlm_enhanced=True后,系统会直接把相关图片传给视觉模型去理解,再结合文本信息一起生成回答。这就像从"听别人描述图片"升级到了"自己看图片"。
4. 直接内容插入(已有解析数据时使用)
如果你已经有了解析好的内容(比如从其他系统导出的结构化数据),可以跳过文档解析步骤,直接插入:
contents = [
{
"type": "text",
"content": "深度学习是机器学习的一个子领域,基于人工神经网络的多层结构..."
},
{
"type": "table",
"table_data": "模型,准确率\nResNet,96.5\nViT,97.2",
"table_caption": "图像分类模型对比"
}
]
await rag.insert_content_list(contents)实际场景举例
| 场景 | 文档类型 | 怎么用RAG-Anything |
|---|---|---|
| 学术论文阅读 | PDF(含公式+图表) | 用MinerU解析,开启公式和图片处理,用VLM增强查询图表含义 |
| 企业年报分析 | PDF/PPTX | 开启表格处理提取财务数据,用多模态查询交叉对比 |
| 会议纪要整理 | DOCX | 直接端到端处理,hybrid模式查询关键决策 |
| 产品手册检索 | PDF(含架构图+流程表) | 开启VLM增强,对架构图进行视觉理解查询 |
| 实验数据分析 | Excel+PDF | 表格处理提取数据,结合文本描述做关联查询 |
| 教材知识问答 | PDF(含LaTeX公式) | 开启公式解析,学生可以问"这个公式的物理意义是什么" |
| 技术文档检索 | Markdown+图片 | 直接内容插入,用混合检索定位特定API用法 |
跟同类框架对比
| 特性 | RAG-Anything | LangChain RAG | LlamaIndex | 原生LightRAG |
|---|---|---|---|---|
| 多模态文档解析 | ✅ 开箱即用(PDF/Office/图片/文本) | ❌ 需自配解析器 | ⚠️ 部分支持 | ❌ 仅纯文本 |
| 图片理解 | ✅ VLM增强查询 | ⚠️ 需自建pipeline | ⚠️ 需额外集成 | ❌ 不支持 |
| 表格处理 | ✅ 内置结构化数据解释器 | ⚠️ 基础支持 | ⚠️ 基础支持 | ❌ 不支持 |
| 公式/LaTeX解析 | ✅ 专用数学表达式解析器 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 |
| 知识图谱索引 | ✅ 自动构建跨模态图谱 | ❌ 纯向量 | ⚠️ 需额外配置 | ✅ 但仅文本 |
| 解析器选择 | ✅ 3种可选(MinerU/Docling/PaddleOCR) | ❌ 自己选自己配 | ⚠️ 有限选择 | ❌ 无解析 |
| 混合检索 | ✅ 向量+图融合 | ⚠️ 仅向量 | ⚠️ 仅向量 | ✅ 向量+图 |
| 多模态查询 | ✅ 文本+图片+表格+公式 | ❌ 仅文本 | ⚠️ 部分多模态 | ❌ 仅文本 |
| OpenAI兼容 | ✅ 任何兼容API | ✅ 是 | ✅ 是 | ✅ 是 |
| 安装难度 | 简单(pip install一键) | 中等(需配依赖链) | 中等 | 简单 |
一句话总结:RAG-Anything不是又一个RAG框架,它是目前唯一一个能原生处理多模态内容的RAG框架。其他方案要么不支持,要么需要你自己拼凑多个工具。RAG-Anything把文档解析、多模态理解、知识图谱索引、混合检索全部集成了一个All-in-One流水线,开箱即用。
小结
RAG-Anything解决了传统RAG框架只能处理纯文本的核心痛点,让PDF里的公式、PPT里的图表、Excel里的数据、论文里的配图都能被AI正确理解并精准检索。如果你经常需要从多模态文档中提取信息,这个框架值得立刻尝试。
项目地址:https://github.com/HKUDS/RAG-Anything 论文:arXiv 2510.12323
读者评论
0 条暂无评论,来分享你的看法吧
相关推荐
结合当前内容、你的浏览习惯和搜索偏好推荐。

