MODA Fashion Search
Try and compare HopitAI MODA fashion retrieval models.
Multimodal reasoning
We build the MODA family of fashion retrieval models and benchmark them the way we wish everyone did: full corpus, one shared harness, every competitor under identical protocol β including the cells we lose.
Full benchmark page Β· Interactive demo Β· Code & methodology Β· hopit.ai Β· Book a call
The size class most deployments use. Full-corpus MAP@10; best per row bold π₯, second π₯:
| benchmark (corpus) | FashionSigLIP 203M | MODA 203M | MODA Pro Lite 213M |
|---|---|---|---|
| KAGL (44K) | 0.2769 | 0.2890 π₯ | 0.3185 π₯ |
| Polyvore (94K) | 0.3665 | 0.3726 π₯ | 0.3997 π₯ |
| Atlas (78K) | 0.1826 | 0.1884 π₯ | 0.1945 π₯ |
| Fashion200K (202K) | 0.1858 π₯ | 0.1947 π₯ | 0.1802 |
| DeepFashion In-Shop (53K) | 0.1587 π₯ | 0.1703 π₯ | 0.1031 |
| DeepFashion Multimodal (43K) | 0.0148 π₯ | 0.0147 π₯ | 0.0118 |
Every benchmark in this class is led by a MODA-family model except one, where frozen FashionSigLIP keeps a 0.8% edge. MODA Pro Lite owns catalog and title search (KAGL +10.2%, Polyvore +7.3% over MODA, both significant) from one checkpoint, no serving recipe; MODA owns captions and instance retrieval (4 of 6 wins over FashionSigLIP significant under paired bootstrap).
Full-corpus MAP@10 through one shared pipeline, identical preprocessing per model, no gallery subsampling anywhere. Best per row in bold with π₯, second π₯.
| benchmark (corpus) | FashionSigLIP 203M | MODA 203M | SO400M 878M | ZooClaw 375M | MODA Pro Lite 213M | MODA Pro hosted |
|---|---|---|---|---|---|---|
| KAGL (44K) | 0.2769 | 0.2890 | 0.3370 π₯ | 0.2951 | 0.3185 | 0.3263 π₯ |
| Polyvore (94K) | 0.3665 | 0.3726 | 0.4378 π₯ | 0.3804 | 0.3997 | 0.4088 π₯ |
| Atlas (78K) | 0.1826 | 0.1884 | 0.2309 π₯ | 0.1583 | 0.1945 | 0.2053 π₯ |
| Fashion200K (202K) | 0.1858 | 0.1947 π₯ | 0.1353 | 0.1775 | 0.1802 | 0.2101 π₯ |
| DeepFashion In-Shop (53K) | 0.1587 | 0.1703 π₯ | 0.1695 | 0.1024 | 0.1031 | 0.1762 π₯ |
| DeepFashion Multimodal (43K) | 0.0148 π₯ | 0.0147 π₯ | 0.0079 | 0.0099 | 0.0118 | 0.0144 |
MODA Pro: rank 1 or 2 on every row, and on 9 of 10 cells once the H&M and ZooClaw-Fashion registers are included β the only system with no bad benchmark (+6.9% mean over MODA on these six, peak +12.9%). MODA Pro Lite is the strongest open single model β€250M on catalog search: KAGL +10.2% and Polyvore +7.3% over MODA (both significant), from one checkpoint with no serving machinery. Full page with ranks, ops costs and losses: benchmark page.
| model | params | Fine R@1 |
|---|---|---|
| MODA-SigLIP-Distilled | 203M | 67.63 π₯ |
| GR-Pro (closed) | n/a | 67.38 |
| Tianmu-MERE | 1.24B | 65.99β |
| FashionSigLIP | 203M | 63.84β |
β same-harness reruns; our harness reproduces Tianmu's published 66.20 within 0.5pt. A 203M open model above a closed commercial system and a 1.24B model.
| model | what it is | availability |
|---|---|---|
| MODA (203M) | zero-new-parameter serving recipe over frozen FashionSigLIP; 4/6 statistically significant full-corpus wins over its own base model | open source + open weights |
| MODA Pro Lite (213M) | trained encoder (verified fashion-vocab build); beats MODA on catalog search as a plain bi-encoder β no recipe required | open weights |
| MODA Pro | our hosted retrieval system β rank 1 or 2 on 9 of 10 benchmark cells at single-model query latency and cost | closed Β· hosted |
| MODA-SigLIP-Distilled (203M) | image-to-image specialist β #1 open model on LookBench | open weights (+ matryoshka, 512d, fp16-vision variants) |
| your workload | use | why |
|---|---|---|
| catalog / title search | moda-pro-lite | strongest β€250M on catalog benchmarks; plain bi-encoder, any vector DB |
| caption-style / exact-item search | MODA | leads the class on Fashion200K, In-Shop, Multimodal |
| best text search, zero integration | MODA Pro (hosted) | rank 1β2 on 9 of 10 benchmarks, no bad benchmark |
| visually similar products (image) | moda-fashion-distilled | #1 open model on LookBench |
| small index / edge | matryoshka @256d Β· fp16 | 3Γ smaller index at no loss Β· 186 MB vision tower |
All models serve on CPU. Each card links the benchmarks it loses, too.
Text to image (plain bi-encoder, works with any vector DB):
import open_clip
model, _, preprocess = open_clip.create_model_and_transforms("hf-hub:HopitAI/moda-pro-lite")
tokenizer = open_clip.get_tokenizer("hf-hub:HopitAI/moda-pro-lite")
Image to image, for finding visually similar products:
import open_clip
model, _, preprocess = open_clip.create_model_and_transforms("hf-hub:HopitAI/moda-fashion-distilled")
MODA's full multi-view retrieval recipe:
pip install "git+https://huggingface.co/HopitAI/moda-fashionsiglip-multiview-203m"
from moda_fashionsiglip_multiview import ModaFashionSigLIP
retriever = ModaFashionSigLIP.from_pretrained()
index = retriever.build_index(image_paths, item_ids=item_ids)
results = retriever.search("red floral summer dress", index, top_k=5)[0]