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

Search long documents 79% cheaper than voyage‑context‑4

GTE ModernColBERT turns whole manuals, contracts and reports into token vectors, so individual details can match a question. SIE is the open-source inference engine that serves the model through one API.

SIE GTE ModernColBERT

Right article first of 11,802
Question

What rank was Sheehan granted when he was decommissioned?

D. D. Sheehan 8,190 tokens, indexed whole
Matched paragraph, 59% of the way through

… Deafness by shellfire and ill-health necessitated his transfer to the 3rd RMF (Reserve) Battalion at Aghada, then Ballincollig barracks, Co. Cork. Hospitalised often, he was decommissioned late 1917, with a bulletin stating that he "relinquished his commission on account of ill-health contracted on active service, and is granted the permanent honorary rank of Captain, 13 Jan.1918".The Cork Constitution newspaper notice: 15 January 1918 at Cork City Council Library Sheehan was awarded the World War I campaign medals: 1914–15 Star, British War Medal, Victory Medal and Silver War Badge. …

Wikipedia, D. D. Sheehan · CC BY-SA Marked: where the question’s tokens matched best

The answer can fall outside the retrieved context

OpenAI text-embedding-3-large, chunked

Wrong article first
Question

What rank was Sheehan granted when he was decommissioned?

Ranked 1st: Carroll Sheehan Wikipedia · CC BY-SA

Carroll P. Sheehan (1925-2016) was an American real estate executive and political figure who was a candidate for Governor of Massachusetts in 1974.

The right article, D. D. Sheehan, ranked 2nd. A reader opening the first result gets the wrong person.

voyage-context-4

Answer article ranks fifth
Question

According to Harriet Hanson Robinson, what was the purpose of offering high wages to the Lowell mill girls?

Ranked 5th: Wage slavery Wikipedia · CC BY-SA

In an account of the Lowell mill girls, Harriet Hanson Robinson wrote that generously high wages were offered to overcome the degrading nature of the work:

The labelled answer article ranks fifth. Retrieving only the first article leaves this passage out.

96% of voyage‑context‑4’s accuracy, 79% cheaper

Right article first
of 437 questions ↑
voyage-context-4
voyage-context-4 280
SIE GTE ModernColBERT
SIE GTE ModernColBERT 269
Voyage 4 Large
Voyage 4 Large 243
OpenAI text-embedding-3-large
OpenAI text-embedding-3-large 228
Cohere Embed v5 Pro
Cohere Embed v5 Pro 193
Index 11,802 articles
USD ↓
SIE GTE ModernColBERT
$2.11 SIE GTE ModernColBERT
Cohere Embed v5 Pro
Cohere Embed v5 Pro $9.47
Voyage 4 Large
Voyage 4 Large $9.88
voyage-context-4
voyage-context-4 $10.15
OpenAI text-embedding-3-large
OpenAI text-embedding-3-large $12.76
Evaluation
Tested
437 held-out MLDR questions, 11,802 English Wikipedia articles
Scored
The labelled answer article ranks first
Prices
SIE Serverless and provider list prices; each model’s billed tokens

Send a question and its passages, get token vectors to rank

from sie_sdk import SIEClient
​
client = SIEClient(api_key="API keysk-sie-…")
​
query = "querycookie sent with cross-site requests that also needs the Secure attribute"
passages = [
"passage 1Send the cookie only for requests originating from the same site that set the cookie.",
"passage 2Send the cookie only for requests originating from the same site that set the cookie, and for cross-site requests that meet both of the following criteria:",
"passage 3Send the cookie with both cross-site and same-site requests. The Secure attribute must also be set when using this value.",
"passage 4Indicates that the cookie should be stored using partitioned storage. Note that if this is set, the Secure directive must also be set.",
]
​
q = client.encode(
"modellightonai/GTE-ModernColBERT-v1",
[{"text": query}],
output_types=["multivector"],
is_query=True,
)[0]["multivector"]
docs = client.encode(
"modellightonai/GTE-ModernColBERT-v1",
[{"text": passage} for passage in passages],
output_types=["multivector"],
is_query=False,
)
​
print(q)
print(docs)
import { SIEClient } from '@superlinked/sie-sdk';

const client = new SIEClient(undefined, { apiKey: 'sk-sie-…' });

const query = "cookie sent with cross-site requests that also needs the Secure attribute";
const passages = [
  "Send the cookie only for requests originating from the same site that set the cookie.",
  "Send the cookie only for requests originating from the same site that set the cookie, and for cross-site requests that meet both of the following criteria:",
  "Send the cookie with both cross-site and same-site requests. The Secure attribute must also be set when using this value.",
  "Indicates that the cookie should be stored using partitioned storage. Note that if this is set, the Secure directive must also be set.",
];
const model = 'lightonai/GTE-ModernColBERT-v1';

