Why did we open-source our inference engine? Read the post

Build e-commerce agents with open source models

Superlinked gives your agent one API to read listings, search product images, classify catalog paths and return normalized attributes.

Get started
Products
Yellow Kärcher S4 Twin outdoor power sweeper
Karcher - S4 Twin sweeper
Product category Where should this product appear?
Copy only Carpet Sweepers
Image + copy Power Sweepers
Shopify product-catalogue · train row 54 See how image + description helped the agent place 21 more products in the exact category in a 100-listing test

Your catalog agent

Turn listing copy and product images into normalized catalog fields.

Catalog request Place this listing and find related products.
Grounded result Exact path, matched images and normalized attributes

Your product catalog

The listing fields and category paths the agent can compare.

IMAGE Product photos Visual product clues
TITLE Listing titles Seller wording
COPY Descriptions Product function
PATH Category paths Your taxonomy
Browse all tasks
from pathlib import Path
from sie_sdk import SIEClient
client = SIEClient(
api_key="API keysk-sie-…",
base_url="https://api.superlinked.com",
)
query = "queryProduct title: Karcher - S4 Twin sweeper Product description: The Kärcher S 4 Twin sweeper makes light work of all your sweeping tasks, from petals in spring to autumn leaves and winter grit."
documents = [
"Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Sweepers",
"Home & Garden > Household Supplies > Household Cleaning Supplies > Carpet Sweepers",
"Home & Garden > Lawn & Garden > Outdoor Power Equipment > Power Sweepers",
"Home & Garden > Household Appliances > Floor & Steam Cleaners > Floor Scrubbers > Walk-Behind Floor Scrubbers",
]
image = {"data": Path(fileJPGkarcher-s4-twin-sweeper.jpgbrowse).read_bytes(), "format": "jpeg"}
query_item = {"text": query, "images": [image]}
items = [{"id": str(i), "text": d} for i, d in enumerate(documents)]
ranked = client.score("modelQwen/Qwen3-VL-Reranker-2B", query_item, items,
instruction="Rank Shopify taxonomy paths by which path should categorize the product listing for an online store. Use both the product image and listing text.")
for r in ranked["scores"]:
print(r["score"], documents[int(r["item_id"])])
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 = "Product title: Karcher - S4 Twin sweeper\nProduct description: The Kärcher S 4 Twin sweeper makes light work of all your sweeping tasks, from petals in spring to autumn leaves and winter grit.";
const documents = [
  "Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Sweepers",
  "Home & Garden > Household Supplies > Household Cleaning Supplies > Carpet Sweepers",
  "Home & Garden > Lawn & Garden > Outdoor Power Equipment > Power Sweepers",
  "Home & Garden > Household Appliances > Floor & Steam Cleaners > Floor Scrubbers > Walk-Behind Floor Scrubbers",
];
const image = await readFile("karcher-s4-twin-sweeper.jpg");
const queryItem = { text: query, images: [image] };
const items = documents.map((text, i) => ({ id: String(i), text }));
const ranked = await client.score('Qwen/Qwen3-VL-Reranker-2B', queryItem, items,
  { instruction: "Rank Shopify taxonomy paths by which path should categorize the product listing for an online store. Use both the product image and listing text." } as never);
console.log(ranked.scores.map(({ itemId, score }) => ({ document: documents[Number(itemId)], score })));
query_image=$(base64 < 'karcher-s4-twin-sweeper.jpg' | tr -d '\n')
curl https://api.superlinked.com/v1/score/Qwen%2FQwen3-VL-Reranker-2B \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"query\":{\"text\":\"Product title: Karcher - S4 Twin sweeper\\nProduct description: The Kärcher S 4 Twin sweeper makes light work of all your sweeping tasks, from petals in spring to autumn leaves and winter grit.\",\"images\":[{\"data\":\"$query_image\",\"format\":\"jpeg\"}]},\"items\":[{\"id\":\"0\",\"text\":\"Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Sweepers\"},{\"id\":\"1\",\"text\":\"Home & Garden > Household Supplies > Household Cleaning Supplies > Carpet Sweepers\"},{\"id\":\"2\",\"text\":\"Home & Garden > Lawn & Garden > Outdoor Power Equipment > Power Sweepers\"},{\"id\":\"3\",\"text\":\"Home & Garden > Household Appliances > Floor & Steam Cleaners > Floor Scrubbers > Walk-Behind Floor Scrubbers\"}],\"instruction\":\"Rank Shopify taxonomy paths by which path should categorize the product listing for an online store. Use both the product image and listing text.\"}"
Build the "Rerank" 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: Qwen/Qwen3-VL-Reranker-2B (SIE primitive: /score). Keep the model id configurable.

