Find the image that matches the whole request
Superlinked gives your agent one API to search product and media libraries with text, then rank every image by visual similarity.
a red leather handbag
Red shoes
Black handbag
Rank 1 · Red leather handbag
The full query beats color-only and category-only matches
Query
a red leather handbag
1 Red leather handbag
2 Red shoes
3 Black handbag
4 Green backpack
5 Black camera
6 Blue running shoe
Run image search with one encode API
import numpy as npfrom sie_sdk import SIEClientclient = SIEClient( api_key="sk-sie-…", base_url="https://api.superlinked.com",)query = "querya red leather handbag"images = [ imagered-leather-handbag.pngbrowse, imagered-shoes.jpgbrowse, imageblack-handbag.jpgbrowse, imagegreen-backpack.pngbrowse, imageblack-camera.pngbrowse, imageblue-running-sneaker.pngbrowse,]# Encode the text query + each catalog image in one batch.items = [{"text": query}] + [{"images": [f]} for f in images]vecs = client.encode("modelgoogle/siglip-so400m-patch14-384", items)mat = np.array([v["dense"] for v in vecs])mat = mat / np.linalg.norm(mat, axis=1, keepdims=True)scores = mat[1:] @ mat[0] # cross-modal cosine to the queryfor i in np.argsort(scores)[::-1]: print(f"{scores[i]:.3f} {images[i]}")import { readFile } from 'node:fs/promises';
import { SIEClient } from '@superlinked/sie-sdk';
const client = new SIEClient('https://api.superlinked.com', {
apiKey: 'sk-sie-…',
});
const query = "a red leather handbag";
const imagePaths = [
"red-leather-handbag.png",
"red-shoes.jpg",
"black-handbag.jpg",
"green-backpack.png",
"black-camera.png",
"blue-running-sneaker.png",
];
const images = await Promise.all(imagePaths.map((path) => readFile(path)));
// Encode the text query + each catalog image in one batch.
const items = [{ text: query }, ...images.map((image) => ({ images: [image] }))];
const vecs = await client.encode('google/siglip-so400m-patch14-384', items);
const [q, ...imgVecs] = vecs.map((v) => v.dense);
const cosine = (a: Float32Array, b: Float32Array) => {
const dot = a.reduce((s, x, i) => s + x * b[i], 0);
return dot / (Math.hypot(...a) * Math.hypot(...b));
};
const ranked = imagePaths
.map((file, i) => ({ file, score: cosine(q!, imgVecs[i]!) }))
.sort((a, b) => b.score - a.score);
console.log(ranked);image_0=$(base64 < 'red-leather-handbag.png' | tr -d '\n')
image_1=$(base64 < 'red-shoes.jpg' | tr -d '\n')
image_2=$(base64 < 'black-handbag.jpg' | tr -d '\n')
image_3=$(base64 < 'green-backpack.png' | tr -d '\n')
image_4=$(base64 < 'black-camera.png' | tr -d '\n')
image_5=$(base64 < 'blue-running-sneaker.png' | tr -d '\n')
curl https://api.superlinked.com/v1/encode/google%2Fsiglip-so400m-patch14-384 \
-H "Authorization: Bearer sk-sie-…" \
-H "Content-Type: application/json" \
-d "{\"items\":[{\"text\":\"a red leather handbag\"},{\"images\":[{\"data\":\"$image_0\",\"format\":\"png\"}]},{\"images\":[{\"data\":\"$image_1\",\"format\":\"jpeg\"}]},{\"images\":[{\"data\":\"$image_2\",\"format\":\"jpeg\"}]},{\"images\":[{\"data\":\"$image_3\",\"format\":\"png\"}]},{\"images\":[{\"data\":\"$image_4\",\"format\":\"png\"}]},{\"images\":[{\"data\":\"$image_5\",\"format\":\"png\"}]}],\"params\":{\"output_types\":[\"dense\"]}}"Build the "Image search" capability into my app using the Superlinked Inference Engine (SIE).
Context
- SIE is an OpenAI-style inference API. Python SDK: `from sie_sdk import SIEClient`; TypeScript: `@superlinked/sie-sdk`.
- Base URL: https://api.superlinked.com (or my regional endpoint). Auth: Bearer key from env `SIE_API_KEY` (never hard-code it).
- Model: google/siglip-so400m-patch14-384 (SIE primitive: /encode). Keep the model id configurable.
Task
- Input: a text query plus one or more candidate images.
- Behaviour: return the images ranked by similarity to the query
- Call the selected SIE primitive once per request and map the response into your domain type.
Deliverables
- A typed client wrapper, an application-level function for this task, error handling for timeouts/empty input, and unit tests with a stubbed client.
- Wire it into my existing stack (ask me which framework if unclear) and add a short usage example. Edit the code and run it live Sign up to join the waitlist. We'll notify you when access is available. Credits are handled separately.
Get started no credit card required
Output
1top match
2
3
4
5
6- Ranks images by pixels, not filenames or tags
- Finds matches from a plain text query
Image retrieval quality and latency
PRICE
$ / 1k images $ / 1M input tokens ↓
$0.0143 SIE SigLIP2 Base
$0.0232 SIE SigLIP
$0.1 Google Multimodal Embeddings
Voyage multimodal-3.5 · 1MP $0.6
$0.023 SIE SigLIP2 Base
$0.0309 SIE SigLIP
$0.05 Jina Embeddings v4 multimodal
Voyage multimodal-3.5 · 1MP $0.12
Cohere Embed v4 multimodal $0.12
QUALITY
nDCG@10 · Flickr30k ↑
SIE SigLIP 0.90
0.88
0.87
SIE SigLIP2 Base 0.82
0.80
0.79
LATENCY
p50 ms ↓
99ms SIE SigLIP2 Base
115ms
125ms
SIE SigLIP 197ms
225ms
240ms
Deploy your way
Managed Cloud
Full compute toolkit for your agents with zero ops.
- No idle GPUs, pay for what you use
- Fits your stack: SDK, API, CLI, MCP
- Zero lock-in, self-host the same stack
- SOC 2 Type 2, US or EU data residency
$50 Example credit balance
1.3B tokens embedded
120k pages parsed
27M tokens generated (1:1 in:out)
Get started
no credit card required
Self-host with K8s
Easy & scalable deployment in your own cloud.
- Terraform to your cloud in minutes
- Apache-2.0, same engine as Cloud
- Scales to zero, no bill between jobs
- Per-tenant pools, no noisy neighbors
Agent prompt
Deploy SIE to our AWS account with the superlinked/sie/aws Terraform module. Docs: superlinked.com/docs/deploymentDeploy SIE to our GCP project with the superlinked/sie/google Terraform module. Docs: superlinked.com/docs/deploymentDeploy SIE to our Azure AKS cluster via helm install. Requirements: superlinked.com/docs/deployment Run locally
Run the same models on your own machine.
- Runs on NVIDIA GPU or Apple Silicon
- One command, no Docker or cluster
- All 100+ Cloud models, fully offline
- Same SDK and IDs, no code changes
pip install "sie-server[local]" && sie-server servepip install "sie-server[local]" && sie-server serve --device cuda