Vgent是NeurIPS 2025上提出的一种创新性框架,旨在解决大型视频语言模型(LVLMs)在长视频理解任务中面临的挑战。随着视频内容在互联网上的爆炸式增长,从30分钟的vlog到2小时的电影,传统视频理解方法在处理这类长视频时往往捉襟见肘。
核心问题在于:一个30分钟的视频可能产生超过20万tokens,远超现有模型的上下文窗口限制。现有解决方案如稀疏帧采样或token压缩都会导致视觉信息丢失,而直接将视频分割为独立片段又会破坏时间连续性。Vgent通过两个关键创新点应对这些挑战:
实验证明,Vgent在MLVU、VideoMME和LongVideoBench三个基准上,相比基线模型提升3.0%-5.4%,比现有视频RAG方法高出8.6%。
视频图构建是Vgent的离线预处理阶段,包含四个关键步骤:
首先将长视频按固定帧数(默认K=64帧)分割为连续片段。例如一个30分钟的视频(约1800秒,按1FPS采样)会被分割为约28个片段。这种分块策略平衡了:
实际操作中,代码通过torch.split实现高效分块:
python复制split_video_inputs = torch.split(video_inputs[0], self.args.chunk_size, dim=0)
对每个视频片段,使用LVLM提取三类关键信息:
同时收集该时间段内的字幕文本。这些信息共同构成节点的属性:
python复制video_graph.add_node(
idx,
actions=actions,
scenes=scenes,
entities=entities,
subtitles=current_subtitles
)
由于LVLM独立处理每个片段,需要跨片段统一相同实体的表示。Vgent采用语义相似度计算(使用BAAI/bge-large-en-v1.5模型):
这一步骤解决了视频中同一对象可能有不同描述的问题(如"穿红衣服的女人"和"主持人"可能指同一人)。
实体合并后,包含相同实体的节点会被连接,形成语义关联网络。例如:
这种表示方法自然地保留了视频中的:
当收到用户查询时,Vgent首先分析问题本质:
python复制reason_prompt = REASONING_PROMPT.format(query=question, candidates=candidates)
response = self.mllm_response(..., reason_prompt, ...)
llm_info = json.loads(response)
提示词模板会引导模型判断:
基于分析结果,系统组合三种检索策略:
传统RAG直接将检索结果输入生成模型,而Vgent新增了验证环节:
这一过程显著减少了两种常见错误:
经过验证的片段及其推理结果共同作为增强上下文,输入LVLM生成最终答案。这种设计使得模型能够:
Vgent的代码实现考虑了大规模处理的效率问题:
采用PyTorch分布式训练框架,实现多GPU并行处理:
python复制dist.init_process_group(backend="nccl")
shard_dataset = IterableDatasetShard(dataset, ..., num_processes=world_size)
每个GPU处理视频的一个子集,通过共享文件系统同步进度。
构建完成的图结构以pickle格式缓存:
python复制pickle.dump({"video_graph": video_graph, ...}, open(f"{path}.pkl", 'wb'))
后续处理可直接加载,避免重复计算。
根据视频长度自动调整处理策略:
实验确定的超参数组合:
| 参数 | 值 | 作用 |
|---|---|---|
| chunk_size | 64 | 每个视频片段的帧数 |
| τ | 0.7 | 实体合并相似度阈值 |
| θ | 0.5 | 检索相似度阈值 |
| N | 20 | 初始检索片段数 |
| r | 5 | 精炼后保留片段数 |
这些参数在三个基准上表现稳定,实际应用时可针对特定领域微调。
Vgent特别适合以下长视频理解任务:
复杂事件理解:
跨片段推理:
细粒度问答:
在MLVU基准上的实验结果:
| 方法 | 准确率 | 相对提升 |
|---|---|---|
| 基线LVLM | 58.2% | - |
| 传统RAG | 62.1% | +3.9% |
| Vgent | 70.7% | +12.5% |
特别是在需要时序推理的任务上,Vgent优势更明显:
硬件配置:
预处理优化:
模型选择:
实体合并不准:
检索片段过多:
生成答案偏离:
多模态增强:
动态图更新:
领域适配:
Vgent为长视频理解提供了系统性的解决方案,其图结构与推理机制的设计思想也可迁移到其他时序多模态任务中。代码已开源,建议结合具体应用场景进行二次开发。