分享
【多模态文档RAG】MiniCPM-V 系列
输入“/”快速插入内容
🔥
【多模态文档RAG】
MiniCPM-V 系列
用户6355
用户6355
2024年8月19日修改
在相当长一段时间内,检索增强生成(RAG)需要使用 OCR 技术把文档中的文本抽取出来,接着使用文本嵌入模型获得语义向量,利用语义向量构建知识库进行检索。这种方法,会丢失所有的图像信息、大部分表格信息、图表信息,存在不可避免的信息损失。
是否能够用一种近乎无损的方法来表征复杂图文文档,从而用来信息无损地检索多模态文档?
传统的图文检索方法包括 CLIP 模型和 SigLip 模型,这些模型在对比学习训练中或多或少获得了一些文档表征能力,但由于先天的结构设计问题,这些模型并不能很好地处理信息密度极高、语义极为复杂的文档,进而无法用作文档表示模型。
但以 GPT-4V, QwenVL, MiniCPM-V-2.0 等为代表的支持 OCR 能力的视觉语言模型,能够理解复杂的图文交错的文档,无论是文本密集型还是图像密集型文档,模型均借助视觉编码器的
视觉能力
和语言模型基座的
强大的文本功底
,形成良好的复杂文档理解能力。
那么,在这些支持 OCR 能力的模型上训练不需要 OCR 的向量检索模型,用来在
大量文档中
检索所需要的文档,就成为可能。
现在我们以 OpenBMB 基于
MiniCPM-V-2.0
训练的端到端多模态检索模型
https://huggingface.co/RhapsodyAI/minicpm-visual-embedding-v0
为例,实现多模态检索。
若不熟悉代码或无GPU,本教程中的代码其实可以忽略,意会即可,笔者在huggingface上搭建了几个免费的demo给大家使用。
若不熟悉多模态信息检索也没有关系!本文的小标题非常容易follow。
多模态文档检索
配置环境
如果你是 Linux+英伟达GPU用户,在开始前,我们需要配置 MiniCPM-V 的运行环境。确保有 8GB 的显存。
首先应该创建一个空的环境,这里用的是 python 自带的
venv
库。
代码块
Bash
python -m venv visrag
创建一个空的 python 3.10 环境,然后进入这个环境:
代码块
Bash
source visrag/bin/activate
用 pip 安装下面的包:
代码块
Plain Text
PyMuPDF
tqdm
gradio
timm
Pillow==10.1.0
sentencepiece==0.1.99
numpy==1.26.0
transformers==4.40.2
torch==2.1.2
torchvision==0.16.2
然后需要安装 torch 和 torchvision,笔者建议从 pytorch 的官方镜像站
https://download.pytorch.org/whl/torch/
和
https://download.pytorch.org/whl/torchvision/
下载。
这里作者的环境是ubuntu18.04+nvidia a800,这里的安装方法不要求cuda版本匹配,只需要nvidia gpu driver能正常工作即可。
为了兼容大多数gpu driver版本,作者建议下载
•
Torch
https://download.pytorch.org/whl/cu118/torch-2.1.2%2Bcu118-cp310-cp310-linux_x86_64.whl#sha256=60396358193f238888540f4a38d78485f161e28ec17fa445f0373b5350ef21f0
•
Torchvision
https://download.pytorch.org/whl/cu118/torchvision-0.16.2%2Bcu118-cp310-cp310-linux_x86_64.whl#sha256=18470aef0bbde73f5a6a96135cd457f4d8be31f60be7ceae4ef5174f02f73add