Multimodal RAG
Мультимодальный RAG извлекает изображения, видеокадры, аудио и сканы страниц вместе с текстом, а затем использует визуально-языковую модель, чтобы ответить на основе найденной информации.
Мультимодальная RAG — это генерация с дополненной поиском выдачей (RAG) по базе знаний, в которой хранятся изображения, видео, аудио и отсканированные или отрендеренные документы, а также текст. По запросу из любых этих модальностей извлекаются наиболее релевантные материалы, а визуально-языковая модель (VLM) формирует по ним ответ. Так можно напрямую найти и прочитать схему электропроводки, фотографию товара или диаграмму в PDF, а не полагаться только на текстовое описание, заранее составленное кем-то.
Как индексируются нетекстовые данные#
Самый простой подход — преобразовать все в текст. Подписи к изображениям, результаты оптического распознавания символов (OCR), расшифровки речи в текст и метки детекции объектов описывают каждый материал словами, которые может искать обычный текстовый индекс. Такой подход позволяет без изменений использовать текстовый конвейер RAG, но при этом теряется все, что не попало в описание.
Второй подход помещает изображения и текст в общее пространство эмбеддингов. Модели, обученные с помощью контрастивного обучения, например CLIP от OpenAI и SigLIP от Google, размещают фотографию и описывающее ее предложение рядом друг с другом в пространстве эмбеддингов, поэтому текстовый запрос может напрямую находить изображения в векторной базе данных. Для документов ColPali (2024) представляет скриншот каждой страницы в виде сетки векторов фрагментов и сопоставляет его с токенами запроса с помощью позднего взаимодействия по типу ColBERT. Этот способ позволяет обойтись без OCR и анализа структуры PDF-файлов, насыщенных таблицами и диаграммами.
Затем извлеченные материалы, часто сочетание изображений и текстовых фрагментов, передаются визуально-языковой модели вместе с вопросом для генерации ответа. Привязка ответа к найденным изображениям снижает риск галлюцинаций о визуальных деталях, которых модель не видела при обучении, например о расположении элементов на панели управления конкретной компании.
Поиск в общем пространстве эмбеддингов#
В этом примере контрольная точка 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 размещает текстовый эмбеддинг каждого вопроса ближе всего к соответствующей фотографии. Интерфейс LLM Ultralytics позволяет выполнить следующий этап — генерацию: llm(question, image=...) одним вызовом передает вопрос и найденное изображение любой визуально-языковой модели, совместимой с OpenAI, и возвращает ответ провайдера.
Мультимодальная RAG и смежные термины#
- Визуальные ответы на вопросы (VQA): Отвечает на вопрос об изображении, которое предоставил пользователь. Мультимодальная RAG сначала находит, на какие изображения, страницы или ролики нужно посмотреть среди тысяч материалов.
- Мультимодальные модели: генеративные модели, например GPT от OpenAI или Gemini от Google, которые одновременно обрабатывают изображения и текст. Мультимодальная RAG — это система поиска, определяющая, что увидят эти модели.
- Семантический поиск: Только поисковая часть системы, которая возвращает ранжированные результаты человеку, а не модели.
Примеры применения в реальных условиях#
- Техническое обслуживание в производстве: Техник фотографирует вышедшую из строя деталь, а система находит страницу руководства с подходящей схемой в разобранном виде и фотографии предыдущего ремонта того же узла.
- Поиск и поддержка в розничной торговле: Фотография покупателя помогает найти визуально похожие товары из каталога, а ассистент отвечает на вопросы о посадке и совместимости по их спецификациям.
- Ответы на вопросы по документам: В годовых отчетах, научных статьях и презентациях важные числа часто приведены в диаграммах и таблицах. Поиск по изображениям страниц находит их без отдельного парсера таблиц.
- Понимание видео: Индексирование выборочных кадров или коротких роликов с помощью эмбеддингов позволяет найти нужные минуты записи по запросу вроде «Когда приехал фургон доставки?». Благодаря этому визуально-языковая модель анализирует лишь несколько кадров, а не часы видео.
Компромиссы при проектировании#
Изображения требуют много места в контексте: визуально-языковая модель превращает каждое изображение в сотни или тысячи токенов, поэтому конвейеры обычно передают только несколько изображений с наивысшим рейтингом и дополняют их короткими текстовыми фрагментами. Поисковые системы на основе общего пространства эмбеддингов также наследуют ограничения обучающих данных. Текстовый энкодер CLIP обрабатывает не более 77 токенов, поэтому более длинные вопросы обрезаются перед сопоставлением, а эмбеддинги целого изображения лучше передают общую сцену, чем мелкие детали, например серийный номер на этикетке. Если OCR способен распознать такие детали, преобразование в текст позволяет искать их, поэтому многие системы индексируют и текст OCR, и эмбеддинги изображений, а затем объединяют оба списка результатов с помощью гибридного поиска.










