Lesson 140 — Advanced

Cross-modal Search & Retrieval

Ek text query se image dhoondhna, ya ek image se uska text dhoondhna — dono tab mumkin hain jab image aur text ek hi vector space mein baithte ho. Is lesson mein hum shared embedding space ka logic, joint encoders, caption-then-search baseline, kahan cross-modal fail hota hai, aur apne collection pe eval dekhenge.

⏱ 10 min• Advanced• Audio: Realtime Voice Agents

Shared embedding space kya hai

Kya hai?

Cross-modal retrieval matlab ek modality ka query se doosri modality ka content dhoondhna — text se image, ya image se text — bina har cheez ko pehle text mein convert kiye. Sab ho isliye hai ki dono ek shared vector space mein embed hote hain.

Kab kaam aata hai?

Photo library search ("chai wali photo"), product catalog, visual assets dhoondhna, documents mein figure/plate dhundhna — jab query ka format aur corpus ka format alag ho.

Kahan milta hai?

Un embedding APIs mein jo image aur text dono lete hain (CLIP-style models), multimodal embedding endpoints mein, aur un vector databases mein jahan dono tarah ke vectors ek hi index mein baithe hain.

Agar ek image aur uska caption wahi cheez describe karte hain, toh unke vectors paas hone chahiye — training isi goal se hoti hai. Iske baad jo machinery hai wahi hai jo L4 mein seekhi: vector store, cosine, top-k. Sirf encoder badal jaata hai — query ka vector text encoder se, corpus ka image encoder se.

Yaad rakho: Yahan similarity ka matlab "same pixels" nahi, "same meaning" hai. "Red sneakers on court" query se red shoes wali images aayengi, exact product SKU nahi — fine-grained match alag class ki problem hai, niche dekhenge.

CLIP-style joint embeddings

# Do encoders, ek shared space
def encode_pair(image, text):
    img_vec = image_encoder.encode(image)   # -> vector
    txt_vec = text_encoder.encode(text)     # -> vector (same dim, same axes)
    return l2_normalize(img_vec), l2_normalize(txt_vec)

img, txt = encode_pair("shelf.jpg", "blue water bottle on a shelf")
score = float(img @ txt)     # cosine similarity — bilkul text wali maths

# Index banate waqt: har image ka vector daalo
# Query karte waqt: text query ka vector, top-k image ids wapas
Wahi purana trap: Image aur text encoders ek hi model family ke hain — alag-alag models/versions ke vectors mix kabhi mat karo. Model badla toh poora index re-embed, warna similarity ka koi matlab nahi rahega.

Cross-modal vs caption-then-search

# Option A: caption-then-search (do stage)
captions = {img.id: caption_model.describe(img) for img in images}  # pehle text banao
hits = text_search(query, embed_all(captions.values()))             # phir text search

# Option B: cross-modal (ek stage)
index.build(image_encoder.encode(img) for img in images)            # seedha image vector
hits = index.search(text_encoder.encode(query))

# Trade:
# caption    -> explainable, purana text stack, par caption mein jo nahi likha wo kho gaya
# cross-modal -> visual detail bacha rehta hai, par fine text-in-image ab bhi mushkil
Decision rule: Query text-like hai aur image mein likha text hai (documents, screenshots) → text/caption path strong. Apni bhasha mein likhi "look feel" wali query → cross-modal. General rule pe nahi, apne query mix pe test karke decide karo.

Kahan fail hota hai — aur apne data pe eval

# Apna eval: 20-30 queries + gold images, wahi harness har candidate pe
cases = [
    {"q": "chai wali photo",           "gold": ["img-12", "img-44"]},
    {"q": "red sneakers on court",     "gold": ["img-07"]},
    {"q": "receipt with total 1240",   "gold": ["img-19"]},
]

def score(index, cases):
    hits = sum(len(set(top_k(index, c["q"])) & set(c["gold"])) for c in cases)
    return hits / sum(len(c["gold"]) for c in cases)   # simple recall

# Baseline (caption-then-search) ko same cases pe chalao — winner per-query dekho
Debug split karo: Results kharab hain toh pehle decide karo: query galat hai ya space? Query ko alag tarah likh kar dekho, aur ek known image ko query bana kar dekho. Do taraf se failure dikhe toh encoder hi tumhare domain ka nahi — model badlo ya hybrid path jodo.

Exercise

Question: Image aur text ko ek shared vector space mein align karne wale famous model family ka naam? (teen akshar)

Question: Pehle har image ko kis cheez mein badal kar text search chalate hain — caption-then-search wali baseline mein?

Question: L2-normalized vectors ke dot product ko kya kehte hain? (jo similarity score milta hai)

Question: Receipts aur screenshots mein likha text dhoondhne ke liye cross-modal ke saath kaunsa classic step aksar behtar chalta hai? (teen akshar)

Common mistakes

Desi example: Album ke peeche index vs photo dhoondhne wala dost

Family album hai. Ek dost ko bolo "gaadi wali photo dhoondho" — wo seedha photos dekh kar dhoond lega (cross-modal). Doosra tarika: kisi ko har photo ka caption likhwa lo aur text search chalao — wo sirf likha hua batayega, photo mein jo likha nahi uska pata nahi:

text
cross-modal:         "chai wali photo" -> seedha image vectors -> top-k
caption-then-search: har photo -> caption -> text index -> top-k
jo caption mein nahi likha, wo second path mein kho jaata hai
best: dono index rakho, query decide kare kaun jeetta hai
Interview angle — yahan se sawaal aate hain
  • Q: Cross-modal retrieval kaise kaam karta hai? — Do encoders (image + text) ek shared space mein; meaning milne par vectors paas, distance hi similarity hai.
  • Q: Caption-then-search ka trade kya hai? — Explainability aur purana text stack milta hai, par visual detail caption tak hi simat jaati hai.
  • Q: Cross-modal kahan fail hota hai? — Fine-grained detail, text inside images, counting/spatial, aur domain imagery jise encoder ne nahi dekha.
  • Q: Retrieval eval kaise karoge? — Apne queries + gold images, recall@k ya top-5 hit rate, aur baseline ko exactly same cases pe chalana.
Lesson complete?

Cross-modal search clear — shared space, joint encoders, caption baseline aur own-data eval ka tareeka samajh aa gaya. Agla lesson — Choosing a Multimodal Model — mein dekhenge multimodal task ke liye model kaise shortlist aur test karte hain.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course