
在数字化时代,我们每天都在接触大量的视觉信息——从技术文档里的图表、学术论文里的插图,到社交媒体上的图片和视频。
如何让 AI 真正理解并推理这些复杂的视觉信息,一直是多模态 AI 领域的核心挑战。
传统的检索增强生成(RAG)方法在处理纯文本时表现不错,但一旦涉及到视觉内容,往往就显得力不从心。
要么是固定流程太死板,无法像人类一样灵活地观察和思考;要么是推理能力跟不上,难以从复杂的视觉信息中提取关键线索。
最近,阿里巴巴通义实验室在 GitHub 上开源了一个名为 VRAG 的项目,直接把强化学习(RL)引入了多模态智能体训练,给这个领域带来了全新的思路。

这个项目在多项基准测试中比现有方法提升了20-30%,效果相当惊艳。
VRAG 是由阿里巴巴通义实验室打造的多模态检索增强生成框架。这个项目包含了三个核心部分:VRAG-RL、VRAG和VimRAG,每一个都有自己独特的定位和能力。
简单来说,VRAG想要解决的问题是:如何让视觉语言模型(VLMs)像人类一样,主动地去观察、去推理、去理解复杂的视觉信息?
人类在看一张复杂的图表时,不会一次性把所有信息都塞进脑子里,而是会先看个大概,然后逐步聚焦到关键区域,通过裁剪、缩放等方式获取更详细的信息。
VRAG就是要让AI也具备这种能力。
1、多模态记忆图 + 图引导策略优化
VimRAG 提出了两个非常有意思的概念:多模态记忆图(Multimodal Memory Graph)和图引导策略优化(Graph-Guided Policy Optimization,简称GGPO)。
传统的推理过程往往是线性的,而 VimRAG 把它建模成了一个动态的有向无环图(DAG)。这个图可以记录推理过程中的每一个步骤,包括检索到了什么信息、做了什么决策、得到了什么结果。
更厉害的是,它还能通过剪枝记忆节点来去掉那些冗余的动作,让推理过程更高效。
GGPO 则是用来优化训练的。它实现了细粒度的信用分配,能准确地告诉模型:你刚才的哪些动作是对的,哪些是错的。这大大加快了训练的收敛速度,让模型能更快地学会如何有效地进行推理。
2、从粗到细的渐进式感知
VRAG的另一个亮点是它的渐进式感知机制。
这就像人类在看东西时的行为:先看个整体,知道这张图大概讲了什么;然后逐步聚焦到信息密集的区域,比如图表的某个角落、文档的某段文字;最后通过裁剪和缩放,获取最关键的细节信息。
这个过程是通过视觉感知动作空间来实现的。VRAG定义了多种视觉感知动作,比如区域选择、裁剪、缩放等等。
模型可以自主选择使用哪些动作,来逐步提取视觉信息。这种从粗粒度到细粒度的感知方式,不仅提高了模型对视觉信息的理解能力,还显著提升了检索效率。
3、强化学习驱动的训练框架
VRAG-RL是这个项目的训练框架,它创新性地把强化学习引入了多模态智能体的训练中。
用的是业界领先的 GRPO 算法,让视觉语言模型在与搜索引擎的多轮交互中,持续优化自己的检索与推理能力。
为了让训练更高效,项目还实现了本地部署搜索引擎来模拟真实世界的应用场景,这样搜索引擎调用就是零成本了。而且这个训练框架的扩展性很强,支持各种不同的工具,你可以根据自己的需求来定制。
还可以构建自己的检索器。项目支持三种类型的语料:
构建索引的过程也很简单,几行Python代码就能搞定。而且索引会自动定期保存,如果中断了,重新运行会从上次的检查点继续,不用从头开始。
说了这么多,VRAG的实际效果到底怎么样呢?根据论文里的数据,在多项基准测试中,VRAG-RL比现有方法提升了20-30%!
具体来说:
这个提升幅度相当大,足以说明VRAG框架的有效性。
除了效果好,VRAG还有以下技术特点:
第一步:环境准备
首先,你需要创建一个Python 3.10的环境:
conda create -n vrag python=3.10然后克隆项目并安装依赖:
git clone https://github.com/alibaba-nlp/VRAG.git
cd VRAG
pip install -r requirements.txt第二步:一键启动Demo
项目提供了非常方便的一键启动脚本,你可以根据自己的需求选择:
VimRAG(推荐,无需本地GPU):
export DASHSCOPE_API_KEY=你的_api_key
./run_demo.sh vimragVRAG(本地模型,需要A100 80G):
./run_demo.sh vrag仅启动搜索引擎:
./run_demo.sh search第三步:手动启动(可选)
如果你想更灵活地控制启动过程,也可以手动启动:
VimRAG手动启动:
# 终端1:启动搜索引擎
python search_engine/search_engine_api.py
# 终端2:启动Streamlit Demo
streamlit run demo/vimrag_app.pyVRAG手动启动:
# 终端1:启动搜索引擎(端口8001)
python search_engine/search_engine_api.py
# 终端2:启动vLLM服务器(端口8002)
vllm serve autumncc/Qwen2.5-VL-7B-VRAG \
--port 8002 \
--host 0.0.0.0 \
--limit-mm-per-prompt image=10 \
--served-model-name Qwen/Qwen2.5-VL-7B-Instruct
# 终端3:启动Streamlit Demo
streamlit run demo/app.py你也可以通过编程方式来使用VRAG:
import os
from demo.vimrag_agent import VimRAG
agent = VimRAG(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
search_url="http://localhost:8001/search",
model_name="qwen3.5-plus",
api_key=os.environ.get("DASHSCOPE_API_KEY"),
enable_thinking=True
)
for event in agent.run({"query": "你的问题"}):
if event["event"] == "answer":
print(event["content"])如果你想训练自己的模型,VRAG-RL的训练代码已经开源了:
cd VRAG-RL
pip install -e .
pip install -r requirements_train.txt
./train_grpo_qwen2_5_vl_7b.sh详细的训练说明可以看 VRAG-RL/README.md。VimRAG的训练代码还在公司审核中,之后会发布。
总的来说,阿里巴巴通义实验室这波开源,给多模态RAG领域带来了全新的思路。把强化学习引入多模态智能体训练,让模型能像人类一样主动地去观察和推理,这个方向非常有前景。
如果你正在做多模态相关的工作,或者想要构建自己的多模态知识库,VRAG绝对值得你关注和尝试。
项目文档很详细,Demo也很容易上手。
GitHub:https://github.com/Alibaba-NLP/VRAG