Task
- Input: a query string plus a list of candidate documents.
- Behaviour: reorder the candidates by true relevance to the query using the cross-encoder
- 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.
Listing image used in the score requestkarcher-s4-twin-sweeper.jpg
Yellow Kärcher S4 Twin outdoor power sweeper
import numpy as np
from sie_sdk import SIEClient
client = SIEClient(
api_key="sk-sie-…",
base_url="https://api.superlinked.com",
)
query = "queryProduct title: Airplane Piggy Bank Product description: The sweetest gift!"
documents = [
"document 1Toys & Games > Toys > Flying Toys",
"document 2Home & Garden > Decor > Piggy Banks & Money Jars",
"document 3Toys & Games > Toys > Flying Toys > Model Aircrafts",
"document 4Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Clay & Modeling Dough > Clay > Sculpting Clay",
"document 5Toys & Games > Toys > Beach & Sand Toys > Sand Castle Molds",
"document 6Hardware > Tools > Dollies & Hand Trucks",
"document 7Home & Garden > Decor > Piggy Banks & Money Jars > Piggy Banks",
"document 8Toys & Games > Toys > Play Vehicles > Toy Airplanes",
]
items = [{"text": query}, *({"text": d} for d in documents)]
vecs = client.encode("modelBAAI/bge-m3", 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] # cosine similarity to the query
for i in np.argsort(scores)[::-1]:
print(f"{scores[i]:.3f} {documents[i]}")
import { SIEClient } from '@superlinked/sie-sdk';

const client = new SIEClient('https://api.superlinked.com', {
  apiKey: 'sk-sie-…',
});

const query = "Product title: Airplane Piggy Bank\nProduct description: The sweetest gift!";
const documents = [
  "Toys & Games > Toys > Flying Toys",
  "Home & Garden > Decor > Piggy Banks & Money Jars",
  "Toys & Games > Toys > Flying Toys > Model Aircrafts",
  "Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Clay & Modeling Dough > Clay > Sculpting Clay",
  "Toys & Games > Toys > Beach & Sand Toys > Sand Castle Molds",
  "Hardware > Tools > Dollies & Hand Trucks",
  "Home & Garden > Decor > Piggy Banks & Money Jars > Piggy Banks",
  "Toys & Games > Toys > Play Vehicles > Toy Airplanes",
];

const items = [{ text: query }, ...documents.map((text) => ({ text }))];
const vecs = await client.encode('BAAI/bge-m3', items);
const [q, ...d] = 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 = documents
  .map((doc, i) => ({ doc, score: cosine(q!, d[i]!) }))
  .sort((a, b) => b.score - a.score);
console.log(ranked);
# Encode the query + candidates in one batch, then rank by cosine.
curl https://api.superlinked.com/v1/encode/BAAI%2Fbge-m3 \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"text\":\"Product title: Airplane Piggy Bank\\nProduct description: The sweetest gift!\"},{\"text\":\"Toys & Games > Toys > Flying Toys\"},{\"text\":\"Home & Garden > Decor > Piggy Banks & Money Jars\"},{\"text\":\"Toys & Games > Toys > Flying Toys > Model Aircrafts\"},{\"text\":\"Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Clay & Modeling Dough > Clay > Sculpting Clay\"},{\"text\":\"Toys & Games > Toys > Beach & Sand Toys > Sand Castle Molds\"},{\"text\":\"Hardware > Tools > Dollies & Hand Trucks\"},{\"text\":\"Home & Garden > Decor > Piggy Banks & Money Jars > Piggy Banks\"},{\"text\":\"Toys & Games > Toys > Play Vehicles > Toy Airplanes\"}],\"params\":{\"output_types\":[\"dense\"]}}"
Build the "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: BAAI/bge-m3 (SIE primitive: /encode). Keep the model id configurable.

