多模态的RAG系统

Visualized_BGE模型
GitHub地址:https://github.com/FlagOpen/FlagEmbedding/blob/master/research/visual_bge/README.md
多模态处理能力:在同一模型框架下同时处理图像和文本数据,支持图片和文字的双模态编码。
统一嵌入空间:将不同模态的数据映射到同一向量空间,便于进行跨模态的相似度计算与检索。
跨模态检索:实现图文互搜功能,例如根据文字描述检索相关图片,或根据图片检索匹配的文字描述。
安装注意事项:
1
2
3git clone https://github.com/FlagOpen/FlagEmbedding.git
cd FlagEmbedding/research/visual_bge
pip install -e .
- 需要单独安装visual_bge子模块,不能通过安装FlagEmbedding整体包自动包含
- 必须从FlagEmbedding/research/visual_bge目录进行安装
- 核心依赖包:torchvision、timm、einops、ftfy —
pip install torchvision timm einops ftfy - 非必要包:xformer和apex可省略,可能引起安装问题
模型支持:
- 目前仅支持两种基础模型:BAAI/bge-base-en-v1.5(768维)和BAAI/bge-m3(1024维)
- 每个基础模型对应一对文本和视觉权重文件(约374MB)
- 权重文件需要手动下载并指定路径
编码方式:
- 支持纯图片编码、纯文本编码以及图文混合编码
- 通过model.encode()方法实现,参数可单独或组合传入image和text
多模态嵌入简单示例
示例代码
1 |
- 编码实践:
- 纯图片编码:仅传入image_path参数
- 多模态编码:同时传入image_path和描述文本
- 输出向量维度:base-en-v1.5为768维,m3为1024维
- 权重参数设计:
- 混合检索中weights参数控制稀疏和稠密向量的相对重要性
- 权重值不需要总和为1,表示的是比例关系(如0.7:1.0)
- 实际应用中可根据检索效果动态调整权重比例
- 编码结果差异:
- 纯图片嵌入向量示例值:[0.81775758, -0.02236984, …]
- 多模态嵌入向量示例值:[0.02968888, -0.02825667, …]
- 向量范数:纯图片为1.0,多模态为0.9999999403953552
- 应用场景:
- 电商推荐系统:通过图片检索相似产品
- 内容管理:对图文博客进行多模态编码和检索
- 游戏场景检索:基于战斗场景图片查找类似游戏画面
嵌入技术的最新进展
发展方向
多语言、多模态、轻量化、性价比、长窗口、高维度
Matryoshka Representation Learning (MRL)
领域特定嵌入(Voyage AI 的 voyage-finance-2)
图嵌入(知识图谱集成)
自适应和上下文感知 embedding / 上下文理解能力的增强
层次化表征学习
更细致的评估
主流方向:
- 多语言与多模态支持
- 轻量化部署与性价比优化
- 长上下文窗口处理能力
- 高维度表征能力
- 创新技术:
- 套娃式嵌入学习(MRL):分层级学习不同维度的表征(如64维、512维、1024维)
- 领域特定嵌入:如金融专用模型voyage-finance-2
- 知识图谱集成:图嵌入技术的开发应用
- 前沿研究:
- 自适应和上下文感知嵌入
- 层次化语义表征学习
- 更精细的评估方法论
- 技术特点:
- 俄罗斯套娃式嵌入允许各取所需,适应不同计算资源场景
- 层次化表征可捕捉从标题到细节的语义层次
- 领域专用模型在特定场景表现更优