Match 10% more products than Voyage multimodal‑3.5, 20% cheaper
SigLIP turns product photos and search text into matching vectors. SIE is the open-source inference engine that serves it, so shoppers can find products without captions or tags.
SIE SigLIP so400m
Matches queryA blue lace-up shoe with a white sole.
1cat-01.jpg
2cat-02.jpg
3cat-03.jpg
Voyage and GPT-6.1 Sol captions put the wrong colour first
gold metal ceiling light
Voyage multimodal-3.5
Wrong colour: black
beige leather stool
GPT-6.1 Sol (high reasoning)
Wrong colour: brown
More right matches than Voyage, at the lowest price per photo
- Tested
- 309 searches over 2,573 catalogue photos with similar alternatives
- Scored
- First photo matches the requested colour, material and product
- Prices
- SIE Serverless; provider list prices on recorded usage
Encode your photos once, then search by text
from urllib.request import urlopenfrom sie_sdk import SIEClientclient = SIEClient(api_key="API keysk-sie-…")query = "queryA blue lace-up shoe with a white sole."images = [ "image 1cat-01.jpg", "image 2cat-02.jpg", "image 3cat-03.jpg", # 17 more photos; Copy and Run include all 20.]model = "modelgoogle/siglip-so400m-patch14-384"# Index once; keep these vectors for later searches.items = [{"images": [{"data": urlopen("https://superlinked.com/reference/image-search/pilot/" + name).read(), "format": "jpeg"}]} for name in images]index = []for start in range(0, len(items), 10): index.extend(client.encode(model, items[start:start + 10], is_query=False))q = client.encode(model, [{"text": query}], is_query=True)[0]["dense"]print(q)print(index)import { SIEClient } from '@superlinked/sie-sdk';
const client = new SIEClient(undefined, { apiKey: 'sk-sie-…' });
const query = "A blue lace-up shoe with a white sole.";
const images = [
"cat-01.jpg", "cat-02.jpg", "cat-03.jpg",
// 17 more photos; Copy and Run include all 20.
];
const model = "google/siglip-so400m-patch14-384";
// Index once; preserve the JPEG bytes.
const items = await Promise.all(images.map(async (name) => {
const response = await fetch("https://superlinked.com/reference/image-search/pilot/" + name);
if (!response.ok) throw new Error('Could not load image');
return { images: [new Uint8Array(await response.arrayBuffer())] };
}));
const index: { dense?: Float32Array }[] = [];
for (let start = 0; start < items.length; start += 10) {
index.push(...await client.encode(model, items.slice(start, start + 10), { isQuery: false }));
}
const [q] = await client.encode(model, [{ text: query }], { isQuery: true });
console.log(q, index);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 native dense vectors for the query and candidate images
- Fetch the original JPEG bytes from https://superlinked.com/reference/image-search/pilot/. Encode images in batches of 10 with is_query false, then encode the query separately with is_query true. Python: client.encode with is_query. TypeScript: client.encode with isQuery. Return the native dense vectors without application scoring or ranking.
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.- 1
cat-01.jpg0.1055 cosine - 2
cat-02.jpg0.0977 cosine - 3
cat-03.jpg0.0718 cosine - 4
cat-11.jpg0.0415 cosine - 5
cat-12.jpg-0.0047 cosine
Encode returns dense vectors. Your code or vector database ranks the photos.
Index a million photos for $24, 20% cheaper than Voyage multimodal-3.5
Serverless API
We host the models; you call one API.
- No idle GPUs, pay for what you use
- Fits your stack: SDK, API, CLI, MCP
- Self-host the same open-source engine
- SOC 2 Type 2, US or EU data residency
- Create an account to try Serverless
Self-hosted (Kubernetes)
Your data stays in your cloud, backed by our engineers.
- Terraform modules for your cloud
- Apache-2.0, same engine as Serverless
- GPU workers scale to zero between jobs
- Separate worker pools for each tenant
Deploy SIE to our AWS account with the superlinked/sie/aws Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Google Cloud project with the superlinked/sie/google Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Azure subscription with the superlinked/sie/azure Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Alibaba Cloud account with the superlinked/sie/alicloud Terraform module. Docs: superlinked.com/docs/deployment. Run locally
The open-source server on your own machine.
- Runs on your NVIDIA GPU
- One container, no cluster
- Process your data fully offline
- Same SDK and model IDs as Serverless
docker run --gpus all -p 8080:8080 ghcr.io/superlinked/sie-server:latest-cuda12-default