Jean's Blog

一个专注软件测试开发技术的个人博客

0%

RAG组件--向量嵌入之多模态嵌入技术

多模态的RAG系统

image-20250815103626944

Visualized_BGE模型

GitHub地址:https://github.com/FlagOpen/FlagEmbedding/blob/master/research/visual_bge/README.md

  • 多模态处理能力:在同一模型框架下同时处理图像和文本数据,支持图片和文字的双模态编码。

  • 统一嵌入空间:将不同模态的数据映射到同一向量空间,便于进行跨模态的相似度计算与检索。

  • 跨模态检索:实现图文互搜功能,例如根据文字描述检索相关图片,或根据图片检索匹配的文字描述。

  • 安装注意事项:

    1
    2
    3
    git 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
    • 知识图谱集成:图嵌入技术的开发应用
  • 前沿研究:
    • 自适应和上下文感知嵌入
    • 层次化语义表征学习
    • 更精细的评估方法论
  • 技术特点:
    • 俄罗斯套娃式嵌入允许各取所需,适应不同计算资源场景
    • 层次化表征可捕捉从标题到细节的语义层次
    • 领域专用模型在特定场景表现更优