paper2skills Playbook

Multimodal RAG - 图文混合多模态检索增强生成

Skill-Multimodal-RAG · 08-知识图谱

causalexperimentragknowledge_graphvisual_generation客服与VOC推荐与搜索知识图谱与RAG视觉内容生成WF-C 客服分诊WF-G Listing内容优化
业务视角
适用角色选品负责人 / 运营负责人 · 数据分析师 · 供应链负责人
适用平台Amazon 品类体系 · 竞品 ASIN 网络分析
什么情况下用品类很多,不清楚品类间的关联,没法做系统性类目扩张规划;竞品矩阵太复杂,品牌/SKU/渠道理不清
成功是什么样的建立品类知识图谱,清晰看到哪些是入口品/引流品/利润品,指导下一步选品扩张方向
业务痛点
品类太多不知道先做哪个竞品关系理不清楚不知道用户买了奶瓶还会买什么类目扩张没有逻辑

1. 解决的问题

Multimodal RAG(多模态检索增强生成) 将 RAG 系统从纯文本扩展到图文混合模态,实现

2. 核心算法逻辑

Multimodal RAG(多模态检索增强生成) 将 RAG 系统从纯文本扩展到图文混合模态,实现:

3. 业务应用场景

业务背景:母婴卖家在亚马逊/独立站上传产品时,需要提供 FDA、CE、ASTM 等认证证书图片。客服和运营团队每天需要回答"奶瓶 SKU-A32 有 FDA 认证吗?"类问题,但证书存在图片 PDF 中,无法被纯文本系统检索。

Multimodal RAG 方案: 1. 对所有认证证书图片执行 OCR,提取证书编号/机构/有效期 2. CLIP 图像 embedding 索引证书图片 3. 用户文本查询同时检索 OCR 文本索引 + CLIP 图像索引 4. Late Fusion 融合排序后,LMM 生成带图证据的回答

量化 ROI: | 指标 | Before(人工翻查)| After(Multimodal RAG)| 提升 | |---|---|---|---| | 认证查询响应时间 | 15-30分钟 | 30秒 | 97% 降低 | | 认证覆盖率(能被检索到)| 60% | 94% | +57% | | 运营团队效率 | 基准 | 节省 10h/人/周 | $15K/人/年 | | 错误认证引用率 | 8% | 0.5% | -94% |

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

未自动抽取;请查看原始 Skill 卡片。

7. 代码模板

代码块数量:3 · 路径:未检测到

"""
Multimodal RAG - 图文混合多模态检索增强生成
参考论文: CLIP (arXiv:2103.00020), MuRAG (arXiv:2210.02928),
          LLaVA (arXiv:2304.08485)

实现要点:
1. 图文统一 embedding(CLIP 风格,mock 实现)
2. OCR 文字提取(mock)
3. Late Fusion 多模态评分融合
4. 多模态检索器(文本/图像/混合查询)
5. 上下文组装(供 LMM 生成回答)

运行环境:Python 3.9+,无需外部 API(全 mock)
"""

import ast
import math
import random
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, List, Optional, Tuple


# ─────────────────────────────────────────────
# 枚举 & 数据结构
# ─────────────────────────────────────────────

class ModalityType(Enum):
    TEXT = "text"
    IMAGE = "image"
    MULTIMODAL = "multimodal"   # 图文混合文档(如带图说明书)


@dataclass
class MultimodalDocument:
    """多模态文档节点"""
    doc_id: str
    modality: ModalityType
    text: Optional[str] = None          # 文本内容(文本文档 / OCR 文字)
    image_description: Optional[str] = None  # 图像语义描述(mock)
    ocr_text: Optional[str] = None      # OCR 提取的图中文字
    metadata: Dict = field(default_factory=dict)
    text_embedding: Optional[List[float]] = None
    image_embedding: Optional[List[float]] = None


@dataclass
class RetrievalResult:
    """检索结果"""
    document: MultimodalDocument
    text_score: float = 0.0
    image_score: float = 0.0
    fusion_score: float = 0.0
    matched_by: str = "text"    # "text" | "image" | "ocr" | "fusion"


# ─────────────────────────────────────────────
# Mock 工具函数(CLIP 风格)
# ─────────────────────────────────────────────

8. 论文来源

  • 2103.00020
  • 2210.02928
  • 2304.08485