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

Build knowledge graphs on par with Claude Sonnet 5.5, 99% cheaper

Turn documents into the entities they mention and the relations between them, ready for your graph database, search or agent memory. SIE, an open-source inference engine, serves GLiNER relex Large, an open extraction model that takes your own entity and relation types in one call.

SIE GLiNER relex Large

Every edge correct

Wikipedia: David Draiman (CC BY-SA)

  1. David Michael Draiman (born March 13, 1973) is an American singer who is best known as the lead vocalist of the band Disturbed as well as the band Device. …

    • David Michael Draiman date of birth March 13, 1973
    • David Michael Draiman country of citizenship American
    • David Michael Draiman member of Disturbed

Claude Sonnet 5.5 bills $8,853 per 1M articles, GPT-⁠6.1 Sol $6,147

Claude Sonnet 5.5 (adaptive thinking)

No relations for 9 of 337 articles
Tokens billed
663,137 in and 165,742 out for 337 articles
List price
$2.00 in and $10.00 out per 1M tokens
Bill for 1M articles
$8,853

GPT-6.1 Sol (low reasoning)

No relations for 7 of 337 articles
Tokens billed
399,490 in and 127,272 out for 337 articles
List price
$2.00 in and $10.00 out per 1M tokens
Bill for 1M articles
$6,147

On par with Claude Sonnet 5.5 99% cheaper, and 89% cheaper than Claude Haiku 5.5

Relations right
Claude Sonnet 5.5 = 100 ↑
SIE GLiNER relex Large
SIE GLiNER relex Large 110
GPT-6.1 Sol
GPT-6.1 Sol 103
Claude Sonnet 5.5
Claude Sonnet 5.5 100
Claude Haiku 5.5
Claude Haiku 5.5 92
Claude Haiku 5.5 (thinking off)
Claude Haiku 5.5 (thinking off) 88
GPT-6 Luna
GPT-6 Luna 84
Cost per 1M articles
USD ↓
SIE GLiNER relex Large
$48 SIE GLiNER relex Large
Claude Haiku 5.5 (thinking off)
$458 Claude Haiku 5.5 (thinking off)
Claude Haiku 5.5
$937 Claude Haiku 5.5
GPT-6 Luna
$1,195 GPT-6 Luna
GPT-6.1 Sol
GPT-6.1 Sol $6,147
Claude Sonnet 5.5
Claude Sonnet 5.5 $8,853
Evaluation
Tested
337 Wikipedia articles from Re-DocRED with human-annotated relations
Scored
Relation and both entities must match; mean article F1, with Claude Sonnet 5.5 = 100
Prices
Provider list prices on recorded tokens; SIE at its Serverless rate

Name your entity and relation types, get the relations back

from sie_sdk import SIEClient
​
client = SIEClient(api_key="API keysk-sie-…")
​
text = "textDavid Michael Draiman (born March 13, 1973) is an American singer who is best known as the lead vocalist of the band···named "The Vengeful One". They produced it over a year before, and along with it announced a new album, Immortalized."
result = client.extract(
"modelknowledgator/gliner-relex-large-v1.0",
{"text": text},
labels=[
"person", "organization", "location", "date",
"work, product or event",
],
options={
"relation_labels": [
"country of citizenship", "notable work",
"part of", "performer", "publication date",
"participant of", "member of",
"country of origin", "date of birth",
"cast member", "inception", "record label",
],
"threshold": 0.3,
"relation_threshold": 0.7,
},
)
for relation in result["relations"]:
print(relation["head"], relation["relation"], relation["tail"])
import { SIEClient } from '@superlinked/sie-sdk';

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

const text = "David Michael Draiman (born March 13, 1973) is an American singer who is best known as the lead vocalist of the band···named \"The Vengeful One\". They produced it over a year before, and along with it announced a new album, Immortalized.";
const result = await client.extract(
  'knowledgator/gliner-relex-large-v1.0',
  { text },
  {
    labels: [
      "person", "organization", "location", "date",
      "work, product or event",
    ],
    adapterOptions: {
      relation_labels: [
        "country of citizenship", "notable work",
        "part of", "performer", "publication date",
        "participant of", "member of",
        "country of origin", "date of birth",
        "cast member", "inception", "record label",
      ],
      threshold: 0.3,
      relation_threshold: 0.7,
    },
  },
);
for (const relation of result.relations) {
  console.log(relation.head, relation.relation, relation.tail);
}
curl https://api.superlinked.com/v1/extract/knowledgator%2Fgliner-relex-large-v1.0 \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"text\":\"David Michael Draiman (born March 13, 1973) is an American singer who is best known as the lead vocalist of the band···\\\"The Vengeful One\\\". They produced it over a year before, and along with it announced a new album, Immortalized.\"}],\"params\":{\"labels\":[\"person\",\"organization\",\"location\",\"date\",\"work, product or event\"],\"options\":{\"relation_labels\":[\"country of citizenship\",\"notable work\",\"part of\",\"performer\",\"publication date\",\"participant of\",\"member of\",\"country of origin\",\"date of birth\",\"cast member\",\"inception\",\"record label\"],\"threshold\":0.3,\"relation_threshold\":0.7}}}"
Build the "Knowledge graph" 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: knowledgator/gliner-relex-large-v1.0 (SIE primitive: /extract). Keep the model id configurable.

Task
- Input: a block of text.
- Behaviour: return the relations the text states between entities of the named types, each as its head, relation type and tail
- Send the one /extract call shown in the SDK snippet: the entity types as labels and the relation types in options.relation_labels, with the thresholds it names. Read each relation's head, relation and tail from the returned item's relations.

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

relations · 9

  • David Michael Draiman date of birth March 13, 1973 1.00
  • David Michael Draiman country of citizenship American 0.98
  • The Vengeful One performer Disturbed 0.89
  • Immortalized performer Disturbed 0.88
  • Down with the Sickness performer Disturbed 0.88
  • Inside the Fire performer Disturbed 0.88
  • Stupify performer Disturbed 0.86
  • Indestructible performer Disturbed 0.86
  • David Michael Draiman member of Disturbed 0.82

Build your graph 99% cheaper than Claude Sonnet 5.5

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 json
from anthropic import Anthropic

client = Anthropic()
reply = client.messages.create(
    model="claude-sonnet-5-5",
    system=graph_prompt,
    messages=[{"role": "user", "content": document}],
    output_config={"format": {
        "type": "json_schema", "schema": graph_schema}},
    max_tokens=32000,
)
relations = json.loads(reply.content[0].text)["relations"]
import json
from openai import OpenAI

client = OpenAI()
reply = client.chat.completions.create(
    model="gpt-6.1-sol",
    messages=[
        {"role": "system", "content": graph_prompt},
        {"role": "user", "content": document},
    ],
    response_format={"type": "json_schema", "json_schema": {
        "name": "graph", "schema": graph_schema, "strict": True}},
)
relations = json.loads(reply.choices[0].message.content)["relations"]
SIE
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")
relations = client.extract(
    "knowledgator/gliner-relex-large-v1.0",
    {"text": document},
    labels=entity_types,
    options={
        "relation_labels": relation_types,
        "threshold": 0.3,
        "relation_threshold": 0.7,
    },
)["relations"]
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")
relations = client.extract(
    "knowledgator/gliner-relex-large-v1.0",
    {"text": document},
    labels=entity_types,
    options={
        "relation_labels": relation_types,
        "threshold": 0.3,
        "relation_threshold": 0.7,
    },
)["relations"]

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.