ContextClosest

Hybrid multimodal retrieval · live

Search a catalog by what you mean.

56,427 Amazon products, ranked by a fine-tuned SigLIP 2 model that reads product photos and by SPLADE keyword vectors, fused with Reciprocal Rank Fusion.

Try
embedding space 56,427 products
Each dot is a product. A query lands among the products closest to its meaning.
147,702raw listings cleaned with Spark
56,427products indexed in Qdrant
768-dSigLIP 2 + LoRA image vectors
RRFdense + sparse rank fusion
Rediscached repeats in milliseconds

Under the hood

How a search runs

  1. 01

    Check the cache

    Redis returns repeated searches straight from memory, and counts the query for the trending bar.

    Redis
  2. 02

    Encode the query

    The SigLIP 2 text tower turns it into a 768-d vector; SPLADE builds a weighted keyword vector.

    SigLIP 2 · SPLADE
  3. 03

    Retrieve both ways

    Qdrant searches product-image vectors and keyword vectors, keeping only matches above a score threshold.

    Qdrant
  4. 04

    Fuse the rankings

    Reciprocal Rank Fusion merges the two lists, so meaning and exact words both count.

    RRF

Behind the index

Apache Spark

Cleans 147,702 nested, multilingual listings into 56,427 products: filters, image join, marketplace dedup.

LoRA fine-tuning

SigLIP 2 trained on product photos and attribute captions, so “walnut desk” finds the right wood.

Apache Kafka

New products stream into the live index in seconds; every search feeds Spark Structured Streaming analytics.

See the full architecture