跳到主要内容

🔍 实战复盘 | 基于视觉模型的多模态 RAG 系统,我们踩过的坑与收获

· 阅读需 6 分钟
weizxfree
KnowFlow 项目创始人

📋 项目背景

在 KnowFlow 内部交流群的同学都知道,近期我们团队在做一款基于视觉模型的多模态 RAG 系统。经过 2 周左右密集开发,我们进行了全方位的测试,在群内公开召集难啃的文档,现在整体上对于多模态 RAG 有了更加深入的认识。

文章目标

本文旨在为同行开发者和有意向的客户提供一些建议和思考,遵循客观、理性的视角,分享我们的实战经验。

🤔 什么是多模态 RAG?

传统 RAG vs 多模态 RAG

方案类型处理方式优势劣势
传统 RAGOCR 解析 → 文本/表格/图片 → 向量存储成熟稳定,成本较低可能丢失布局信息
多模态 RAG文档图片 → 视觉模型向量化 → 直接检索保持完整视觉信息计算成本较高

🔄 多模态 RAG 工作流程

  1. 文档预处理:将文档转换为图片格式
  2. 向量化存储:使用 ColPali 等框架进行向量化
  3. 相似度检索:通过相似度得分获取高关联性图片
  4. 视觉理解:将图片信息输入视觉模型(如 Qwen2.5 VL)
  5. 结果生成:视觉模型返回最终答案

🧠 什么是 ColPali

ColPali 基于 ColBERT(Contextualized Late Interaction over BERT)方法,并结合视觉语言模型(如 PaliGemma-3B)处理文档的视觉和文本信息。

🔑 核心创新

  • 多向量嵌入:通过文档图像生成 multi-vector embeddings
  • 无需 OCR:直接利用文档的视觉特征进行检索
  • 布局保持:无需复杂的布局分析,保持原始文档结构
核心优势

通过 ColPali,我们无需传统 OCR 解析,直接对文档图片进行嵌入处理,大大节省了预处理时间。

🔧 技术实现流程

步骤 1:文档预处理

将文档按页截图处理,然后输入 ColPali 进行存储

步骤 2:多向量嵌入生成

  • 图像分割:ColPali 将文档图像分割成多个图像块(patches)
  • 嵌入生成:通过视觉语言模型(如 PaliGemma)处理图像块
  • 向量表示:为每个图像块生成独立的嵌入向量,保留细粒度信息

步骤 3:检索匹配

  • 晚交互机制:使用 ColBERT 的晚交互机制
  • 相似度计算:查询嵌入与文档多个嵌入向量逐一匹配
  • 得分汇总:计算查询与文档的总体相关性得分

📊 实测效果

在我们的系统实测中:

指标表现说明
检索准确率~90%大大超出预期
响应速度接近传统 OCRGPU 加速下表现优异
存储方案Milvus 向量数据库稳定可靠
超预期表现

检索准确率达到 90%,在 GPU 加持下速度接近传统 OCR 解析耗时。

视觉模型选择

考虑到模型的扩展性,我们采用了 LiteLLM 来接入视觉模型,目前支持 Ollama 和兼容 OpenAPI 协议的在线模型,如硅基流动和 Qwen API。

在项目实测过程中,我们挑选了:

  • Ollama 本地部署的 Qwen2.5 VL 32B 模型
  • 在线 Qwen 2.5VL 72B API

其中硬件配置 RTX 单卡4090 48G 显存运行 Qwen2.5 VL 32B 很流畅,24G 没有实测过,预估可能会有点卡顿。

实测效果演示

在交流群内公开召集了一些文档,这些文档大多数结构比较复杂,传统的如 RAGFlow RAG 系统处理的不是特别好。

案例 1:本科在辽宁招生计划.pdf

Q: 南昌航空大学科技学院招生情况?

A: 大家可以比对下,基本上完美回答。

案例 2:公路桥梁钢结构防腐涂装技术条件.pdf

Q: 非封闭环境内涂层体系?

A: 也是完美回答。

案例 3:公路桥梁抗震设计规范JTG T 2231 01 2020_2020抗震规范.pdf

Q: 桥梁抗震措施等级

A: 此处回答中规中矩,命中了表格内的部分数据。

案例 4:公路桥梁抗震设计规范JTG T 2231 01 2020_2020抗震规范.pdf

Q: 桥梁抗震设防目标

A: 此处回答的有点不符合预期,没有正确识别到问题语义。

结论与思考

基于视觉模型的多模态 RAG 系统,针对一些复杂文档结构的样例确实展示出了他的优越性,基本无损的还原和理解文档的信息,基于视觉模型的能力后续可以在图片上进一步做增强,比如圈选和理解。

优势

  1. 检索准确率高:检索这块大大超出预期,基本上能快速检索出目标图像
  2. 结构保持完整:对于复杂文档结构能够很好地保持原有布局和格式
  3. 无需复杂预处理:省去了传统 OCR 的复杂解析步骤

挑战与限制

  1. 视觉模型瓶颈:目前该系统的瓶颈在于视觉模型,在实际测试过程中基于本地部署的 Qwen2.5 VL 32B 模型,经常会出现语义理解失败、图片理解幻觉等问题。

  2. 成本考量:72B 的在线模型这些问题基本上不存在了,但付出的成本可想而知,商业一定是要考虑 ROI。

  3. 人工干预困难:同时基于图片的 RAG 识别方案,天然决定了人工标注和干预的能力大打折扣,我们无法做到像 RAGFlow 一样人工的修正 chunk 的数据。也就是说,当然国外也有一些针对于图片的标注方案,但实施成本反而很高。

最终结论

基于上述分析,我们给出一个结论:多模态 RAG 系统的天花板很高,但付出的成本也很大,ROI 整体来看不是那么高,短期的市场内,一定取代不了以文本为主的 RAG 系统。

但随着新的多模态向量化模型以及视觉模型的不断涌现,最终会渐渐的走入 RAG 的舞台。至于是什么时候,无法预料,但最终肯定会。

KVisualRAG 未来展望

对于 KVisualRAG,我们实现了基于纯向量化的检索匹配,依照国外一些成熟的技术方案,在保证检索准确率的前提下,为用户提供了一个可以实际使用的多模态 RAG 解决方案。

虽然目前还存在一些挑战,但我们相信随着技术的不断发展,多模态 RAG 将会成为文档处理领域的重要发展方向。我们将持续关注这一领域的技术进展,并不断优化我们的解决方案。


项目已开源,欢迎大家关注和参与贡献!