rag-anything 简介

RAG-Anything 是基于轻量化的 LightRAG ,面向多模态文档(PDF、图片、表格、公式等)处理的RAG系统。该系统能够无缝处理和查询包含文本、图像、表格、公式等多模态内容的复杂文档,提供完整的RAG解决方案。

使用场景

对于以下任意场景,RAG-Anything 会是一个非常好的选择。

  1. 文档为带图表和公式的科研论文、报告、PPT等,需要多模态支持
  2. 需要端到端方案(端到端即用户只需输入原始文档,系统自动完成文档解析->查询响应全部流程,无需人工干预各个中间步骤。)
  3. 文档数量多,需要并行处理

RAG-Anything 亮点

系统架构

在这里插入图片描述

RAG-Anything 的系统架构分为以下几个阶段与功能:

  1. 📄文档解析阶段
    通过高精度解析平台,系统实现多模态元素的完整识别与提取,核心功能包括:1.1. 结构化提取引擎:集成MinerU和Docling,实现文档结构识别与多模态内容提取。
    1.2. 自适应内容分解:智能分离文本、图像、表格和公式,保持语义关联。1.3. 多格式兼容处理:支持 PDF、Office文档、图像等主流格式的统一解析输出。

  2. 🧠多模态内容理解与处理
    通过自主分类路由机制和并发多流水线架构,实现内容的高效并行处理,核心功能包括:
    2.1. 内容分类与路由:将不同内容类型发送至优化处理通道。
    2.2. 并发多流水线:文本与多模态数据并行处理,保证效率与完整性。2.3. 文档层次结构保持:在转换过程中保留原始文档层次和元素关联关系。

  3. 🧠多模态分析引擎
    系统针对异构数据类型设计了模态感知处理单元,核心功能包括:
    3.1. 视觉内容分析器:图像识别、语义标题生成、空间关系解析。
    3.2. 结构化数据解释器:表格分析、趋势识别、多表语义依赖提取。
    3.3. 数学表达式解析器:高精度公式解析,支持 LaTeX 集成。3.4. 可扩展模态处理器:插件式架构支持新模态类型的动态集成。

  4. 🔍多模态知识图谱索引
    将文档内容转化为结构化语义表示,建立跨模态关系,核心功能包括:
    4.1. 多模态实体提取:将重要元素转为知识图谱节点。
    4.2. 跨模态关系映射:文本与多模态组件建立语义连接。
    4.3. 层次结构保持:维护原始文档组织结构。4.4. 加权关系评分:通过语义和上下文权重优化检索。

  5. 🎯模态感知检索
    通过向量搜索与图遍历算法实现内容检索与排序,核心功能包括:
    5.1. 向量-图谱融合:结合语义嵌入与结构关系进行全面检索。
    5.2. 模态感知排序:基于查询类型动态调整结果优先级。5.3. 关系一致性维护:保证检索结果在语义和结构上的一致性。

在这里插入图片描述

rag-anything 安装和使用

安装 rag-anything及其扩展

# 从GitHub克隆项目
git clone https://github.com/HKUDS/RAG-Anything.git
# 进入项目目录
cd RAG-Anything
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
.\venv\Scripts\Activate.ps1
# 安装项目所需基础依赖
pip install -e .
# 安装项目所需扩展依赖
pip install -e '.[all]'

验证MinerU安装(安装rag-anything时会自动安装MinerU)

mineru --version    #查看MinerU版本

python -c "from raganything import RAGAnything; rag = RAGAnything(); print('✅ MinerU安装正常' if rag.check_parser_installation() else '❌ MinerU安装有问题')"#输出✅ MinerU安装正常代表安装成功

rag-anything官方示例运行

下述api-key需要使用OpenAI的,可到openai官网获取apikey或参考使用教程-api及RAGAnything配置自行配置api及模型

# 端到端处理
python examples/raganything_example.py path/to/document.pdf --api-key YOUR_API_KEY --parser mineru