Task
- Input: a query string plus a list of candidate documents.
- Behaviour: return the candidates ranked by semantic similarity to the query, with a score per candidate
- Encode the query and candidates in one batched /encode call, then rank by cosine similarity in the client. Do not call the API per candidate.

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.
import numpy as np
from sie_sdk import SIEClient
client = SIEClient(
api_key="sk-sie-…",
base_url="https://api.superlinked.com",
)
query = "queryclear 1 litre laboratory flask with a blue screw cap"
images = [
imageairplane-piggy-bank.jpgbrowse,
imageearthquake-alert.jpgbrowse,
imageerlenmeyer-flask.jpgbrowse,
imagenail-drill.jpgbrowse,
]
# 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 query
for 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 = "clear 1 litre laboratory flask with a blue screw cap";
const imagePaths = [
  "airplane-piggy-bank.jpg",
  "earthquake-alert.jpg",
  "erlenmeyer-flask.jpg",
  "nail-drill.jpg",
];
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 < 'airplane-piggy-bank.jpg' | tr -d '\n')
image_1=$(base64 < 'earthquake-alert.jpg' | tr -d '\n')
image_2=$(base64 < 'erlenmeyer-flask.jpg' | tr -d '\n')
image_3=$(base64 < 'nail-drill.jpg' | 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\":\"clear 1 litre laboratory flask with a blue screw cap\"},{\"images\":[{\"data\":\"$image_0\",\"format\":\"jpeg\"}]},{\"images\":[{\"data\":\"$image_1\",\"format\":\"jpeg\"}]},{\"images\":[{\"data\":\"$image_2\",\"format\":\"jpeg\"}]},{\"images\":[{\"data\":\"$image_3\",\"format\":\"jpeg\"}]}],\"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.
from sie_sdk import SIEClient
client = SIEClient(
api_key="sk-sie-…",
base_url="https://api.superlinked.com",
)
result = client.extract(
"modelfastino/gliner2-large-v1",
{"text": "textMelodySusie Portable Electric Nail Drill,PC120B Compact Efile Electrical Professional Nail File Kit for Acrylic, Gel Nails, Manicure Pedicure Polishing Shape Tools Design for Home Salon Use, Gold About This PC120B Multifunctional: Designed with 6 kinds of metal bits (also works with all kinds of 3/32" shank bits) and 6 sanding bands, which are used for grinding, carving, cutting, polishing for all nail arts as well as cuticle removal Adjustable Speed and Easy to use: 0-20,000RPM with a speed control button, which makes this electric nail file easier and safer to polish your nails. Just need to connect the power cord with it to start working. It is professional for both home and salon use. Low Noise and Low Heat: This electro file is with a powerful yet quiet motor. Also, the smart heat dissipation can avoid overheating efficiently. (no more than 20 Minutes of continuous use each time is recommended) Portable and Light: Compact and lightweight design make it easy to carry and portable to bring it out, you can do your nail art work anytime anywhere. Easy to Use: It is professional for both home and salon use. Just need to connect the power cord with it to start working. Overview Brand : MelodySusie Material : Aluminum Model Name : DR-203 Voltage : 2.4E+2 Volts Power Source : Corded Electric"},
labels=[
"entity typebrand",
"entity typematerial",
"entity typemodel name",
"entity typevoltage",
"entity typepower source",
"entity typemaximum speed",
"entity typebit shank size",
"entity typerecommended continuous use",
],
)
for span in result["entities"]:
print(span["label"], span["text"])
import { SIEClient } from '@superlinked/sie-sdk';

const client = new SIEClient('https://api.superlinked.com', {
  apiKey: 'sk-sie-…',
});

const result = await client.extract(
  'fastino/gliner2-large-v1',
  { text: "MelodySusie Portable Electric Nail Drill,PC120B Compact Efile Electrical Professional Nail File Kit for Acrylic, Gel Nails, Manicure Pedicure Polishing Shape Tools Design for Home Salon Use, Gold\n\nAbout This PC120B Multifunctional: Designed with 6 kinds of metal bits (also works with all kinds of 3/32\" shank bits) and 6 sanding bands, which are used for grinding, carving, cutting, polishing for all nail arts as well as cuticle removal Adjustable Speed and Easy to use: 0-20,000RPM with a speed control button, which makes this electric nail file easier and safer to polish your nails. Just need to connect the power cord with it to start working. It is professional for both home and salon use. Low Noise and Low Heat: This electro file is with a powerful yet quiet motor. Also, the smart heat dissipation can avoid overheating efficiently. (no more than 20 Minutes of continuous use each time is recommended) Portable and Light: Compact and lightweight design make it easy to carry and portable to bring it out, you can do your nail art work anytime anywhere. Easy to Use: It is professional for both home and salon use. Just need to connect the power cord with it to start working. Overview Brand : MelodySusie Material : Aluminum Model Name : DR-203 Voltage : 2.4E+2 Volts Power Source : Corded Electric" },
  { labels: ["brand","material","model name","voltage","power source","maximum speed","bit shank size","recommended continuous use"] },
);
console.log(result.entities);
curl https://api.superlinked.com/v1/extract/fastino%2Fgliner2-large-v1 \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"text\":\"MelodySusie Portable Electric Nail Drill,PC120B Compact Efile Electrical Professional Nail File Kit for Acrylic, Gel Nails, Manicure Pedicure Polishing Shape Tools Design for Home Salon Use, Gold\\n\\nAbout This PC120B Multifunctional: Designed with 6 kinds of metal bits (also works with all kinds of 3/32\\\" shank bits) and 6 sanding bands, which are used for grinding, carving, cutting, polishing for all nail arts as well as cuticle removal Adjustable Speed and Easy to use: 0-20,000RPM with a speed control button, which makes this electric nail file easier and safer to polish your nails. Just need to connect the power cord with it to start working. It is professional for both home and salon use. Low Noise and Low Heat: This electro file is with a powerful yet quiet motor. Also, the smart heat dissipation can avoid overheating efficiently. (no more than 20 Minutes of continuous use each time is recommended) Portable and Light: Compact and lightweight design make it easy to carry and portable to bring it out, you can do your nail art work anytime anywhere. Easy to Use: It is professional for both home and salon use. Just need to connect the power cord with it to start working. Overview Brand : MelodySusie Material : Aluminum Model Name : DR-203 Voltage : 2.4E+2 Volts Power Source : Corded Electric\"}],\"params\":{\"labels\":[\"brand\",\"material\",\"model name\",\"voltage\",\"power source\",\"maximum speed\",\"bit shank size\",\"recommended continuous use\"]}}"
Build the "Named entities" 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: fastino/gliner2-large-v1 (SIE primitive: /extract). Keep the model id configurable.

Task
- Input: a block of text.
- Behaviour: return the named entities found in the text with their types
- 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.
Output
Home & Garden > Lawn & Garden > Outdoor Power Equipment > Power Sweepers
↑ up 20.74
Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Sweepers
↓ down 10.68
Home & Garden > Household Supplies > Household Cleaning Supplies > Carpet Sweepers
↓ down 10.67
Home & Garden > Household Appliances > Floor & Steam Cleaners > Floor Scrubbers > Walk-Behind Floor Scrubbers
– held0.58
  • Reorders by true relevance
  • Scored by meaning, keyword-free
Output
Home & Garden > Decor > Piggy Banks & Money Jars > Piggy Banks
0.66
Home & Garden > Decor > Piggy Banks & Money Jars
0.63
Toys & Games > Toys > Play Vehicles > Toy Airplanes
0.60
Toys & Games > Toys > Flying Toys > Model Aircrafts
0.57
Toys & Games > Toys > Flying Toys
0.55
Hardware > Tools > Dollies & Hand Trucks
0.47
Toys & Games > Toys > Beach & Sand Toys > Sand Castle Molds
0.46
Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Clay & Modeling Dough > Clay > Sculpting Clay
0.45
Top match at 0.66 · 8 candidates ranked
  • Ranks by meaning, not keyword overlap
  • Scores every candidate against your query
Output
erlenmeyer flask1top match
erlenmeyer-flask.jpg
0.103
airplane piggy bank2
airplane-piggy-bank.jpg
-0.065
earthquake alert3
earthquake-alert.jpg
-0.078
nail drill4
nail-drill.jpg
-0.123
  • Ranks images by pixels, not filenames or tags
  • Finds matches from a plain text query
Output

MelodySusiebrand Portable Electric Nail Drill,PC120B Compact Efile Electrical Professional Nail File Kit for Acrylic, Gel Nails, Manicure Pedicure Polishing Shape Tools Design for Home Salon Use, Gold About This PC120B Multifunctional: Designed with 6 kinds of metal bits (also works with all kinds of 3/32"bit shank size shank bits) and 6 sanding bands, which are used for grinding, carving, cutting, polishing for all nail arts as well as cuticle removal Adjustable Speed and Easy to use: 0-20,000RPMmaximum speed with a speed control button, which makes this electric nail file easier and safer to polish your nails. Just need to connect the power cord with it to start working. It is professional for both home and salon use. Low Noise and Low Heat: This electro file is with a powerful yet quiet motor. Also, the smart heat dissipation can avoid overheating efficiently. (no more than 20 Minutesrecommended continuous use of continuous use each time is recommended) Portable and Light: Compact and lightweight design make it easy to carry and portable to bring it out, you can do your nail art work anytime anywhere. Easy to Use: It is professional for both home and salon use. Just need to connect the power cord with it to start working. Overview Brand : MelodySusie Material : Aluminummaterial Model Name : DR-203model name Voltage : 2.4E+2 Voltsvoltage Power Source : Corded Electricpower source

MelodySusiebrand3/32"bit shank size0-20,000RPMmaximum speed20 Minutesrecommended continuous useAluminummaterialDR-203model name2.4E+2 VoltsvoltageCorded Electricpower source
8 matches across 8 types
  • Pulls typed entities straight from raw text

Compare models for this task

PRICE
$ / 1M input tokens
$0.02 OpenAI 3-small
$0.02 Voyage voyage-4-lite
$0.0377 SIE Arctic Embed L v2
Voyage voyage-4-large $0.12
SIE Qwen3 Embedding 4B $0.13
OpenAI 3-large $0.13
QUALITY
nDCG@10 · NFCorpus
SIE Qwen3 Embedding 4B 0.41
0.40
0.39
SIE Arctic Embed L v2 0.35
0.34
0.33
LATENCY
p50 ms
36ms SIE Arctic Embed L v2
44ms
50ms
SIE Qwen3 Embedding 4B 150ms
165ms
178ms
PRICE
$ / 1M input tokens $ / 1M pairs
$0.02 Voyage rerank-2.5-lite
$0.025 ZeroEntropy zerank-2
Voyage rerank-2.5 $0.05
Jina Reranker v3 $0.05
$6.63 SIE Qwen3 Reranker 0.6B
SIE Qwen3 Reranker 4B $61.89
QUALITY
nDCG@10 · AskUbuntu
SIE Qwen3 Reranker 4B 0.70
0.68
0.67
SIE Qwen3 Reranker 0.6B 0.65
0.64
0.63
LATENCY
p50 ms
60ms SIE Qwen3 Reranker 0.6B
75ms
150ms
SIE Qwen3 Reranker 4B 580ms
640ms
700ms
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
PRICE
$ / 1M input tokens
$0.0907 SIE GLiNER Multi
$0.186 SIE GLiNER2 Large
$0.2 OpenAI GPT-5.4 nano
$0.3 Google Gemini 3.5 Flash-Lite
OpenAI GPT-5.4 mini $0.75
Anthropic Claude Haiku 4.5 $1
QUALITY
F1 · CoNLL-03
SIE GLiNER Multi 0.60
0.58
0.57
SIE GLiNER2 Large 0.54
0.52
0.51
LATENCY
p50 ms
SIE GLiNER Multi 82ms
95ms
108ms
SIE GLiNER2 Large 130ms
145ms
158ms

A verifier places 12 more listings in the exact category

View on GitHub
Your catalog data Listing + candidate paths
title description image candidate_paths
Your catalog agent Three Superlinked calls rank and check the path
01
Rank paths from listing copy Qwen3-VL-Reranker-2B
Text rerank
02
Rank paths from image + copy Qwen3-VL-Reranker-2B
Multimodal rerank
03
Verify the strongest paths Qwen3.6-27B
Structured choice
Your catalog Normalized product record
category_pathselected needs_reviewboolean model_tracerecorded
100 labeled listings Exact path matches
Copy only 41
Image + copy 50
Verified agent 62
+21 exact paths vs copy only

Deploy your way

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
Deploy guide

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
Quickstart

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.