Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Multimodal RAG

多模态 RAG 会在检索文本的同时检索图像、视频帧、音频和页面扫描件,然后让视觉语言模型根据检索结果作答。

多模态 RAG 是在包含图像、视频、音频、扫描文档或渲染文档以及文本的知识库上进行检索增强生成 (RAG)。提问后,系统会从任意模态中检索最相关的内容,再由视觉语言模型 (VLM)根据这些内容生成答案。这样一来,系统就能直接检索并读取接线图、产品照片或 PDF 中的图表,而不必只依赖他人事先撰写的文本描述。

非文本数据的索引方式#

最简单的方法是将所有内容转换为文本。图像字幕生成、光学字符识别 (OCR)、语音转文本转录,以及目标检测生成的标签,都会用文字描述各个项目,供普通文本索引搜索。这种方法可以原样复用文本 RAG 流程,但描述未涵盖的信息也会随之丢失。

第二种方法是在同一个共享空间中嵌入图像和文本。使用对比学习训练的模型,例如 OpenAI 的 CLIP和 Google 的 SigLIP,会将照片及其描述句映射到彼此接近的嵌入,因此文本问题可以直接从向量数据库检索图像。对于文档,ColPali(2024)会将每页截图嵌入为由图像块向量组成的网格,并通过类似 ColBERT的后期交互方式,根据问题中的 Token 为其评分;对于充满表格和图表的 PDF,这种方法无需 OCR 和布局解析。

接下来,系统会将检索到的内容(通常包含图像和文本段落)与问题一起传递给 VLM。基于检索图像进行依据校准可以减少模型对训练期间从未见过的视觉细节产生幻觉,例如某家公司控制面板的布局。

共享嵌入空间中的检索#

此示例使用 CLIP ViT-B/32 检查点,从包含两张图像的知识库中选出回答每个问题的图像:

import requests
from PIL import Image
from transformers import CLIPModel, CLIPProcessor

model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")

# Image knowledge base: CLIP embeds images and text into one shared vector space
urls = ["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]
images = [Image.open(requests.get(url, stream=True, timeout=10).raw) for url in urls]
questions = ["What color is the man's tie?", "How many people are standing next to the bus?"]

# Retrieve: score each question against every image and keep the best match for the VLM
inputs = processor(text=questions, images=images, return_tensors="pt", padding=True)
scores = model(**inputs).logits_per_text
for question, row in zip(questions, scores):
    print(f"{question} -> {urls[row.argmax()].split('/')[-1]}")

询问领带的问题会检索到 zidane.jpg,询问巴士的问题则会检索到 bus.jpg,因为 CLIP 会将每个问题的文本嵌入与其描述的照片匹配得最近。Ultralytics LLM 接口负责后续的生成步骤:llm(question, image=...) 会在一次调用中将问题和检索到的图像发送给任何兼容 OpenAI 的视觉语言模型,并返回服务提供方的响应。

  • 视觉问答 (VQA):回答用户提供的图像相关问题。多模态 RAG 则会先从成千上万张图像、页面或视频片段中找到要查看的内容。
  • 多模态模型:这类生成模型(例如 OpenAI 的 GPT 或 Google 的 Gemini 模型)可以同时读取图像和文本。多模态 RAG 是决定这些模型能看到什么内容的检索系统。
  • 语义搜索:单独使用检索环节,将排序后的结果返回给人,而不是返回给模型。

实际应用#

  • 制造业维护:技术人员拍下故障部件的照片,系统会检索包含对应爆炸图的手册页面,以及同一组件以往维修时拍摄的照片。
  • 零售搜索与支持:购物者上传的照片可以检索视觉上相似的商品目录项目,助手则根据产品资料回答适配性或兼容性问题。
  • 文档问答:年度报告、科学论文和幻灯片中的关键数字常以图表形式呈现,而通过页面图像检索即可找到这些内容,无需单独使用表格解析器。
  • 视频理解:通过嵌入对采样帧或短片段建立索引后,诸如“送货车什么时候到的?”这样的问题就能检索到相应的几分钟视频,让 VLM 读取少量帧,而不是数小时的视频。

设计权衡#

图像会大量占用上下文:VLM 会将每张图像转换为数百或数千个 Token,因此处理流程通常只传递排名靠前的少数几张检索图像,并用较短的文本段落补充上下文。共享嵌入检索器也会受到训练方式的限制。CLIP 的文本编码器最多读取 77 个 Token,因此较长的问题会在匹配前被截断;整张图像的嵌入比起标签上的序列号等小细节,更擅长捕捉整体场景内容。只要 OCR 能识别细节,文本转换就能让这些细节保持可搜索状态,因此许多系统会同时为 OCR 文本和图像嵌入建立索引,并通过混合搜索合并两份结果列表。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来