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

Qwen3 Embedding 4B

An open embedding model that puts the passage that answers a question first. Qwen/Qwen3-Embedding-4B

  • Accuracy

    0.599

    8 retrieval sets, mean nDCG@10

  • Time per request

    Not timed one request at a time

  • Serverless price

    $0.06

    per 1M tokens

  • Better search than OpenAI text‑embedding‑3‑large, 53% cheaper

    54.6%

    Right result first · 8 public benchmarks

    $0.06

    Price per 1M tokens

    See the comparison on Search

Call it

from sie_sdk import SIEClient
​
client = SIEClient(api_key="sk-sie-…")
​
query = "queryOur clinic's breach only affected 200 patients, when do we have to notify HHS about it?"
documents = [
"document 1(b) Implementation specifications: Breaches involving 500 or more individuals. For breaches of unsecured protected···section contemporaneously with the notice required by § 164.404(a) and in the manner specified on the HHS Web site.",
"document 2(c) Implementation specifications: Breaches involving less than 500 individuals. For breaches of unsecured protected···this section for breaches discovered during the preceding calendar year, in the manner specified on the HHS web site.",
"document 3(a) Standard. For a breach of unsecured protected health information involving more than 500 residents of a State or jurisdiction, a covered entity shall, following the discovery of the breach as provided in § 164.404(a)(2), notify prominent media outlets serving the State or jurisdiction.",
]
​
model = "modelQwen/Qwen3-Embedding-4B"
q = client.encode(model, [{"text": query}], is_query=True)[0]["dense"]
docs = client.encode(model, [{"text": d} for d in documents])
print(q)
print([v["dense"] for v in docs])
import { SIEClient } from '@superlinked/sie-sdk';

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

const query = "Our clinic's breach only affected 200 patients, when do we have to notify HHS about it?";
const documents = [
  "(b) Implementation specifications: Breaches involving 500 or more individuals. For breaches of unsecured protected···section contemporaneously with the notice required by § 164.404(a) and in the manner specified on the HHS Web site.",
  "(c) Implementation specifications: Breaches involving less than 500 individuals. For breaches of unsecured protected···this section for breaches discovered during the preceding calendar year, in the manner specified on the HHS web site.",
  "(a) Standard. For a breach of unsecured protected health information involving more than 500 residents of a State or jurisdiction, a covered entity shall, following the discovery of the breach as provided in § 164.404(a)(2), notify prominent media outlets serving the State or jurisdiction.",
];

const model = 'Qwen/Qwen3-Embedding-4B';
const [queryVector] = await client.encode(model, [{ text: query }], { outputTypes: ['dense'], isQuery: true });
const documentVectors = await client.encode(model, documents.map((text) => ({ text })), { outputTypes: ['dense'] });
console.log(queryVector?.dense);
console.log(documentVectors.map((vector) => vector.dense));
# Encode the query with is_query, then the candidate documents.
curl https://api.superlinked.com/v1/encode/Qwen%2FQwen3-Embedding-4B \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"text\":\"Our clinic's breach only affected 200 patients, when do we have to notify HHS about it?\"}],\"params\":{\"output_types\":[\"dense\"],\"options\":{\"is_query\":true}}}"

curl https://api.superlinked.com/v1/encode/Qwen%2FQwen3-Embedding-4B \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"text\":\"(b) Implementation specifications: Breaches involving 500 or more individuals. For breaches of unsecured protected···section contemporaneously with the notice required by § 164.404(a) and in the manner specified on the HHS Web site.\"},{\"text\":\"(c) Implementation specifications: Breaches involving less than 500 individuals. For breaches of unsecured protected···this section for breaches discovered during the preceding calendar year, in the manner specified on the HHS web site.\"},{\"text\":\"(a) Standard. For a breach of unsecured protected health information involving more than 500 residents of a State or jurisdiction, a covered entity shall, following the discovery of the breach as provided in § 164.404(a)(2), notify prominent media outlets serving the State or jurisdiction.\"}],\"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: Qwen/Qwen3-Embedding-4B (SIE primitive: /encode). Keep the model id configurable.

Task
- Input: a query string plus a list of candidate documents.
- Behaviour: return the native dense vectors for the query and candidate documents
- Send two POST /v1/encode requests: one item {text: query} with params {output_types: ["dense"], options: {is_query: true}}, then all candidate documents with params {output_types: ["dense"]}. Return the decoded dense vectors in input order. In Python, use encode(..., is_query=True) only for the query call and read each returned ["dense"] array. In TypeScript, use client.encode with outputTypes: ["dense"] for both calls and isQuery: true only for the query, then read each returned .dense array. Native output is vectors; the page computes cosine ranking from its recorded vectors. Keep ranking logic outside the API example. Do not issue one request 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.
Output
(c) Implementation specifications: Breaches involving less than 500 individuals. For breaches of unsecured protected health information involving less than 500 individuals, a covered entity shall maintain a log or other documentation of such breaches and, not later than 60 days after the end of each calendar year, provide the notification required by paragraph (a) of this section for breaches discovered during the preceding calendar year, in the manner specified on the HHS web site.
0.67
(b) Implementation specifications: Breaches involving 500 or more individuals. For breaches of unsecured protected health information involving 500 or more individuals, a covered entity shall, except as provided in § 164.412, provide the notification required by paragraph (a) of this section contemporaneously with the notice required by § 164.404(a) and in the manner specified on the HHS Web site.
0.67
(a) Standard. For a breach of unsecured protected health information involving more than 500 residents of a State or jurisdiction, a covered entity shall, following the discovery of the breach as provided in § 164.404(a)(2), notify prominent media outlets serving the State or jurisdiction.
0.62
Top match at 0.67 · 3 candidates ranked

Next to the other embedding models

Next to the other embedding models
Model 8 retrieval sets, mean nDCG@10 Time per request Serverless price Size
Qwen3 Embedding 8B Qwen 0.620 Not timed Run in your cloud 7.6B
SFR Embedding 2 R Salesforce 0.586 Not timed Run in your cloud 7.1B
stella en 1.5B v5 NovaSearch 0.583 Not timed Run in your cloud 1.5B
Linq Embed Mistral Linq-AI-Research 0.576 Not timed Run in your cloud 7.1B
All 34 embedding models

Measured on public datasets

Measured on public datasets
Dataset nDCG@10
StackOverflowQA 0.934
LegalBenchConsumerContractsQA 0.815
SciFact 0.781
NanoFiQA2018Retrieval 0.688
FiQA2018 0.622
CQADupstackPhysicsRetrieval 0.526
NFCorpus 0.412
CosQA 0.401
SCIDOCS 0.299

Facts

Size
4.0B parameters
License
Apache-2.0
Reads
Text, up to 32,768 tokens
Endpoint
encode
Evaluation
Accuracy
Run on SIE against the public dataset named in each figure
8 retrieval sets
The mean over NFCorpus, FiQA2018, SciFact, SCIDOCS, CQADupstackPhysicsRetrieval, CosQA, StackOverflowQA and LegalBenchConsumerContractsQA
Prices
Serverless list prices, effective 10 Nov 2026

Run Qwen3 Embedding 4B on Serverless or in your own cloud

SIE Cluster

Kubernetes in your own 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.

SIE Local

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 -e SIE_BUNDLE=sglang-embedding ghcr.io/superlinked/sie-server:latest-cuda12-sglang

Talk to 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.