# 直接模态处理
python examples/modalprocessors_example.py --api-key YOUR_API_KEY

# Office文档解析测试(仅MinerU功能)
python examples/office_document_test.py --file path/to/document.docx

# 图像格式解析测试(仅MinerU功能)
python examples/image_format_test.py --file path/to/image.bmp

# 文本格式解析测试(仅MinerU功能)
python examples/text_format_test.py --file path/to/document.md

# 检查LibreOffice安装
python examples/office_document_test.py --check-libreoffice --file dummy

# 检查PIL/Pillow安装
python examples/image_format_test.py --check-pillow --file dummy

# 检查ReportLab安装
python examples/text_format_test.py --check-reportlab --file dummy

使用教程(以硅基流动平台为例)

引入依赖

import asyncio
from raganything import RAGAnything, RAGAnythingConfig
from raganything.modalprocessors import ImageModalProcessor, TableModalProcessor,GenericModalProcessor
from lightrag import LightRAG
from lightrag.llm.openai import openai_complete_if_cache, openai_embed
from lightrag.utils import EmbeddingFunc
import os

api及RAGAnything配置

到硅基流动官网注册账号并获取api-key

在这里插入图片描述

硅基流动的base-url是固定的 https://api.siliconflow.cn/v1

asyncdefmain():
# 设置 API 配置
    api_key = "your api key"# 填写api key
    base_url = "https://api.siliconflow.cn/v1"#填写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模型函数

选择你想要的模型名称

# 定义 LLM 模型函数
defllm_model_func(prompt, system_prompt=None, history_messages=[], **kwargs):
return openai_complete_if_cache(
"THUDM/GLM-4.1V-9B-Thinking",  # 填写模型名称
            prompt,
            system_prompt=system_prompt,
            history_messages=history_messages,
            api_key=api_key,
            base_url=base_url,
            **kwargs,
        )

定义视觉模型函数

按照类型:对话, 标签:视觉筛选,选择你想要的视觉模型

# 定义视觉模型函数用于图像处理
defvision_model_func(
        prompt, system_prompt=None, history_messages=[], image_data=None, messages=None, **kwargs
    ):
# 如果提供了messages格式(用于多模态VLM增强查询),直接使用
if messages:
return openai_complete_if_cache(
"THUDM/GLM-4.1V-9B-Thinking",  # 填写模型名称
"",
                system_prompt=None,
                history_messages=[],
                messages=messages,
                api_key=api_key,
                base_url=base_url,
                **kwargs,
            )
