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
See the comparison on Search$0.06
Price per 1M tokens
Call it
from sie_sdk import SIEClientclient = 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. Edit the code and run it live Sign up to run this example.
Get started no credit card required
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.
(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.
(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.
Top match at 0.67 · 3 candidates ranked
Next to the other embedding models
| Model | 8 retrieval sets, mean nDCG@10 | Time per request | Serverless price | Size |
|---|---|---|---|---|
| Qwen3 Embedding 4B Qwen | 0.599 | Not timed | $0.06 per 1M tokens | 4.0B |
| 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 |
Measured on public datasets
| Dataset | nDCG@10 |
|---|---|
| Stack | 0.934 |
| Legal | 0.815 |
| Sci | 0.781 |
| Nano | 0.688 |
| Fi | 0.622 |
| CQADupstack | 0.526 |
| NFCorpus | 0.412 |
| Cos | 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
- Sources
- Task page runs and their inputs
Run Qwen3 Embedding 4B on Serverless or in your own cloud
SIE Serverless
We host the models; you call one API.
- No idle GPUs, pay for what you use
- Fits your stack: SDK, API, CLI, MCP
- Self-host the same open-source engine
- SOC 2 Type 2, US or EU data residency
- Create an account to try Serverless
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