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

Rank document pages 4% better than Voyage multimodal‑3.5

Tomoro ColQwen3 searches PDFs, slides and scans directly from their page images, including tables and charts. SIE is the open-source inference engine that serves it through one API.

SIE Tomoro ColQwen3 4B

Right page
QUERY

What is the 2026 SEMIMONTHLY standard withholding for Married Filing Jointly with adjusted wages of $1,000?

1 · Page 20IRS Publication 15-T · 2026
SEMIMONTHLY Payroll Period
Table header with Married Filing Jointly and Standard withholding columns
Table excerpt
Wage bracket $995 to $1,010; Married Filing Jointly standard withholding $0

Excerpt from the first of 8 ranked pages. Recorded query

A similar-looking page can send your answer to the wrong source

Search page images 72% cheaper than Cohere Embed v5 Pro

Answer-page ranking
nDCG@10, of 100 ↑
Cohere Embed v5 Pro
Cohere Embed v5 Pro 64.8
SIE Tomoro ColQwen3 4B
SIE Tomoro ColQwen3 4B 64.0
Voyage multimodal-3.5
Voyage multimodal-3.5 61.0
OCR + OpenAI embeddings
OCR + OpenAI embeddings 56.0
Cost per 1,000 pages
indexing, USD ↓
SIE Tomoro ColQwen3 4B
$0.20 SIE Tomoro ColQwen3 4B
Cohere Embed v5 Pro
$0.74 Cohere Embed v5 Pro
Voyage multimodal-3.5
Voyage multimodal-3.5 $1.11
OCR + OpenAI embeddings
OCR + OpenAI embeddings $1.57
Evaluation
Tested
ViDoRe v3: 1,816 questions across 11,624 public document pages
Scored
Human relevance grades; nDCG@10 averaged over six document sets
Prices
SIE Serverless; providers at their scored page size

Encode the page once. Search it by text.

from pathlib import Path
from urllib.request import urlopen
from sie_sdk import SIEClient
​
client = SIEClient(api_key="API keysk-sie-…")
​
model = "modelTomoroAI/tomoro-colqwen3-embed-4b:compact"
query = "queryWhat is the 2026 SEMIMONTHLY standard withholding for Married Filing Jointly with adjusted wages of $1,000?"
pages = [
"irs-p15t-page-13.png", "irs-p15t-page-14.png",
# Copy and Run include all 8 pages.
]
# Pinned image-loading setup omitted; Copy includes it.
​
q = client.encode(
model, [{"text": query}],
output_types=["multivector"], is_query=True,
)[0]["multivector"]
docs = client.encode(
model, [{"images": [image]} for image in images],
output_types=["multivector"], is_query=False,
)
​
print(q)
print(docs)
import { readFile } from 'node:fs/promises';
import { SIEClient } from '@superlinked/sie-sdk';

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

const model = 'TomoroAI/tomoro-colqwen3-embed-4b:compact';
const query = "What is the 2026 SEMIMONTHLY standard withholding for Married Filing Jointly with adjusted wages of $1,000?";
const pages = [
    "irs-p15t-page-13.png", "irs-p15t-page-14.png",
    // Copy and Run include all 8 pages.
];
// Pinned image-loading setup omitted; Copy includes it.

