Skip to main content
← AI Engine

Search pictures, sounds, and 3D assets by describing them

Cross-modal embedding models put text, images, and audio into one vector space. A sentence finds the matching picture or sound effect, with no tags and no filenames. All on-device.

100 fantasy locations searched by text: CLIP finds the pictures, then CLAP finds the ambient sounds.

One Space for Text, Pictures, and Sound

Ordinary embeddings turn text into vectors. A cross-modal model goes further: it embeds text, images, and audio into the same space, so a picture of a harbor, the sentence "ships moored at the docks", and a recording of creaking ropes and gulls all land close together.

Search becomes a nearest-neighbour lookup. Embed your library once, embed the query, and rank by cosine similarity. The model reads the pixels and listens to the audio, so nothing has to be tagged or named in advance.

In our demo, 100 fantasy locations each come with a picture, a description, and an ambient sound. "A sailing ship at sea" returns the ship's deck, the captain's cabin, and the hold in the storm. "Sawing wood" returns the carpenter's workshop, by its sound alone.

What It's For

Querying at Runtime

Cross-modal vectors are ordinary float vectors, so they go straight into the engine's vector store, next to the Semantic KV Store entries you already author, with the same facet filters. Embed both sides with the same model: a CLIP image vector is only comparable to a CLIP text vector.

// Index once: CLIP puts pictures and text in one space.
string imageVector = engine.Embeddings.EmbedImage(
    "{\"model\":\"clip\",\"image\":\"" + base64Png + "\"}");
engine.KvStore.Insert("locations", entriesWithImageVectors);

// At runtime: embed a sentence with the same model and search.
string queryVector = engine.Embeddings.EmbedText(
    "{\"model\":\"clip\",\"input\":[\"a sailing ship at sea\"]}");
string matches = engine.KvStore.Query("locations", queryWithVector);

Retrieval Speed

How long one query takes on the two reference platforms, end to end: embedding the query and searching a 10,000-entry index for its top 24 matches. Each row shows the fastest model for that kind of query input (median of 20 warm runs). Lower is better.

Query input Query time
M1 Max
Query time
RTX 3090
Text 11 msCLIP 11 msCLAP
Image 20 msCLIP 16 msCLIP
Audio (10 s clip) 25 msCLAP 18 msCLAP
Video (8 frames) 1.3 sEBind 208 msEBind
3D point cloud (10k points) 476 msEBind 106 msEBind

Text, image, and audio queries complete within one or two frames at 60 FPS. Video and 3D are only embedded by EBind, the largest model, so they suit background work such as building or refreshing an index rather than per-frame lookups.

Supported Models

Each model covers a different set of modalities. Pick the smallest one that spans the modalities you need to search across.

Model Text Image Audio Video 3D
CLIP ✓✓
SigLIP ✓✓
CLAP ✓✓
ImageBind ✓✓✓
EBind ✓✓✓✓✓

CLIP, SigLIP, and CLAP are available from every SDK. ImageBind and EBind live in the engine's embedding library, and they search in every direction within their modalities: a picture can find a sound, and a sound can find a picture.

Related