Подготовка за интервю за мултимодално машинно обучение
Въпроси за интервю за инженер по мултимодално машинно обучение
15 избрани въпроса за интервю по мултимодално машинно обучение, групирани по ниво на старшинство. Използвайте ги, за да прегледате основите, практическите компромиси и обосновката за производство на Senior ниво.
1Обяснете основната идея на контрастивното обучение за подравняване на представяния на изображения и текст и защо споделеното пространство за вграждане е полезно.
Основната идея на контрастивното обучение за представяне на изображения и текст е да се прожектират входни изображения и текст в споделено латентно векторно пространство, така че семантично съвпадащите (позитивни) двойки да се привличат по-близо една до друга, докато несъвпадащите (негативни) двойки да се отблъскват по-далеч. Чрез обучаване на отделни визуални и текстови енкодери, използващи цели за сходство (като косинусово сходство), моделът подравнява семантиката на непрекъснатите визуални пиксели с дискретните текстови токени. Споделеното пространство за вграждане (embedding space) е полезно, защото позволява многомодални задачи да бъдат решавани директно чрез търсене на сходство на вектори. В това унифицирано пространство, кръстосано модалното извличане (намиране на изображения по текстови заявки или обратното) и класификацията с нулев изстрел (zero-shot classification) (оценяване на вграждане на изображение спрямо вграждания на подкани, като например 'снимка на куче') стават прости, високоефективни търсения на най-близък съсед или скаларен продукт, без да изискват класификационни глави, специфични за задачата.
import torch
import torch.nn.functional as F
# image_features: [B, D], text_features: [B, D]
image_norm = F.normalize(image_features, dim=-1)
text_norm = F.normalize(text_features, dim=-1)
# Pairwise cosine similarity matrix: [B, B]
sim_matrix = image_norm @ text_norm.T
# Positive pairs lie on the diagonal; off-diagonals are negatives
2Обяснете архитектурата с двоен енкодер от типа CLIP и предположенията, които прави относно взаимодействието между изображение и текст.
Архитектурата с двоен енкодер от типа CLIP се състои от две отделни, несвързани невронни мрежи: визуален енкодер (напр. Vision Transformer или ResNet), който обработва изображения във визуални векторни характеристики, и текстов енкодер (напр. Transformer), който обработва текст в текстови векторни характеристики. И двете представяния се проектират в общо измерение за вграждане (embedding dimension), където съответствието се измерва с помощта на проста метрика за сходство (като нормализирано косинусово сходство или скаларно произведение). Основното архитектурно предположение е късното сливане (late fusion) (или факторизирано междумодално взаимодействие): модалностите на изображението и текста не взаимодействат на междинни слоеве чрез кръстосано внимание (cross-attention) или взаимодействия на ниво токен. Вместо това, пълната семантика на всяка модалност се приема за компресируема в едно плътно векторно обобщение, а междумодалното взаимодействие се приема за напълно разложимо на скаларно произведение. Този компромис приоритизира изключителната ефективност при извличане (позволявайки офлайн предварително изчисляване на вгражданията на изображения за векторно търсене в милиарди мащаби) пред фино-зърнесто междумодално разсъждение (като асоцииране на токени към региони (token-to-region grounding) или сложни композиционни пространствени връзки).
3Опишете интуицията зад проектирането на характеристики на изображения и текст в общо нормализирано пространство и оптимизирането на косинусовата прилика.
Проектирането на характеристики на изображения и текст в общо нормализирано пространство (обикновено върху единична хиперсфера чрез L2 нормализация) и оптимизирането на косинусовата прилика отделя семантичната посока на вграждането от неговата векторна големина. Без нормализация, неограничено скаларно произведение позволява на модела да минимизира тренировъчната загуба, като тривиално надува нормите на характеристиките за лесни или често срещани извадки, вместо да подравнява техните семантични посоки. Нормализирането на вектори върху единичната хиперсфера ограничава стойностите на прилика строго в рамките на [-1, 1], като гарантира, че разстоянието съответства чисто на ъглово разделяне. Това стабилизира градиентите за оптимизация, предотвратява експлозия или срив на представянето и гарантира, че всяка извадка в пакет допринася справедливо за загубата, независимо от специфичните за модалността несъответствия в мащаба. Когато се съчетава с параметър за температура, който може да се научи (`learnable temperature parameter`), той контролира остротата на вероятностното разпределение върху хиперсферата, за да балансира подравняването на истинските двойки с равномерното разпръскване на отрицателните двойки.
import torch
import torch.nn.functional as F
# Unnormalized embeddings with extreme norm differences
v = torch.tensor([[10.0, 0.0], [0.1, 0.0]])
t = torch.tensor([[5.0, 0.0], [0.1, 0.0]])
# Raw dot products: heavily distorted by magnitude (50.0 vs 0.01)
raw_dot = v @ t.T
# L2 Normalized:
v_norm = F.normalize(v, p=2, dim=-1)
t_norm = F.normalize(t, p=2, dim=-1)
cosine_sim = v_norm @ t_norm.T
print('Cosine similarity matrix:\n', cosine_sim)
4Обяснете визуалното заземяване (visual grounding) и разбирането на референциални изрази (referring expression comprehension) като езиково-обусловена локализация (language-conditioned localization), и как те се различават от подобието на ниво изображение (image-level similarity).
Визуалното заземяване (visual grounding), често операционализирано като Разбиране на референциални изрази (Referring Expression Comprehension, REC), е задачата за локализиране на конкретна визуална област, ограничаваща кутия (bounding box) или маска за сегментация в изображение въз основа на референциален израз на естествен език (напр. „мъжът със синьо сако до лампата“). То третира локализацията като обусловена от език, изисквайки от модела да разреши лингвистични пространствени отношения, атрибути и идентичности на обекти до пикселни или пространствени координати. Това се различава фундаментално от подобието на ниво изображение (image-level similarity), което изчислява един холистичен семантичен коефициент на сходство между цяло изображение и текстов низ (напр. определяне дали изображение съвпада с надписа „мъж в парк“). Подобоето на ниво изображение не произвежда пространствени координати, може да съпоставя изображения, където реферираният обект не е уникално локализиран, и често не успява да разреши фино-зърнесто референциално разграничаване между множество подобни обекти в една и съща сцена.
# Image-level similarity:
# Input: Image I, Text T ("black dog sitting on the left")
# Output: scalar score s in [0, 1] or dot product
similarity_score = image_text_model(image, text)
# Referring Expression Comprehension (Visual Grounding):
# Input: Image I, Text T ("black dog sitting on the left")
# Output: Bounding box coordinates [x_min, y_min, x_max, y_max]
bbox = grounding_model.predict_box(image, text)
5Обяснете кръстосаното внимание (cross-attention) като механизъм за сливане между визуални токени и текстови токени в многомодални трансформатори.
В многомодалните трансформатори, кръстосаното внимание действа като асиметричен механизъм за сливане, при който една модалност насочва заявки (Q), за да обърне внимание на ключове (K) и стойности (V), извлечени от друга модалност. Например, когато визуалните токени действат като заявки, а текстовите токени действат като ключове и стойности, всеки визуален токен изчислява претеглена сума на вниманието над текстови представяния, динамично обуславяйки визуални характеристики на текстов контекст (и обратното, когато текстът запитва визуални токени). Математически, при дадени визуална последователност X_v и текстова последователност X_t, кръстосаното внимание изчислява: CrossAttention(Q_v, K_t, V_t) = softmax((Q_v * K_t^T) / sqrt(d)) * V_t, където Q_v = X_v * W_Q, K_t = X_t * W_K и V_t = X_t * W_V. Този механизъм позволява на модела да извършва фино токен-към-токен семантично подравняване между модалности, независимо от разликите в дължините на последователностите или началните пространства на характеристиките. Двупосочно сливане може да бъде постигнато чрез използване на два симетрични слоя на кръстосано внимание (напр., от визия към език и от език към визия) или чрез редуващи се блокове на кръстосано внимание.
6Обяснете как аугментациите на изображения като изрязване (cropping), цветово трептене (color jitter) и компресия могат да помогнат или навредят на контрастивното подравняване между изображение и текст.
При многомодалното контрастивно обучение (като CLIP), аугментациите на изображения служат за различна цел, отколкото при едномодалното самоконтролирано обучение (като SimCLR). Тъй като изображенията се контрастират със сдвоени текстови надписи, а не с друг аугментиран изглед на същото изображение, аугментациите могат както да облагодетелстват, така и да нарушат обучението на представянията. Как аугментациите помагат: 1. Предотвратяване на 'shortcut' обучение: Леки аугментации (като случайно изрязване, леки хоризонтални обръщания и умерено цветово трептене) предотвратяват разчитането на визуалния енкодер на тривиални визуални артефакти на ниско ниво (напр. разпределения на цветовете на фона, водни знаци в ъглите или пристрастия към пространственото позициониране). 2. Инвариантност към гледна точка и мащаб: Умереното мащабиране и изрязване насърчават модела да идентифицира семантични обекти при различни фокусни разстояния и перспективи, осигурявайки стабилна генерализация без предварително обучение (zero-shot generalization). Как аугментациите могат да навредят (Семантично разминаване): 1. Агресивно случайно изрязване: Ако надпис описва конкретен обект ('птица, кацнала на клон') и агресивно изрязване премахне изцяло птицата, останалата изрязана част (само листа/небе) все още е принудена да се подравни с надписа за птицата. Това въвежда фалшив контролен шум и влошава точността на извличане. 2. Силно цветово трептене / инверсия на нюанса: Много надписи изрично описват цветови атрибути ('жълто такси', 'червена ябълка'). Силните цветови промени променят таксито на синьо или ябълката на зелено, което причинява пряко семантично противоречие между визуалния вход и текстовия надпис. 3. Силен размазване и компресия: Агресивно пространствено намаляване, JPEG компресия или Гаусово размазване унищожават фини текстови улики (OCR текст върху знаци, лога, фини текстури), които са изрично описани в сдвоени надписи. Практическо правило: Многомодалното контрастивно обучение изисква значително по-консервативни аугментации (напр. Random Resized Crop с мащабен диапазон [0.5, 1.0] и леко обръщане), отколкото едномодалното самоконтролирано обучение.
7Обяснете извличането на изображения и текст като задача и разликата между съпоставяне в затворен набор (closed-set matching) и извличане в отворен свят (open-world retrieval) върху големи корпуси.
Извличането на изображения и текст (image-text retrieval) е задачата за намиране на съответстващи данни между различни модалности, като се дава заявка в една модалност (текст-към-изображение или изображение-към-текст). Това обикновено се постига чрез картографиране както на изображенията, така и на текстовете в общо пространство за представяне, където сходството корелира със значимостта. Съпоставянето в затворен набор (closed-set matching) предполага фиксиран, предварително дефиниран набор от кандидати с известни реални съответствия (ground-truth pairings) (като стандартните бенчмаркове Flickr30k или MS-COCO), което позволява изчерпателно изчисляване на сходството по двойки или кръстосано внимание "всички-към-всички" (all-to-all cross-attention). Извличането в отворен свят (open-world retrieval) оперира върху масивни, динамични, неконтролирани корпуси (напр. милиони до милиарди уеб или каталожни елементи), където наборите от кандидати са неограничени, заблуждаващите елементи (distractors) и фалшивите негативи са широко разпространени. Тук са необходими мащабируеми индекси за търсене на приблизителни най-близки съседи (ANN - approximate nearest neighbor) (напр. Faiss, HNSW), тъй като изчерпателното кръстосано внимание върху всички двойки е изчислително непреодолимо.
import torch
import torch.nn.functional as F
# Closed-set matching: full pairwise similarity matrix over fixed evaluation set
image_embeds = F.normalize(torch.randn(1000, 512), dim=-1)
text_embeds = F.normalize(torch.randn(1000, 512), dim=-1)
sim_matrix = torch.matmul(text_embeds, image_embeds.T) # (1000, 1000)
# Open-world retrieval: query vector queried against an indexed corpus using ANN
# index = faiss.IndexHNSWFlat(512, 32)
# distances, indices = index.search(query_embed, k=10)
8Сравнете контрастивни загуби от тип InfoNCE със softmax с попарни сигмоидни загуби за обучение на вграждания за изображения и текст.
Контрастивните загуби от тип InfoNCE (като тези в CLIP) третират съвпадането (alignment) като проблем за категорична мултикласова класификация. За всяка извадка, те изчисляват softmax разпределение върху всички кандидат-негативни двойки в партидата (batch), нормализирайки сходствата в целия набор от партиди. За разлика от тях, попарните сигмоидни контрастивни загуби (като тези в SigLIP) третират всеки елемент в матрицата на сходството изображение-текст като независима задача за бинарна класификация, прилагайки сигмоидна функция и бинарна крос-ентропийна загуба за всяка двойка (позитивните двойки целят +1, негативните двойки целят -1). Основните разлики са:
1. Свързване срещу Развързване: InfoNCE свързва всички негативи чрез знаменателя на глобалното softmax разделяне, което води до конкуренция, при която най-трудните негативи доминират градиентите. SigLIP развързва всички двойки, оценявайки всяка независимо.
2. Разпределена мащабируемост и ефективност: InfoNCE изисква събиране на матрици на сходство между GPU (графични процесори) за глобална нормализация (комуникационно гърло на бутилката "all-gather"). Независимата попарна загуба на SigLIP може да бъде изчислена локално без глобална между-GPU softmax нормализация, подобрявайки ефективността на мащабиране и оставайки стабилна както при малки, така и при много големи размери на партиди.
import torch
import torch.nn.functional as F
def siglip_loss(sim_matrix, temperature, bias):
# sim_matrix: [B, B] dot product of normalized embeddings
# targets: 1 on diagonal (positive), -1 on off-diagonals (negative)
B = sim_matrix.size(0)
targets = 2 * torch.eye(B, device=sim_matrix.device) - 1.0
logits = sim_matrix * temperature + bias
# Pairwise binary cross entropy with log-sigmoid
return -torch.mean(F.logsigmoid(targets * logits))
9Обяснете как „твърдите негативи“ (*hard negatives*) и „фалшивите негативи“ (*false negatives*) влияят на контрастивното обучение „изображение-текст“ (*image-text contrastive learning*).
Твърдите негативи (*hard negatives*) и фалшивите негативи (*false negatives*) имат противоположни ефекти върху контрастивното обучение „изображение-текст“:
1. **Твърдите негативи** (*Hard negatives*) са несвързани двойки, които са семантично или визуално много близки до „котва“ (*anchor*) (напр. изображение на сибирско хъски, сдвоено с надписа „аляски маламут“). Твърдите негативи предоставят информативни градиентни сигнали с голяма величина. Те принуждават модела да погледне отвъд грубите категории и да научи финозърнести визуално-лингвистични детайли и остри граници на решенията.
2. **Фалшивите негативи** (*False negatives*) възникват, когато случайно избрани „отрицателни“ двойки в пакета (*batch*) всъщност са валидни семантични съвпадения (напр. две различни снимки на голдън ретривъри, където едната е сдвоена като негатив срещу „сладък голдън ретривър в парк“). Фалшивите негативи наказват правилните семантични съвпадения, като принуждават модела да разделя валидни съвпадащи представяния. Това корумпира градиентите, влошава качеството на представяне и потиска легитимната синонимност и визуална вариативност. Стратегиите за смекчаване на фалшивите негативи включват контрастивни цели с плавно етикетиране (*soft/label-smoothing contrastive objectives*), дебалансирано контрастивно обучение (*debiased contrastive learning*), дедупликация на данни (*dataset deduplication*) и съвпадение на множество позитиви (*multi-positive matching*).
import torch
import torch.nn.functional as F
# Image 0 and Image 1 both depict 'a red sports car'
# Text 0: 'a red sports car', Text 1: 'a fast red car'
# In standard InfoNCE, Text 1 is treated as a negative for Image 0.
sim = torch.tensor([[0.95, 0.90], # Image 0 similarities
[0.88, 0.94]]) # Image 1 similarities
loss_img0 = -F.log_softmax(sim / 0.07, dim=-1)[0, 0]
print(f'InfoNCE loss for Image 0: {loss_img0.item():.4f}')
# High similarity to false negative Text 1 (0.90) heavily penalizes the model
10Сравнете глобалното съпоставяне изображение-текст с целите за съпоставяне на ниво регион-дума или токен.
Глобалното съпоставяне изображение-текст картографира цяло изображение и цяла текстова последователност в единични холистични вектори на вграждане (напр. чрез обединени характеристики в CLIP) и ги съпоставя с помощта на контрастивна цел като InfoNCE. Това осигурява отлични свойства за мащабиране, бързи индексируеми представяния за извличане и силно семантично клъстериране. Въпреки това, то страда от груба пространствена гранулираност, затруднява се с фино детайлизирани визуални подробности, композиционност, броене и пространствени взаимовръзки и често проявява проблеми с обвързването на атрибути. За разлика от това, съпоставянето на ниво регион-дума или токен работи с фино детайлизирани под-изображения (напр. токени на пачове, характеристики на ограничителни кутии на обекти) и под-изречения (напр. токени на думи или поддуми) гранулираности. Методи като FILIP, GLIP или VinVL съпоставят токени чрез фино детайлизирани контрастивни загуби (като token-wise max-sim или Chamfer similarity) или оптимален транспорт / съпоставяне чрез кръстосано внимание. Това изрично запазва пространствени и лингвистични композиционни детайли, което позволява откриване на обекти, визуално заземяване и прецизно обвързване на атрибути, но на цената на по-висока изчислителна и паметна сложност, по-голяма латентност при извод и по-шумни сигнали за съпоставяне.
import torch
import torch.nn.functional as F
# visual_tokens: [B, N_v, D], text_tokens: [B, N_t, D]
def token_level_maxsim_similarity(visual_tokens, text_tokens):
v_norm = F.normalize(visual_tokens, dim=-1)
t_norm = F.normalize(text_tokens, dim=-1)
# Compute similarity matrix between all visual and text tokens: [B, N_t, N_v]
sim_matrix = torch.bmm(t_norm, v_norm.transpose(1, 2))
# Text-to-image: For each word token, find maximum visual token similarity and average
t2i_sim = sim_matrix.max(dim=-1).values.mean(dim=-1) # [B]
return t2i_sim
11Сравнете ранно сливане, късно сливане, междинно сливане, сливане с кръстосано внимание, вентилирано сливане и конкатенация за мултимодални модели.
Мултимодалните стратегии за сливане интегрират визуални и езикови сигнали на различни нива на дълбочина и структурни конфигурации:
1. **Ранно сливане (Early Fusion):** Сурови или нисконивови признаци (напр. вграждания на пачове от изображения и вграждания на токени на думи) се сливат на етапа на входа и се подават към единна споделена основна мрежа. Това позволява дълбоки междумодални взаимодействия от нулевия слой, но е изчислително скъпо и затруднява повторната употреба на унимодално предварително обучение.
2. **Късно сливане (Late Fusion):** Модалностите се обработват независимо от дълбоки унимодални основни мрежи в глобални вектори на представяне, които се комбинират само в самия край чрез просто агрегиране (напр. скаларно произведение, косинусна прилика или плитък MLP). Това е изключително ефективно и идеално за индексируемо извличане, но не може да улови фино детайлни междумодални взаимодействия.
3. **Междинно сливане (Intermediate Fusion):** Унимодалните основни мрежи обработват входовете в продължение на няколко слоя, а сливането се осъществява на междинни етапи чрез споделени слоеве или странични връзки, постигайки баланс между унимодална специализация и мултимодално взаимодействие.
4. **Сливане с кръстосано внимание (Cross-Attention Fusion):** Използва многоглаво внимание (multi-head attention), където една модалност предоставя заявки (queries), а другата предоставя ключове (keys)/стойности (values). То предлага висока репрезентативна способност с кондициониране между токени, приспособявайки се към хетерогенни дължини на последователностите.
5. **Вентилирано сливане (Gated Fusion):** Използва научени механизми за вентилиране (напр. сигмоидни или tanh вентили), за да претегля динамично приноса на всяка модалност или слой на сливане въз основа на контекстуална увереност, предотвратявайки доминирането на една модалност или повреда на предварително обучени тегла.
6. **Конкатенация (Concatenation):** Обединява вектори на признаци или последователности от токени по измерението на признаците (конкатенация на признаци) или по измерението на дължината на последователността (конкатенация на токени преди обединен трансформатор). Тя е проста и непараметрична, но конкатенацията на признаци изисква подравнени пространствени/темпорални измерения, докато конкатенацията на токени се мащабира квадратично с общата дължина на последователността при самовнимание (self-attention).
12Сравнете двукодиращите модели за извличане с крос-кодиращите пренареждачи за съпоставяне на изображения и текст по отношение на капацитета на взаимодействие, точността и латентността.
Двукодиращите (bi-encoder) модели и крос-кодиращите пренареждачи (cross-encoder rerankers) представляват две различни парадигми за съпоставяне на изображения и текст, предлагайки основни компромиси между капацитета на взаимодействие, точността и латентността:
1. **Капацитет на взаимодействие:**
* **Двукодиращи модели (напр. CLIP):** Обработват изображение и текст чрез отделни, разделени *backbone* мрежи. Мултимодалното взаимодействие е стриктно късно и плитко, ограничено до едно скаларно произведение или косинусова прилика между глобално обединени вектори. Липсват им крос-модални взаимодействия на ниво токен.
* **Крос-кодиращи модели (напр. UNITER, ViLT, ALBEF multimodal branch):** Конкатенират визуални и текстови токени в споделен трансформатор или използват слоеве за кръстосано внимание (cross-attention layers). Всеки визуален токен може да взаимодейства с всеки текстов токен през множество слоеве, позволявайки дълбоко крос-модално разсъждение.
2. **Точност:**
* Двукодиращите модели постигат по-ниска точност при сложни композиционни заявки, пространствени отношения, отрицание и съпоставяне на фино-зърнести атрибути поради тясното място на единично-векторни представяния.
* Крос-кодиращите модели постигат значително по-висока точност при сложни, фино-зърнести и композиционни задачи за съпоставяне на изображения и текст.
3. **Латентност и мащабируемост:**
* Двукодиращите модели позволяват предварително изчисляване и индексиране на вграждания на изображения офлайн във векторна база данни (напр. Milvus, FAISS). По време на инференция (inference time) само текстовата заявка се кодира, а търсенето сред милиони кандидати изисква само леки скаларни произведения за приблизителен най-близък съсед (Approximate Nearest Neighbor - ANN) (латентност под милисекунда).
* Крос-кодиращите модели изискват изпълнение на пълната съвместна невронна мрежа за всяка двойка кандидати (изображение, текст) по време на заявка (O(N) преминавания напред за N кандидати), което води до порядъци по-висока латентност и ги прави изчислително забранителни за извличане от първи етап над големи корпуси. В практически производствени системи е стандартен двуетапен пайплайн: двукодиращ модел извлича топ-K кандидати (напр. K=100) с ниска латентност, последван от крос-кодиращ модел, който ги пренарежда за висока точност.
13Проектирайте мултимодална система за генериране, подпомогнато от извличане на информация (RAG) върху PDF документи или ръководства, съдържащи текст, таблици, диаграми, екранни снимки, схеми и вградени изображения.
Цялостна мултимодална RAG система за сложни визуални документи (PDF документи, ръководства, отчети) обхваща четири основни архитектурни етапа: 1. Приемане и разбор, съобразен с оформлението: PDF страниците се обработват чрез документни модели, съобразени с оформлението (напр. LayoutLM, DocTR) или потоци за визуален анализ, за да сегментират съдържанието в структурирани блокове: текстови пасажи, структурирани таблици (преобразувани в HTML/Markdown с обединени клетки), изображения на диаграми с визуализирани серии от данни и самостоятелни схеми или екранни снимки с пространствени ограждащи кутии. 2. Мултимодално индексиране и двойно представяне: – Визуални активи (диаграми, екранни снимки, схеми): Съхраняват се като изрязани изображения с плътни мултимодални вграждания (напр. SigLIP, CLIP или ColPali визуални токени за пачове) заедно със синтетични текстови резюмета и OCR текст, генериран от VLM, съхранени в плътен текстов индекс. – Таблици: Съхраняват се като структуриран Markdown/HTML в текстови векторни и BM25 индекси. – Текст: Разделен на семантични секции и индексиран чрез плътни вграждания и разредени ключови думи. 3. Хибридно извличане и мултимодално пренареждане: – Първоначално извличане: Извършва паралелно извличане от разредени BM25 (ключови думи, OCR текст, маркировка на таблици), плътни текстови вектори и индекси за визуални вграждания (ANN търсене). – Обединяване и пренареждане: Обединява кандидати (напр. чрез Reciprocal Rank Fusion) и оценява най-добрите елементи, използвайки мултимодален крос-енкодер или визуален модел с късно взаимодействие (оценяване на текста на заявката спрямо изрязани изображения с висока резолюция и анализиран текст). 4. Сглобяване на мултимодален контекст и обосновано генериране: Топ $k$ мултимодален контекст — визуализирани фрагменти от изображения, схеми на таблици и текстови пасажи с метаданни за документа/страницата — се подава към VLM, обучен с инструкции (напр. GPT-4o, Claude 3.5 Sonnet или с отворен код Qwen2-VL). Подканата за генериране налага извличане на произхода на източника, изискващо изрични цитати (номера на страници, номера на фигури или ограждащи кутии).
from dataclasses import dataclass
from typing import Optional, List
@dataclass
class MultimodalChunk:
chunk_id: str
document_id: str
page_number: int
modality_type: str # 'text', 'table', 'chart', 'diagram'
text_payload: str # Raw text or structured Markdown/HTML
vlm_caption: Optional[str] = None # Synthetic summary of visual content
bbox: Optional[List[float]] = None # [x0, y0, x1, y1]
image_crop_path: Optional[str] = None
dense_embedding: Optional[List[float]] = None
# Indexing strategy: Text search covers text_payload + vlm_caption;
# Multimodal search matches dense_embedding or visual tokens.
14Обяснете как оценката на мултимодален RAG (Retrieval-Augmented Generation) трябва да измерва отделно качеството на извличане, използването на доказателствата, произхода и верността на крайния отговор.
Оценката на мултимодален RAG изисква декомпозиране на системата на четири отделни измерения за оценка, за да се определи дали грешките произлизат от извличането, консумацията на контекст, точността на цитирането или генерирането:
1. **Качество на извличане:** Оценява дали механизмът за извличане идентифицира необходимите визуални и текстови фрагменти. Ключовите метрики включват мултимодални Recall@K, NDCG@K и MRR. За визуални елементи това включва също IoU за визуални обекти / Точност на извикване на ограничителна кутия (дали извлеченият изрез от изображение съдържа съответната диаграма/графика) и Баланс на извикване по модалност (осигуряване, че нетекстови модалности като таблици и графики не са систематично пропускани).
2. **Използване на доказателствата (достатъчност и необходимост):** Измерва дали моделът за генериране наистина разчита на извлечените мултимодални доказателства, а не генерира отговори чисто от параметрична памет. Това се измерва чрез Релевантност на контекста (точност на извлечените визуални/текстови токени, подкрепящи въпроса), Необходимост на доказателствата / Тестване чрез аблация (маскиране или премахване на извлечената графика/таблица, за да се провери дали отговорът се проваля) и анализ на приписване на кръстосано внимание.
3. **Произход и точност на цитирането:** Измерва дали приписванията на източници са точни и проверими. Оценява се чрез точност (Precision), обхват (Recall) и F1 над цитатите (имена на документи, номера на страници, ID на фигури или координати на ограничителната кутия). Автоматизирани проверки потвърждават, че цитираната ограничителна кутия или страница всъщност съдържа доказателствата от истински данни, необходими за отговор на въпроса.
4. **Вярност и коректност на крайния отговор:**
* **Вярност / Заземяване:** Оценява дали всяко генерирано твърдение следва от извлечения мултимодален контекст без халюцинации (обикновено се оценява чрез VLM като съдия, проверяващ логическото следване на твърдението спрямо текст и визуални изрези).
* **Фактическа коректност:** Оценява дали генерираният отговор съвпада с истинските данни.
* **Устойчивост на отказ:** Тества дали моделът правилно отказва да отговори, когато извлеченият контекст е ирелевантен или противоречив.
# Evaluation record schema for a single Multimodal RAG query:
eval_record = {
'retrieval_quality': {
'hit_at_k': True, # Top-3 chunks contain target diagram
'visual_bbox_iou': 0.85 # Retrieved crop overlap with true figure region
},
'evidence_utilization': {
'necessity_ablation_passed': True # Removing chart causes answer to fail
},
'provenance': {
'page_match': True, # Cited Page 12 (Ground Truth Page 12)
'figure_id_match': True # Cited 'Figure 4'
},
'faithfulness': {
'claim_entailment_score': 1.0, # All claims entailed by context
'hallucination_detected': False
}
}
all_passed = all(all(metrics.values()) for metrics in eval_record.values())
print(f'System passes all decoupled checks: {all_passed}')
15Обяснете актуализирането на многомодални модели за извличане (multimodal retrieval models) в продукция, когато вгражданията на галерията (gallery embeddings) и индексите трябва да бъдат освежени в голям мащаб.
Актуализирането на многомодална система за извличане (multimodal retrieval system) в голям мащаб представлява проблем с дрейфа на представянето (representation drift): новогенерираните вграждания се намират в различно геометрично латентно пространство и не могат да бъдат сравнявани директно със съществуващите вграждания на галерията без сериозно влошаване на припомнянето (recall degradation). Следователно, актуализациите без прекъсване (zero-downtime updates) изискват или синьо/зелени внедрявания (blue/green deployments) с двоен индекс, или обучение за съвместимост (compatibility learning) – като обучение за обратна съвместимост (backward-compatible training) или адаптери за трансформация (transformation adapters), или етапни конвейери за преиндексиране (staged reindexing pipelines). При стандартен синьо/зелен работен процес за преиндексиране, офлайн пакетни задачи (offline batch jobs) изчисляват нови вграждания в цялата галерия и изграждат нов векторен индекс (като HNSW или IVF). Докато преизграждането тече, трафикът от търсене на живо продължава да изпраща заявки към активния наследен индекс. Новите входящи елементи се обработват чрез двойно записване (dual-writing) или поточно предаване на регистри за промяна на данните (CDC - Change Data Capture), така че и двата индекса да останат актуални. След като новият индекс бъде валидиран чрез сенчест трафик (shadow traffic) и загрят в паметта, трафикът атомарно превключва към новия енкодер и индекс, след което старият индекс се извежда от експлоатация. Алтернативно, обучението за обратна съвместимост ограничава новия енкодер за заявки да се приведе в съответствие с пространството на наследената галерия, което позволява незабавни надстройки на модела за заявки, докато асинхронно се попълва галерията във времето.
class MultimodalRetrievalRouter:
def __init__(self, v1_service, v2_service, dual_write=True):
self.v1 = v1_service # Model v1 + Index v1
self.v2 = v2_service # Model v2 + Index v2
self.active_version = "v1"
self.dual_write = dual_write
def search(self, query_multimodal):
# Route query strictly to the encoder matching the active index
if self.active_version == "v1":
return self.v1.search(query_multimodal)
return self.v2.search(query_multimodal)
def ingest_new_item(self, item):
# Dual-write during migration window so the new index is up-to-date at cutover
self.v1.index_item(item)
if self.dual_write and self.v2.is_ready_for_ingest:
self.v2.index_item(item)