const [q] = await client.encode(model, [{ text: query }], {
  outputTypes: ['multivector'], isQuery: true,
});
const docs = await client.encode(model, passages.map((text) => ({ text })), {
  outputTypes: ['multivector'], isQuery: false,
});
console.log({ query: q, documents: docs });
# Encode the question as a query, then the passages as documents; rank by MaxSim.
curl https://api.superlinked.com/v1/encode/lightonai%2FGTE-ModernColBERT-v1 \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"text\":\"cookie sent with cross-site requests that also needs the Secure attribute\"}],\"params\":{\"output_types\":[\"multivector\"],\"options\":{\"is_query\":true}}}"

curl https://api.superlinked.com/v1/encode/lightonai%2FGTE-ModernColBERT-v1 \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"text\":\"Send the cookie only for requests originating from the same site that set the cookie.\"},{\"text\":\"Send the cookie only for requests originating from the same site that set the cookie, and for cross-site requests that meet both of the following criteria:\"},{\"text\":\"Send the cookie with both cross-site and same-site requests. The Secure attribute must also be set when using this value.\"},{\"text\":\"Indicates that the cookie should be stored using partitioned storage. Note that if this is set, the Secure directive must also be set.\"}],\"params\":{\"output_types\":[\"multivector\"],\"options\":{\"is_query\":false}}}"
Build the "Multi-vector" 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: lightonai/GTE-ModernColBERT-v1 (SIE primitive: /encode). Keep the model id configurable.

Task
- Input: a query string plus a list of candidate documents.
- Behaviour: return the query and passage token vectors from the native encode calls
- Send two POST requests to https://api.superlinked.com/v1/encode/lightonai%2FGTE-ModernColBERT-v1. Encode one query item {text: query} with params {output_types: ["multivector"], options: {is_query: true}}, then all candidate passages in one batch of {text: passage} items with params {output_types: ["multivector"], options: {is_query: false}}. Do not call the API per candidate. Read the returned per-token vectors from items[i].multivector.values. Return the native token vectors without adding application scoring or ranking. In Python, use SIEClient.encode(..., output_types=["multivector"], is_query=True) for the query and encode(..., output_types=["multivector"], is_query=False) for the passage batch; read each decoded ["multivector"] array. In TypeScript, use client.encode with outputTypes: ["multivector"] and isQuery: true for the query, then isQuery: false for the passage batch; the SDK decodes the native token vectors.

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
RankPassageMaxSim
1
SameSite=None

Send the cookie with both cross-site and same-site requests. The Secure attribute must also be set when using this value.

25 token vectors × 128
15.089
2
SameSite=Lax

Send the cookie only for requests originating from the same site that set the cookie, and for cross-site requests that meet both of the following criteria:

30 token vectors × 128
14.742
3
SameSite=Strict

Send the cookie only for requests originating from the same site that set the cookie.

18 token vectors × 128
14.609
4
Partitioned

Indicates that the cookie should be stored using partitioned storage. Note that if this is set, the Secure directive must also be set.

28 token vectors × 128
14.594

The API returns 16 query token vectors and each passage’s token vectors. This display ranks the recorded vectors with MaxSim. Recorded 2026-09-15; MDN Web Docs, CC BY-SA 2.5.

Index long documents 79% cheaper than voyage‑context‑4

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.

  • NVIDIA
  • 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

from openai import OpenAI

client = OpenAI()
model = "text-embedding-3-large"

docs = client.embeddings.create(model=model, input=document_chunks)
query = client.embeddings.create(model=model, input=[question])
from pylate import models

model = models.ColBERT("lightonai/GTE-ModernColBERT-v1", document_length=8192)

docs = model.encode(documents, is_query=False)
query = model.encode([question], is_query=True)
SIE
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")
model = "lightonai/GTE-ModernColBERT-v1"
options = {"profile": "long_context"}  # whole documents, 8,192-token limit

docs = client.encode(
    model, [{"text": d} for d in documents],
    output_types=["multivector"], is_query=False, options=options,
)
query = client.encode(
    model, [{"text": question}],
    output_types=["multivector"], is_query=True, options=options,
)
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")
model = "lightonai/GTE-ModernColBERT-v1"
options = {"profile": "long_context"}  # whole documents, 8,192-token limit

docs = client.encode(
    model, [{"text": d} for d in documents],
    output_types=["multivector"], is_query=False, options=options,
)
query = client.encode(
    model, [{"text": question}],
    output_types=["multivector"], is_query=True, options=options,
)

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.