# 传统单图片格式
elif image_data:
return openai_complete_if_cache(
"THUDM/GLM-4.1V-9B-Thinking",   # 填写模型名称
"",
                system_prompt=None,
                history_messages=[],
                messages=[
                    {"role": "system", "content": system_prompt}
if system_prompt
elseNone,
                    {
"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=1024,  # 填写模型维度
        max_token_size=512,  # 填写模型最大token长度
        func=lambda texts: openai_embed(
            texts,
            model="BAAI/bge-m3",    # 填写embedding模型名称
            api_key=api_key,
            base_url=base_url,
        ),
    )

初始化 RAGAnything

# 初始化 RAGAnything
rag = RAGAnything(
        config=config,
        llm_model_func=llm_model_func,  # 上面定义的LLM模型函数
        vision_model_func=vision_model_func,    # 上面定义的视觉模型函数
        embedding_func=embedding_func,    # 上面定义的嵌入模型函数
    )

文档解析

处理文档

# 处理文档
await rag.process_document_complete(
        file_path=r"path\to\your\file.pdf",   # 填写要处理的文件路径
        output_dir="./output",  # 输出目录
        parse_method="auto"
    )

处理多个文档

# 处理多个文档
await rag.process_folder_complete(
    folder_path="./documents",  # 在项目中创建documents文件夹,将要处理的文档放到下面
    output_dir="./output",
    file_extensions=[".pdf", ".docx", ".pptx"], # 填写要处理的文件类型
    recursive=True,  # 是否递归处理子文件夹
    max_workers=4# 要使用的线程数
)

从RAGAnything中查询

纯文本查询

# 1. 纯文本查询 - 基本知识库搜索
    text_result = await rag.aquery(
"文档的主要内容是什么?",    # 填写查询内容
mode="hybrid"   # 选择你的查询模式 mode="hybrid"mode="local"mode="global"mode="naive"
    )
print("文本查询结果:", text_result)

VLM增强查询

# 2. VLM增强查询(RAGAnything初始化时提供vision_model_func会自动启用)
    vlm_result = await rag.aquery(
"分析文档中的图表和数据",    # 填写查询内容
        mode="hybrid"
# vlm_enhanced=True # 也可强制手动选择是否启用
    )
    print("VLm查询结果:", vlm_result)

多模态查询

# 3. 多模态查询 - 包含具体多模态内容的查询
# 3.1 包含表格数据的查询
    multimodal_result = await rag.aquery_with_multimodal(
"分析这个购物车挽回策略表格,并结合文档内容解释针对不同商品类型的挽回手段",    # 查询内容
        multimodal_content=[{
"type": "table",    # 多模态内容类型
"table_data": """商品类型,挽回手段,预期效果
                            服装类,个性化推荐+限时折扣,提升转化率30%
                            电子产品,价格对比+延保服务
                            家居用品,搭配推荐+免费配送
                            美妆护肤,试用装赠送+会员积分""",    # 表格内容
"table_caption": "购物车挽回策略对比表"# 表格标题
        }],
        mode="hybrid"
    )
    print("多模态表格查询结果:", multimodal_result)

# 3.2 包含公式内容的查询
    equation_result = await rag.aquery_with_multimodal(
"解释这个公式及其与文档内容的相关性",
        multimodal_content=[{
"type": "equation",    # 多模态内容类型
"latex": "P(d|q) = \\frac{P(q|d) \\cdot P(d)}{P(q)}",    # 公式内容
"equation_content": "文档相关性概率"# 公式解释
        }],
        mode="hybrid"
    )
    print("多模态公式查询结果:", equation_result)

加载已存在的LightRAG实例(如有,可选)

检查是否已有存储目录

# 定义 LightRAG 实例目录
    lightrag_working_dir = "./existing_lightrag_storage"

# 检查是否存在之前的 LightRAG 实例,若存在则加载,否则创建新实例
if os.path.exists(lightrag_working_dir) and os.listdir(lightrag_working_dir):
print("✅ 发现已存在的 LightRAG 实例,正在加载...")
else:
print("❌ 未找到已存在的 LightRAG 实例,将创建新实例")

创建或加载 LightRAG 实例

# 使用您的配置创建/加载 LightRAG 实例
    lightrag_instance = LightRAG(
        working_dir=lightrag_working_dir,
        llm_model_func=lambda prompt, system_prompt=None, history_messages=[], **kwargs: openai_complete_if_cache(
"THUDM/GLM-4.1V-9B-Thinking",
            prompt,
            system_prompt=system_prompt,
            history_messages=history_messages,
            api_key=api_key,
            base_url=base_url,
            **kwargs,
        ),

        embedding_func=EmbeddingFunc(
            embedding_dim=1024,
            max_token_size=512,
            func=lambda texts: openai_embed(
                texts,
                model="BAAI/bge-m3",
                api_key=api_key,
                base_url=base_url,
            ),
        )
    )

初始化存储

# 初始化存储(如果有现有数据,这将加载它们)
await lightrag_instance.initialize_storages()
await initialize_pipeline_status()

定义视觉模型函数

# 定义视觉模型函数用于图像处理
defvision_model_func(
        prompt, system_prompt=None, history_messages=[], image_data=None, messages=None, **kwargs
    ):
# 如果提供了messages格式(用于多模态VLM增强查询),直接使用
if messages:
return openai_complete_if_cache(
"THUDM/GLM-4.1V-9B-Thinking",
"",
                system_prompt=None,
                history_messages=[],
                messages=messages,
                api_key=api_key,
                base_url=base_url,
                **kwargs,
            )
# 传统单图片格式
elif image_data:
return openai_complete_if_cache(
"THUDM/GLM-4.1V-9B-Thinking",
"",
                system_prompt=None,
                history_messages=[],
                messages=[
                    {"role": "system", "content": system_prompt}
if system_prompt
elseNone,
                    {
"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 lightrag_instance.llm_model_func(prompt, system_prompt, history_messages, **kwargs)

用已有 LightRAG 实例初始化 RAGAnything

# 现在使用已存在的 LightRAG 实例初始化 RAGAnything
rag = RAGAnything(
        lightrag=lightrag_instance,  # 传入已存在的 LightRAG 实例
        vision_model_func=vision_model_func,
# 注意:working_dir、llm_model_func、embedding_func 等都从 lightrag_instance 继承
    )

查询同从RAGAnything中查询

添加新文档

# 向已存在的 LightRAG 实例添加新的多模态文档
await rag.process_document_complete(
        file_path="path/to/new/multimodal_document.pdf",
        output_dir="./output"
    )

直接插入内容列表(如有预解析的内容列表时,可选)

已经有预解析的内容列表(例如,来自外部解析器或之前的处理结果)时,可以直接插入到 RAGAnything 中而无需文档解析

准备内容列表

# 示例:来自外部源的预解析内容列表
    content_list = [
        {
"type": "text",    # 文本类型
"text": "这是我们研究论文的引言部分。",
"page_idx": 0# 内容在原始文档中出现的页码(从0开始的索引)
        },
        {
"type": "image",    # 图像类型
"img_path": r"C:\absolute\path\to\figure1.jpg",  # 重要:使用绝对路径
"img_caption": ["图1:系统架构"],
"img_footnote": ["来源:作者原创设计"],
"page_idx": 1
        },
        {
"type": "table",    # 表格类型
"table_body": "| 方法 | 准确率 | F1分数 |\n|------|--------|--------|\n| 我们的方法 | 95.2% | 0.94 |\n| 基准方法 | 87.3% | 0.85 |",
"table_caption": ["表1:性能对比"],
"table_footnote": ["测试数据集结果"],
"page_idx": 2
        },
        {
"type": "equation",  # 公式类型
"latex": "P(d|q) = \\frac{P(q|d) \\cdot P(d)}{P(q)}",  # 公式的LaTeX表示
"text": "文档相关性概率公式",
"page_idx": 3
        }
    ]

插入内容列表

# 插入内容列表
await rag.insert_content_list(
        content_list=content_list,    # 上面的内容列表
        file_path="research_paper.pdf",  # 用于引用的参考文件名
#split_by_character="\n\n",         # 可选的文本分割
#split_by_character_only=False,   # 可选的文本分割模式
        doc_id=None,                     # 可选的自定义文档ID(如果未提供将自动生成)
#display_stats=True               # 显示内容统计信息
    )

普通人如何抓住AI大模型的风口?

领取方式在文末

为什么要学习大模型?

目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
在这里插入图片描述

随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
在这里插入图片描述

人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!

最后

只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!

在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

在这里插入图片描述

大模型全套学习资料展示

自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。

图片

希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!

01 教学内容

图片

  • 从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!

  • 大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!

02适学人群

应届毕业生‌: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

image.png

vx扫描下方二维码即可
在这里插入图片描述

本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!

03 入门到进阶学习路线图

大模型学习路线图,整体分为5个大的阶段:
图片

04 视频和书籍PDF合集

图片

从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)

图片

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
图片

05 行业报告+白皮书合集

收集70+报告与白皮书,了解行业最新动态!
图片

06 90+份面试题/经验

AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)图片
在这里插入图片描述

07 deepseek部署包+技巧大全

在这里插入图片描述

由于篇幅有限

只展示部分资料

并且还在持续更新中…

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

在这里插入图片描述

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