const [q] = await client.encode(
  model, [{ text: query }],
  { outputTypes: ['multivector'], isQuery: true },
);
const docs = await client.encode(
  model, images.map((image) => ({ images: [image] })),
  { outputTypes: ['multivector'], isQuery: false },
);
console.log(q, docs);
page_0=$(curl --fail --silent --show-error --location 'https://huggingface.co/datasets/superlinked/sie-task-evidence/resolve/74f4e0eb2676a95b625783932796edac12040644/task-visual-examples-2026/irs-p15t-page-13.png' | base64 | tr -d '\n')
page_1=$(curl --fail --silent --show-error --location 'https://huggingface.co/datasets/superlinked/sie-task-evidence/resolve/74f4e0eb2676a95b625783932796edac12040644/task-visual-examples-2026/irs-p15t-page-14.png' | base64 | tr -d '\n')
page_2=$(curl --fail --silent --show-error --location 'https://huggingface.co/datasets/superlinked/sie-task-evidence/resolve/74f4e0eb2676a95b625783932796edac12040644/task-visual-examples-2026/irs-p15t-page-15.png' | base64 | tr -d '\n')
page_3=$(curl --fail --silent --show-error --location 'https://huggingface.co/datasets/superlinked/sie-task-evidence/resolve/74f4e0eb2676a95b625783932796edac12040644/task-visual-examples-2026/irs-p15t-page-16.png' | base64 | tr -d '\n')
page_4=$(curl --fail --silent --show-error --location 'https://huggingface.co/datasets/superlinked/sie-task-evidence/resolve/74f4e0eb2676a95b625783932796edac12040644/task-visual-examples-2026/irs-p15t-page-17.png' | base64 | tr -d '\n')
page_5=$(curl --fail --silent --show-error --location 'https://huggingface.co/datasets/superlinked/sie-task-evidence/resolve/74f4e0eb2676a95b625783932796edac12040644/task-visual-examples-2026/irs-p15t-page-18.png' | base64 | tr -d '\n')
page_6=$(curl --fail --silent --show-error --location 'https://huggingface.co/datasets/superlinked/sie-task-evidence/resolve/74f4e0eb2676a95b625783932796edac12040644/task-visual-examples-2026/irs-p15t-page-19.png' | base64 | tr -d '\n')
page_7=$(curl --fail --silent --show-error --location 'https://huggingface.co/datasets/superlinked/sie-task-evidence/resolve/74f4e0eb2676a95b625783932796edac12040644/task-visual-examples-2026/irs-p15t-page-20.png' | base64 | tr -d '\n')
curl https://api.superlinked.com/v1/encode/TomoroAI%2Ftomoro-colqwen3-embed-4b%3Acompact \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"text\":\"What is the 2026 SEMIMONTHLY standard withholding for Married Filing Jointly with adjusted wages of \$1,000?\"}],\"params\":{\"output_types\":[\"multivector\"],\"options\":{\"is_query\":true}}}"

curl https://api.superlinked.com/v1/encode/TomoroAI%2Ftomoro-colqwen3-embed-4b%3Acompact \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"images\":[{\"data\":\"$page_0\",\"format\":\"png\"}]},{\"images\":[{\"data\":\"$page_1\",\"format\":\"png\"}]},{\"images\":[{\"data\":\"$page_2\",\"format\":\"png\"}]},{\"images\":[{\"data\":\"$page_3\",\"format\":\"png\"}]},{\"images\":[{\"data\":\"$page_4\",\"format\":\"png\"}]},{\"images\":[{\"data\":\"$page_5\",\"format\":\"png\"}]},{\"images\":[{\"data\":\"$page_6\",\"format\":\"png\"}]},{\"images\":[{\"data\":\"$page_7\",\"format\":\"png\"}]}],\"params\":{\"output_types\":[\"multivector\"],\"options\":{\"is_query\":false}}}"
Build the "Visual document 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: TomoroAI/tomoro-colqwen3-embed-4b:compact (SIE primitive: /encode). Keep the model id configurable.

Task
- Input: a text query plus one or more document page images.
- Behaviour: return native token vectors for the query and document page images
- Preserve the original page image bytes. Encode the text query with output_types ["multivector"] and is_query true, then all page images in one batch with output_types ["multivector"] and is_query false. Python: client.encode with output_types and is_query. TypeScript: client.encode with outputTypes and isQuery. Return the native token 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 MaxSimTop 5 of 8
1 · Page 2028.177 MaxSim
SEMIMONTHLY Payroll Period
Table header with Married Filing Jointly and Standard withholding columns
Table excerpt
Wage bracket $995 to $1,010; Married Filing Jointly standard withholding $0
  1. 2 IRS Publication 15-T, page 17
    Page 1726.029 MaxSim
  2. 3 IRS Publication 15-T, page 18
    Page 1825.723 MaxSim
  3. 4 IRS Publication 15-T, page 19
    Page 1925.561 MaxSim
  4. 5 IRS Publication 15-T, page 15
    Page 1525.544 MaxSim

Encode returns token vectors. These recorded vectors are ranked here with MaxSim.

Index a million PDF pages for $200

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

import voyageai
from PIL import Image

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

client = SIEClient(api_key="sk-sie-...")
model = "TomoroAI/tomoro-colqwen3-embed-4b:compact"
page = client.encode(
    model, [{"images": [Path("page.png").read_bytes()]}], is_query=False,
)[0]["multivector"]
query = client.encode(model, [{"text": question}], is_query=True)[0]["multivector"]

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.