Multimodal RAG
探索多模态 RAG 以处理文本、图像和视频。了解 Ultralytics YOLO26 如何增强 AI 检索流水线以获得更准确、具有上下文感知的响应。
多模态检索增强生成 (Multimodal RAG) 是一种先进的 人工智能 (AI) 框架,它扩展了传统的 RAG 系统,使其能够处理和推理多种数据类型,例如文本、图像、视频和音频。虽然标准的 检索增强生成 (RAG) 通过检索相关的文本文件来提高 大语言模型 (LLM) 的准确性,但 Multimodal RAG 通过从混合媒体知识库中检索上下文,使模型能够“看”和“听”。这种方法将模型的生成建立在具体的视觉或听觉证据之上,显著减少了 LLM 中的幻觉,并支持在私有数据集上进行视觉问答等复杂任务。通过利用 多模态学习,这些系统可以综合来自用户查询(例如文本)和检索到的资源(例如图表或监控画面)的信息,从而生成全面且具有上下文意识的响应。
Link to this sectionMultimodal RAG 的工作原理#
Multimodal RAG 系统的架构通常沿用标准的“检索后生成”流水线,但针对非文本数据进行了调整。此过程高度依赖 向量数据库 和共享语义空间。
-
索引: 处理来自各种来源的数据,如 PDF、视频和幻灯片演示。特征提取 模型将这些不同的模态转换为被称为 嵌入 (Embeddings) 的高维数值向量。例如,像 OpenAI 的 CLIP 这样的模型会对齐图像和文本的嵌入,使得狗的图片与“狗”这个词在数学上非常接近。
-
检索: 当用户提出问题(例如“显示此电路板上的缺陷”)时,系统会在向量数据库中进行 语义搜索,以找到与查询意图最相关的图像或视频片段。
-
生成: 检索到的视觉上下文被输入到 视觉语言模型 (VLM) 中。VLM 同时处理用户的文本提示和检索到的图像特征以生成最终答案,从而实现与数据的有效“交流”。
Link to this section实际应用#
Multimodal RAG 正在通过赋能 AI 代理 通过视觉数据与物理世界交互,从而推动行业转型。
- 工业维护与制造: 在 制造业 AI 中,技术人员可以使用损坏机器部件的照片向系统进行查询。Multimodal RAG 系统会检索类似的维修历史记录、技术图纸和视频教程,以指导维修过程。这减少了停机时间并普及了专家知识。
- 零售与电子商务发现: 使用 零售 AI 的应用程序允许客户上传他们喜欢的服装图片。系统会从当前库存中检索视觉上相似的商品,并生成穿搭建议或产品对比,从而创造高度个性化的购物体验。
Link to this section区分相关术语#
为了理解 Multimodal RAG 的具体定位,将其与相关概念区分开来会有所帮助:
- Multimodal RAG 与 多模态模型 的区别: 多模态模型(如 GPT-4o 或 Gemini)负责创建响应。Multimodal RAG 是一种 架构,它为该模型提供其未经训练过的外部私有数据(图像、文档)。模型是引擎,而 RAG 是燃料管线。
- Multimodal RAG 与 微调 (Fine-Tuning) 的区别: 微调会永久更新 模型权重 以学习新任务或风格。RAG 在推理时提供临时知识。对于动态数据(如每日库存),当频繁重新训练不切实际时,RAG 是首选方案。
Link to this section使用 Ultralytics 进行实现#
开发者可以使用 Ultralytics YOLO 构建 Multimodal RAG 流水线的检索组件。通过检测和分类图像中的对象,YOLO 提供了结构化的元数据,这些元数据可用于基于文本的检索,或用于为 VLM 裁剪相关的图像区域。Ultralytics Platform 简化了训练这些专业视觉模型的过程,使其能够识别对你特定领域至关重要的自定义对象。
以下示例演示了使用 YOLO26 从图像中提取视觉上下文(检测到的对象),随后可以将其作为 RAG 工作流的一部分传递给 LLM。
from ultralytics import YOLO
# Load the YOLO26 model (smaller, faster, and more accurate)
model = YOLO("yolo26n.pt")
# Run inference on an image to 'retrieve' visual content
results = model("https://ultralytics.com/images/bus.jpg")
# Extract detected class names to form a text context
detected_objects = results[0].boxes.cls.tolist()
object_names = [model.names[int(cls)] for cls in detected_objects]
print(f"Retrieved Context: Image contains {', '.join(object_names)}")
# Output: Retrieved Context: Image contains bus, person, person, personLink to this section延伸阅读与资源#
- LangChain 文档: 构建检索流水线的全面指南,包括对多模态的支持。
- LlamaIndex 多模态指南: 关于为 LLM 索引和检索复杂数据类型的详细文档。
- Google Cloud Vertex AI Search: 用于构建可扩展 RAG 应用程序的企业级向量搜索功能。
- Ultralytics 解决方案: 探索计算机视觉如何与各行各业中更广泛的 AI 系统集成。






