Most AI tasks no longer need a frontier model Read launch post

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 query
QUERY

A blue lace-up shoe with a white sole.

  1. Blue lace-up shoe with a white sole
    1cat-01.jpg
  2. Dark blue boat shoe with a brown sole
    2cat-02.jpg
  3. White lace-up high-top shoe with a white sole
    3cat-03.jpg

ABO photos · CC BY 4.0

Voyage and GPT-6.1 Sol captions put the wrong colour first

Search

gold metal ceiling light

Voyage multimodal-3.5

Wrong colour: black
black metal ceiling light
First result
Search

beige leather stool

GPT-6.1 Sol (high reasoning)

Wrong colour: brown
brown leather stool
First result · Captions + text-embedding-3-large

More right matches than Voyage, at the lowest price per photo

Right product first
309 searches ↑
SIE SigLIP so400m
SIE SigLIP so400m 83.1%
Cohere Embed v5 Pro
Cohere Embed v5 Pro 82.6%
Voyage multimodal-3.5
Voyage multimodal-3.5 75.1%
GPT-6.1 Sol captions
GPT-6.1 Sol captions 71.6%
Claude Sonnet 5.5 captions
Claude Sonnet 5.5 captions 71.2%
Voyage multimodal-3.5 (224 px)
Voyage multimodal-3.5 (224 px) 70.3%
Cost per 1M photos
indexing, USD ↓
SIE SigLIP so400m
$24 SIE SigLIP so400m
Voyage multimodal-3.5 (224 px)
$30 Voyage multimodal-3.5 (224 px)
Cohere Embed v5 Pro
$335 Cohere Embed v5 Pro
Voyage multimodal-3.5
$514 Voyage multimodal-3.5
GPT-6.1 Sol captions
GPT-6.1 Sol captions $3,025
Claude Sonnet 5.5 captions
Claude Sonnet 5.5 captions $3,082
Evaluation
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 urlopen
from sie_sdk import SIEClient
​
client = 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.
Output
Recorded vectors, ranked by cosineTop 5 of 20
  1. 1 Blue lace-up shoe with a white sole
    cat-01.jpg0.1055 cosine
  2. 2 Dark blue boat shoe with a brown sole
    cat-02.jpg0.0977 cosine
  3. 3 White lace-up high-top shoe with a white sole
    cat-03.jpg0.0718 cosine
  4. 4 Blue backpack with a front pocket
    cat-11.jpg0.0415 cosine
  5. 5 Red and black patterned backpack
    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

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
Agent prompt 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

Switch to SIE in 5 minutes

import voyageai
from PIL import Image

client = voyageai.Client()
model = "voyage-multimodal-3.5"
image_vector = client.multimodal_embed(
    [[Image.open("photo.jpg")]], model=model, input_type="document",
).embeddings[0]
query_vector = client.multimodal_embed(
    [[query]], model=model, input_type="query",
).embeddings[0]
SIE
from pathlib import Path
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-...")
model = "google/siglip-so400m-patch14-384"
image_bytes = Path("photo.jpg").read_bytes()
image_vector = client.encode(model, [{"images": [image_bytes]}])[0]["dense"]
query_vector = client.encode(model, [{"text": query}], is_query=True)[0]["dense"]

Contact us

Tell us about your use case and we'll get back to you shortly.

Apply for an inference grant

Free capacity on our hosted cluster for selected projects. Tell us what you run and we reply by email.