NEWVectors or files. Pick a path.Start →
    Back to DiagramsRetrieval Mechanics

    One Index, Two Ways to Ask: Text Query and Image Query Disagree

    Text query "worn leather armchair" against image embeddings scores 0.08 to 0.11 and returns armchairs. The same index queried with a photograph scores 1.0 on itself, then 0.86, 0.83, and puts a floor lamp at rank four.

    A portrait diagram in two rails. The headline reads One index, two ways to ask, with the subline: one index, one collection, two query modalities, the answers disagree. The search bar holds worn leather armchair, annotated: same corpus, same embeddings. Rail A, badged text query with the note text query against image embeddings, shows five leather armchair photos in rank order at 496 dollars 0.114, 938 dollars 0.106, 489 dollars 0.103, 606 dollars 0.097 and 872 dollars 0.085, chip 5 of 5. Rail B, badged image query with input_mode equals content and the note an image as the query itself, shows five different photos: a white wooden armchair at 446 dollars scoring 1.000, an armchair draped with a blanket at 180 dollars 0.865, a grey chair among plants at 205 dollars 0.834, a pink sofa beside a floor lamp at 104 dollars 0.824, and a grey wooden armchair at 924 dollars 0.824; its chip reads a different five. A bold line states that the image query scores 1.0 on itself, then returns a floor lamp among the armchairs, and that visual similarity answers with pixels while your taxonomy is nowhere in the embedding. A code window shows the execute request with two highlighted input lines, query worn leather armchair for rail A and image_url pointing at a Pexels photo for rail B. The footer prints mxp.co/d/text-vs-image-query.
    Text query "worn leather armchair" against image embeddings scores 0.08 to 0.11 and returns armchairs. The same index queried with a photograph scores 1.0 on itself, then 0.86, 0.83, and puts a floor lamp at rank four.

    One collection of 118 images, one set of SigLIP embeddings, two ways to ask. The answers disagree, and the disagreement is informative.

    The text query worn leather armchair, run against the image embeddings, returns leather armchairs scored between 0.08 and 0.11. Those are typical magnitudes for a cross-modal match, where a sentence is compared to a picture.

    The image query uses a photograph from the corpus as the query itself, with input_mode set to content. The top result is that same photograph at a score of 1.0, which is how you know the visual leg ran against the right index. Then come 0.86 and 0.83, and at rank four, a floor lamp.

    The lamp is the lesson. It sits in a different category and it is there because the photograph looks like the query photograph, in composition, palette and lighting. Visual similarity is a statement about pixels. Your taxonomy is nowhere in the embedding. For a more like this feature, that is often exactly the behaviour you want. For a search box inside a department, it is a result you need a filter to remove.

    The two rails also show why scores across modalities are hard to compare. A 0.11 from a text query and a 0.82 from an image query say nothing about which result is better; they live on different scales. Fuse them with a rank-based method, or keep them as separate legs with separate thresholds.

    What is real here: the photos are Pexels images with every photographer credited, the embeddings and ranking came from the live API with the cache skipped on both calls, and the order is untouched. Titles, prices and categories are demo catalog data generated for this corpus.

    Run this on your own data

    Mixpeek turns video, images, audio, and documents in your object storage into searchable, timestamped results through one API.

    Search your own data