Close Menu
NCIJ Network NCIJ Network
    What's Hot

    I have faced abuse, assaults and death threats because I’m an MP. It’s making politics a no-go zone | Dawn Butler

    September 16, 2026

    How September’s Pixel Drop changes the way you call and message important contacts

    September 16, 2026

    Knowledgator Releases GLiFormer: A 575M-Parameter Encoder That Hits 91.10 F1 on Nested JSON Extraction Without Generating Tokens

    September 16, 2026
    Facebook X (Twitter) Instagram
    Trending
    • I have faced abuse, assaults and death threats because I’m an MP. It’s making politics a no-go zone | Dawn Butler
    • How September’s Pixel Drop changes the way you call and message important contacts
    • Knowledgator Releases GLiFormer: A 575M-Parameter Encoder That Hits 91.10 F1 on Nested JSON Extraction Without Generating Tokens
    • Iranian hackers use CHOSEN BRICK Windows malware to spy on targets
    • UK FCA Issues Crypto Authorization Guidance Ahead of New Regime
    • Bolivia’s mining law overhaul raises environmental and community concerns
    • The Guardian view on the Houthi advance in Yemen: another vital Middle East artery becomes a battlefield | Editorial
    • US House votes to hold billionaire Epstein associate Leon Black in contempt of Congress
    • About
      • Our Team
      • Editorial Policy
      • Editorial Independence
      • International Support
    • Trust & Standards
      • AI Usage Policy
      • Conflict of Interest Policy
      • Corrections Policy
      • Ethics Policy
      • Fact-Checking Policy
      • Source Protection
    • Get Involved
      • Guide for Sources
      • Support Independent Journalism
    • Legal
      • Cookie Policy
      • Privacy Policy
      • Terms of Use
    Facebook X (Twitter) Instagram
    NCIJ Network NCIJ Network
    Wednesday, September 16
    • Home
    • World
    • Ai
    • Business
    • Politics
    • Health
    • Crypto
    • Science
    • Technology
    • Cybersecurity
    • Defense & Security
    • Economy
    • Energy
    • Europe
    • More
      • Fact Check
      • Investigations
      • Opinion & Analysis
      • Environment
    NCIJ Network NCIJ Network
    Home»Artificial Intelligence

    Knowledgator Releases GLiFormer: A 575M-Parameter Encoder That Hits 91.10 F1 on Nested JSON Extraction Without Generating Tokens

    NCIJ NETWNCIJ NETWORKBy NCIJ NETWNCIJ NETWORKSeptember 16, 2026 Artificial Intelligence No Comments15 Mins Read
    Share
    Facebook Twitter LinkedIn Pinterest Email

    Knowledgator Engineering has released GLiFormer, a schema-conditioned encoder framework for information extraction. One model handles named-entity recognition (NER), text classification, relation extraction, nested JSON structuring, and text embeddings. You pass labels and extraction schemas at inference time. Two checkpoints are on Hugging Face. GLiFormer Base v1 has 264.2M parameters, and GLiFormer Large v1 has 575.6M.

    Deployable today? Yes. Both checkpoints are Apache 2.0, install with pip install gliformer, and run on CPU or GPU.

    The Problem It Targets

    Extraction stacks often chain separate models. One tags entities, another classifies documents, and a third rebuilds records. The research team argues these tasks share one core operation. Encode the source, represent the requested concepts, then score their compatibility.

    LLMs can emit nested JSON, but they generate field names, punctuation, and values token by token. GLiFormer removes output generation from that path.

    How GLiFormer Works

    GLiFormer builds on GLiNER and generalizes its label matching through an ‘anchor.’ An anchor is the object each runtime label gets scored against. It can be a group vector for classification, an entity pair for relations, or a record slot.

    The source is encoded once. Multiple schemas for the same document then run as task-local groups over that shared encoding. Head compute still grows with the number of groups, labels, and anchors.

    For NER, the head scores start, end, and inside evidence for every token and label pair. Independent sigmoid outputs let nested mentions and shared boundaries coexist.

    Structuring runs in 4 stages:

    1. Ground field values as spans taken directly from the source text.
    2. Assign spans to unordered record slots, trained with Hungarian matching.
    3. Predict directed parent-child links, restricted to paths the schema allows.
    4. Assemble nested JSON with a deterministic decoder.

    Values are source spans, so the model cannot invent value text missing from the input. Span selection, record assignment, and hierarchy can still be wrong.

    ‘;
    }).join(”);

    function K(s){ return ‘“‘ + s + ‘”‘; }
    function V(s, c){ return ‘“‘ + s + ‘”‘; }
    var JSONL = [
    ‘{‘,
    ‘ ‘ + K(‘company’) + ‘: [{‘,
    ‘ ‘ + K(‘name’) + ‘: ‘ + V(‘Acme’,’cn’) + ‘,’,
    ‘ ‘ + K(‘departments’) + ‘: [‘,
    ‘ {‘,
    ‘ ‘ + K(‘name’) + ‘: ‘ + V(‘Engineering’,’dn’) + ‘,’,
    ‘ ‘ + K(’employees’) + ‘: [‘,
    ‘ {‘ + K(‘name’) + ‘: ‘ + V(‘Alice’,’en’) + ‘, ‘ + K(‘role’) + ‘: ‘ + V(‘software engineer’,’er’) + ‘},’,
    ‘ {‘ + K(‘name’) + ‘: ‘ + V(‘Bob’,’en’) + ‘, ‘ + K(‘role’) + ‘: ‘ + V(‘designer’,’er’) + ‘}’,
    ‘ ]’,
    ‘ },’,
    ‘ {‘,
    ‘ ‘ + K(‘name’) + ‘: ‘ + V(‘Sales’,’dn’) + ‘,’,
    ‘ ‘ + K(’employees’) + ‘: [{‘ + K(‘name’) + ‘: ‘ + V(‘Carol’,’en’) + ‘, ‘ + K(‘role’) + ‘: ‘ + V(‘account manager’,’er’) + ‘}]’,
    ‘ }’,
    ‘ ]’,
    ‘ }]’,
    ‘}’
    ];
    $(‘#glf-json’).innerHTML = JSONL.map(function(l){ return ‘‘ + l + ‘‘; }).join(”);

    var stepsEl = $(‘#glf-steps’);
    stepsEl.innerHTML = STEPS.map(function(s, i){
    return ‘‘;
    }).join(”) + ‘

    ‘;

    var step = 0, timers = [], playing = false, playT = null;
    function clearTimers(){ timers.forEach(clearTimeout); timers = []; }
    function later(fn, ms){ timers.push(setTimeout(fn, ms)); }

    function spanEl(id){ return $(‘#glf-sent .f[data-id=”‘ + id + ‘”]’); }
    function slotEl(k){ return slotsEl.querySelector(‘.slot[data-k=”‘ + k + ‘”]’); }
    function box(el){
    var S = stage.getBoundingClientRect();
    var rs = el.getClientRects();
    var r = rs.length ? rs[0] : el.getBoundingClientRect();
    return { l:r.left – S.left, t:r.top – S.top, w:r.width, h:r.height };
    }

    function drawWires(anim){
    if (!stage.offsetWidth) return;
    var W = stage.offsetWidth, H = stage.offsetHeight;
    wires.setAttribute(‘width’, W); wires.setAttribute(‘height’, H);
    wires.setAttribute(‘viewBox’, ‘0 0 ‘ + W + ‘ ‘ + H);
    var defs=”” + Object.keys(COL).map(function(k){
    return ‘‘;
    }).join(”) + ‘
    ‘;
    var P = [];
    function curve(x1, y1, x2, y2){ var d = (y2 – y1) * 0.5; return ‘M’ + x1 + ‘ ‘ + y1 + ‘ C’ + x1 + ‘ ‘ + (y1 + d) + ‘ ‘ + x2 + ‘ ‘ + (y2 – d) + ‘ ‘ + x2 + ‘ ‘ + y2; }
    if (step === 3){
    SPANLINKS.forEach(function(L, i){
    var a = box(spanEl(L[0])), b = box(slotEl(L[1]));
    var x2 = b.l + b.w / 2 + (L[2] === ‘er’ ? 14 : (L[1].indexOf(’emp’) === 0 ? -14 : 0));
    P.push({ d:curve(a.l + a.w / 2, a.t + a.h, x2, b.t – 1), c:L[2], delay:i * 90 });
    });
    } else if (step >= 4){
    TREE.forEach(function(L, i){
    var a = box(slotEl(L[0])), b = box(slotEl(L[1]));
    P.push({ d:curve(a.l + a.w / 2, a.t + a.h, b.l + b.w / 2, b.t – 1), c:’h’, delay:i * 140 });
    });
    }
    wires.innerHTML = defs + P.map(function(p){
    return ‘‘;
    }).join(”);
    $$(‘path.w’, wires).forEach(function(p){
    if (!anim || RM){ p.setAttribute(‘marker-end’, p.getAttribute(‘data-m’)); return; }
    var len = p.getTotalLength(), dl = +p.getAttribute(‘data-delay’);
    p.style.strokeDasharray = len; p.style.strokeDashoffset = len;
    p.getBoundingClientRect();
    p.style.transition = ‘stroke-dashoffset .7s ease ‘ + dl + ‘ms’;
    p.style.strokeDashoffset = 0;
    later(function(){ p.setAttribute(‘marker-end’, p.getAttribute(‘data-m’)); p.style.strokeDasharray = ‘none’; }, dl + 720);
    });
    }

    function flip(mutate, animate){
    var els = $$(‘.slot’, slotsEl);
    var first = els.map(function(e){ return e.getBoundingClientRect(); });
    mutate();
    if (!animate || RM) return false;
    els.forEach(function(e, i){
    var f = first[i];
    if (!f.width || getComputedStyle(e).display === ‘none’) return;
    var l = e.getBoundingClientRect();
    e.style.transition = ‘none’;
    e.style.transform = ‘translate(‘ + (f.left – l.left) + ‘px,’ + (f.top – l.top) + ‘px)’;
    });
    requestAnimationFrame(function(){ requestAnimationFrame(function(){
    els.forEach(function(e){ e.style.transition = ‘transform .7s cubic-bezier(.2,.8,.2,1),opacity .4s,border-color .4s’; e.style.transform = ”; });
    }); });
    return true;
    }

    function setStep(n, animate){
    clearTimers();
    var prev = step; step = n;
    wires.innerHTML = ”;
    for (var i = 1; i <= 3; i++) stage.classList.toggle(‘s’ + i, n >= i);
    var needTree = n >= 4, hasTree = stage.classList.contains(‘s4’), flipped = false;
    if (needTree !== hasTree){ flipped = flip(function(){ stage.classList.toggle(‘s4’, needTree); }, animate); }
    stage.classList.toggle(‘s5’, n >= 5);

    $(‘#glf-enc’).textContent = n >= 1 ? ‘DeBERTa encoder: 1 forward pass for text and schema’ : ‘DeBERTa encoder: waiting’;
    if (n === 1 && animate && !RM){ stage.classList.remove(‘scan’); void stage.offsetWidth; stage.classList.add(‘scan’); }

    $$(‘#glf-sent .f’).forEach(function(f, i){ f.style.transitionDelay = (animate && n === 2 && prev < 2) ? (i * 110) + ‘ms’ : ‘0ms’; });
    $$(‘.slot .row’, slotsEl).forEach(function(r, i){ r.style.transitionDelay = (animate && n === 3 && prev < 3) ? (250 + i * 70) + ‘ms’ : ‘0ms’; });

    var jl = $$(‘#glf-json .jl’);
    jl.forEach(function(l, i){
    if (n >= 5){
    if (animate && prev < 5 && !RM){ l.classList.remove(‘on’); later(function(){ l.classList.add(‘on’); }, 120 + i * 70); }
    else l.classList.add(‘on’);
    } else l.classList.remove(‘on’);
    });
    $(‘#glf-jph’).hidden = n >= 5;
    $(‘#glf-note’).textContent = n >= 4 ? ‘Empty anchors are dropped. The 6 filled anchors are arranged by their predicted parent to child links.’ : ‘8 of the 100 record anchors configured in each v1 checkpoint are shown.’;
    $(‘#glf-copied’).textContent = n >= 5 ? ‘9’ : ‘0’;

    if (n === 3) later(function(){ drawWires(animate); }, animate ? 120 : 0);
    if (n >= 4) later(function(){ drawWires(animate && prev < 4); }, flipped ? 760 : 60);

    $$(‘.stp’, stepsEl).forEach(function(b){
    var s = +b.getAttribute(‘data-s’);
    b.classList.toggle(‘done’, s <= n); b.classList.toggle(‘cur’, s === n);
    b.setAttribute(‘aria-current’, s === n ? ‘step’ : ‘false’);
    });
    $(‘#glf-prev’).disabled = n <= 1;
    $(‘#glf-next’).disabled = n >= 5;
    $(‘#glf-cap’).innerHTML = n ? ‘Step ‘ + n + ‘ of 5. ‘ + STEPS[n – 1][1] : ‘Press Play to watch the 5 stages, or pick a stage. The example sentence and schema come from the GLiFormer README.’;
    setTimeout(postH, 50);
    }

    function stopPlay(){ playing = false; clearTimeout(playT); $(‘#glf-play’).textContent = step >= 5 ? ‘Replay’ : ‘Play’; }
    function tick(){
    if (!playing) return;
    if (step >= 5){ stopPlay(); return; }
    setStep(step + 1, true);
    playT = setTimeout(tick, step === 3 ? 2900 : 2500);
    }
    $(‘#glf-play’).addEventListener(‘click’, function(){
    if (playing){ stopPlay(); return; }
    playing = true; this.textContent=”Pause”;
    if (step >= 5) setStep(0, false);
    tick();
    });
    $(‘#glf-next’).addEventListener(‘click’, function(){ stopPlay(); if (step < 5) setStep(step + 1, true); stopPlay(); });
    $(‘#glf-prev’).addEventListener(‘click’, function(){ stopPlay(); if (step > 1) setStep(step – 1, true); stopPlay(); });
    $$(‘.stp’, stepsEl).forEach(function(b){ b.addEventListener(‘click’, function(){ stopPlay(); setStep(+b.getAttribute(‘data-s’), true); stopPlay(); }); });

    var rz;
    window.addEventListener(‘resize’, function(){ clearTimeout(rz); rz = setTimeout(function(){ if (step >= 3) drawWires(false); postH(); }, 120); });
    if (document.fonts && document.fonts.ready) document.fonts.ready.then(function(){ if (step >= 3) drawWires(false); postH(); });

    setStep(0, false);

    /* ———- speed race (paper Table 7) ———- */
    var D = [
    {k:’3′, lab:’Depth 3′, i:456, o:175, g:64.3, gp:52.2, c:374.1, cp:240.0, sg:’48.9′, sc:’8.4′},
    {k:’4′, lab:’Depth 4′, i:540, o:243, g:56.7, gp:54.2, c:488.4, cp:303.1, sg:’76.1′, sc:’8.8′},
    {k:’5′, lab:’Depth 5′, i:771, o:522, g:108.6, gp:108.1, c:709.8, cp:551.7, sg:’83.6′, sc:’12.8′},
    {k:’6′, lab:’Depth 6′, i:947, o:778, g:140.3, gp:127.8, c:890.4, cp:941.7, sg:’95.8′, sc:’15.1′},
    {k:’all’, lab:’All 40 documents’, i:678, o:429, g:92.5, gp:69.0, c:615.7, cp:546.9, sg:’81.0′, sc:’12.2′}
    ];
    var curD = D[3], raf = null;
    var depthsEl = $(‘#glf-depths’);
    depthsEl.innerHTML = D.map(function(d, i){ return ‘‘; }).join(”);
    $$(‘.pill’, depthsEl).forEach(function(b){
    b.addEventListener(‘click’, function(){
    curD = D[+b.getAttribute(‘data-i’)];
    $$(‘.pill’, depthsEl).forEach(function(x){ x.setAttribute(‘aria-pressed’, x === b ? ‘true’ : ‘false’); });
    runRace();
    });
    });
    $(‘#glf-run’).addEventListener(‘click’, runRace);
    function fmt(n){ return n.toLocaleString(‘en-US’); }
    function runRace(){
    var d = curD;
    var pre = d.i / 2000 * 1000, T = pre + d.o / 60 * 1000;
    $(‘#ro-in’).textContent = fmt(d.i);
    $(‘#ro-out’).textContent = fmt(d.o);
    $(‘#ro-gp’).textContent = d.gp.toFixed(1) + ‘ ms’;
    $(‘#ro-cp’).textContent = d.cp.toFixed(1) + ‘ ms’;
    $(‘#glf-sum’).innerHTML = ‘Estimated LLM time: ‘ + (T / 1000).toFixed(2) + ‘ s (‘ + (pre / 1000).toFixed(2) + ‘ s prefill). The paper reports that as ‘ + d.sg + ‘× the GLiFormer-base GPU mean and ‘ + d.sc + ‘× the CPU mean.’;
    var gpu = $(‘#lane-gpu’), cpu = $(‘#lane-cpu’), llm = $(‘#lane-llm’);
    var fg = gpu.querySelector(‘.fill’), fc = cpu.querySelector(‘.fill’), fp = llm.querySelector(‘.f-pre’), fn = llm.querySelector(‘.f-gen’);
    var tg = gpu.querySelector(‘.t’), tc = cpu.querySelector(‘.t’), tl = llm.querySelector(‘.t’);
    var dur = RM ? 0 : 4200, t0 = null;
    cancelAnimationFrame(raf);
    function frame(now){
    if (t0 === null) t0 = now;
    var p = dur ? Math.min((now – t0) / dur, 1) : 1, t = p * T;
    function w(v){ return (Math.min(t, v) / T * 100) + ‘%’; }
    fg.style.width = w(d.g); fg.style.minWidth = t >= d.g ? ‘3px’ : ‘0’;
    fc.style.width = w(d.c);
    fp.style.width = w(pre);
    fn.style.left = (pre / T * 100) + ‘%’;
    fn.style.width = (Math.max(0, t – pre) / T * 100) + ‘%’;
    gpu.classList.toggle(‘done’, t >= d.g); cpu.classList.toggle(‘done’, t >= d.c); llm.classList.toggle(‘done’, p >= 1);
    tg.textContent = (t >= d.g ? d.g.toFixed(1) : t.toFixed(0)) + ‘ ms’;
    tc.textContent = (t >= d.c ? d.c.toFixed(1) : t.toFixed(0)) + ‘ ms’;
    tl.textContent = (t / 1000).toFixed(2) + ‘ s’;
    $(‘#glf-tk’).textContent = p >= 1 ? d.o : Math.min(d.o, Math.floor(Math.max(0, t – pre) / 1000 * 60));
    $(‘#glf-clock’).textContent = (t / 1000).toFixed(2) + ‘ s’;
    if (p < 1) raf = requestAnimationFrame(frame);
    }
    raf = requestAnimationFrame(frame);
    }

    /* ———- scores (paper Tables 3 to 6) ———- */
    var TASKS = [
    {lab:’Nested JSON’, note:’Multilevel structuring on 500 examples, order-free and boundary-tolerant JSON F1. This is not exact JSON match. GPT-5.6-luna leads overall, but GLiFormer-large scores higher at depths 4, 5, and 6+ in Table 6 of the paper.’, rows:[
    [‘GPT-5.6-luna’, null, 91.96], [‘GLiFormer-large’, 575.6, 91.10, 1], [‘GLiFormer-base’, 264.2, 87.20, 1], [‘GPT-5-mini’, null, 82.56], [‘Qwen3.5 9B’, 9653.1, 78.5]]},
    {lab:’Classification’, note:’Mean macro-F1 across 13 datasets (79,828 examples). Larger LLMs still lead this aggregate.’, rows:[
    [‘GPT-5-mini’, null, 79.79], [‘Gemma-4-31B-IT’, 31000, 79.69], [‘Gemma4-12B’, 11959.7, 77.8], [‘GPT-OSS-120B’, 117000, 77.76], [‘GLiFormer-large’, 575.6, 75.03, 1], [‘GLiFormer-base’, 264.2, 72.36, 1], [‘GLiClass Multilang ultra’, 1708.2, 71.01], [‘GLiNER2 large v1’, 486.4, 66.19], [‘GLiNER2.5′, 193.6, 64.89]]},
    {lab:’CrossNER’, note:’Mean strict entity F1 across the 5 CrossNER domains (2,505 examples). Base slightly edges Large here.’, rows:[
    [‘Gemma-4-31B-IT’, 31000, 70.74], [‘GPT-OSS-120B’, 117000, 70.24], [‘GPT-5-mini’, null, 69.97], [‘GLiNER Multitask Large v0.5’, 440.2, 67.97], [‘NuNER Zero-span’, 448.9, 66.82], [‘GLiFormer-base’, 264.2, 65.10, 1], [‘GLiFormer-large’, 575.6, 64.35, 1], [‘GLiNER2 Base’, 208.5, 59.06]]},
    {lab:’Relations’, note:’Mean micro-F1 over CoNLL04, DocRED, FewRel, and CrossRE. GLiFormer uses predicted entities; Base and Large ran on different-sized subsets, and Large uses CoNLL04 zero-shot. GLiFormer trails the strongest baselines on this task.’, rows:[
    [‘GLiNER-Relex’, null, 25.6], [‘Gemma-4-31B-IT’, 31000, 25.08], [‘GPT-OSS-120B’, 117000, 23.99], [‘GPT-5-mini’, null, 22.1], [‘GLiFormer-large’, 575.6, 21.33, 1], [‘GLiFormer-base’, 264.2, 18.94, 1], [‘GLiNER2’, null, 17.8]]}
    ];
    var curTask = 0;
    var tasksEl = $(‘#glf-tasks’);
    tasksEl.innerHTML = TASKS.map(function(t, i){ return ‘‘; }).join(”);
    $$(‘.pill’, tasksEl).forEach(function(b){
    b.addEventListener(‘click’, function(){
    curTask = +b.getAttribute(‘data-i’);
    $$(‘.pill’, tasksEl).forEach(function(x){ x.setAttribute(‘aria-pressed’, x === b ? ‘true’ : ‘false’); });
    renderScores(curTask);
    });
    });
    function params(m){
    if (m === null) return ‘parameter count not listed’;
    return m >= 1000 ? (+(m / 1000).toFixed(2)) + ‘B parameters’ : m + ‘M parameters’;
    }
    function renderScores(ix){
    var t = TASKS[ix], max = Math.max.apply(null, t.rows.map(function(r){ return r[2]; }));
    var list = $(‘#glf-scores’);
    list.innerHTML = t.rows.map(function(r){
    return ‘

    ‘ + r[0] + ‘‘ + params(r[1]) + ‘

    ‘ + r[2].toFixed(2) + ‘

    ‘;
    }).join(”);
    $(‘#glf-scnote’).textContent = t.note + ‘ All figures are reported by Knowledgator in the GLiFormer paper.’;
    var fills = $$(‘.fill’, list);
    requestAnimationFrame(function(){ requestAnimationFrame(function(){ fills.forEach(function(f){ f.style.width = f.getAttribute(‘data-w’) + ‘%’; }); }); });
    postH();
    }

    /* ———- code snippets (from the v1 model cards) ———- */
    var LOAD = [
    ‘import torch’,
    ‘from gliformer import GLiFormer’,
    ”,
    ‘model = GLiFormer.from_pretrained(‘,
    ‘ “knowledgator/gliformer-large-v1”,’,
    ‘ load_tokenizer=True,’,
    ‘)’,
    ‘model = model.to(“cuda” if torch.cuda.is_available() else “cpu”).eval()’,
    ”
    ].join(‘n’);
    var SNIPS = [
    {lab:’Install’, note:’Requires Python 3.10 or newer. Optional CUDA attention kernels install from source with pip install -e “.[flash]”. CPU inference uses eager attention.’, code:[
    ‘pip install gliformer -U’,
    ”,
    ‘# or from source’,
    ‘git clone https://github.com/Knowledgator/GLiFormer.git’,
    ‘cd GLiFormer’,
    ‘pip install -e .’].join(‘n’)},
    {lab:’Entities’, note:’Each entity returns text, label, start, end, and score. Offsets are character positions with an exclusive end.’, code:LOAD + [
    ‘entities = model.predict_entities(‘,
    ‘ “Alice works at Acme in London.”,’,
    ‘ [“person”, “organization”, “location”],’,
    ‘ threshold=0.5,’,
    ‘)’,
    ‘for entity in entities:’,
    ‘ print(entity[“text”], entity[“label”], entity[“score”])’].join(‘n’)},
    {lab:’Nested JSON’, note:’Pydantic validation checks the output schema, not factual correctness.’, code:LOAD + [
    ‘from pydantic import BaseModel’,
    ”,
    ‘class Employee(BaseModel):’,
    ‘ name: str’,
    ‘ role: str’,
    ”,
    ‘class Department(BaseModel):’,
    ‘ name: str’,
    ‘ employees: list[Employee]’,
    ”,
    ‘class Company(BaseModel):’,
    ‘ name: str’,
    ‘ departments: list[Department]’,
    ”,
    ‘records = model.structure(‘,
    ‘ “At Acme, Engineering includes Alice, a software engineer, and Bob, “‘,
    ‘ “a designer. Sales includes Carol, an account manager.”,’,
    ‘ {“company”: Company},’,
    ‘ validate_output=True,’,
    ‘)’,
    ‘print(records)’].join(‘n’)},
    {lab:’Many tasks, 1 call’, note:’inference returns a dictionary keyed by task, with one result per input text.’, code:LOAD + [
    ‘results = model.inference(‘,
    ‘ “Alice joined Acme as a software engineer.”,’,
    ‘ entities=[“person”, “organization”],’,
    ‘ classes=[“business”, “sports”, “technology”],’,
    ‘ structures={“employee”: [“name”, “company”]},’,
    ‘)’,
    ‘print(results[“ner”][0])’,
    ‘print(results[“classification”][0])’,
    ‘print(results[“structuring”][0])’].join(‘n’)},
    {lab:’Relations’, note:’The v1 checkpoints have a joint relation head only. predict_relations needs an open relation head, so use joint_relations.’, code:LOAD + [
    ‘results = model.inference(‘,
    ‘ “Alice works at Acme.”,’,
    ‘ joint_relations={‘,
    ‘ “employment”: {‘,
    ‘ “entities”: [“person”, “organization”],’,
    ‘ “relations”: [“works_at”],’,
    ‘ }’,
    ‘ },’,
    ‘ threshold=0.5,’,
    ‘)’,
    ‘for relation in results[“joint_relex”][0]:’,
    ‘ print(relation[“head”][“text”], relation[“relation”], relation[“tail”][“text”])’].join(‘n’)}
    ];
    var snipsEl = $(‘#glf-snips’), curSnip = 0;
    snipsEl.innerHTML = SNIPS.map(function(s, i){ return ‘‘; }).join(”);
    function showSnip(i){
    curSnip = i;
    $(‘#glf-code’).textContent = SNIPS[i].code;
    $(‘#glf-codenote’).textContent = SNIPS[i].note;
    $(‘#glf-copy’).textContent=”Copy”;
    postH();
    }
    $$(‘.pill’, snipsEl).forEach(function(b){
    b.addEventListener(‘click’, function(){
    $$(‘.pill’, snipsEl).forEach(function(x){ x.setAttribute(‘aria-pressed’, x === b ? ‘true’ : ‘false’); });
    showSnip(+b.getAttribute(‘data-i’));
    });
    });
    $(‘#glf-copy’).addEventListener(‘click’, function(){
    var txt = SNIPS[curSnip].code, btn = this;
    function done(){ btn.textContent=”Copied”; setTimeout(function(){ btn.textContent=”Copy”; }, 1600); }
    function fallback(){
    var ta = document.createElement(‘textarea’); ta.value = txt; ta.style.position = ‘fixed’; ta.style.opacity = ‘0’;
    document.body.appendChild(ta); ta.select();
    try { document.execCommand(‘copy’); done(); } catch (e) { btn.textContent=”Select and copy”; }
    document.body.removeChild(ta);
    }
    if (navigator.clipboard && navigator.clipboard.writeText){ navigator.clipboard.writeText(txt).then(done, fallback); } else fallback();
    });
    showSnip(0);
    renderScores(0);
    })();

    “>

    Both v1 checkpoints use the gliformer-layout model type with 5 heads: NER, classification, joint relations, multilevel structuring, and embeddings. Each configures a 12-word maximum span width and 100 record anchors. Full specs sit in the pretrained models docs.

    GLiFormer-base starts from a DeBERTa backbone further pretrained on 100 billion tokens. The paper documents 1,357,671 examples for broad multitask training and 372,090 for task-focused post-training.

    All scores below are reported by Knowledgator.

    On combined NER and classification aggregates, the paper reports Large beats Gemma-4-E4B with about 14× fewer parameters.

    Knowledgator timed GLiFormer-base on 40 structuring documents at batch size 1. Median latency was 69 ms on an NVIDIA RTX PRO 6000 Blackwell GPU in FP16. On an 8-thread AMD EPYC 9B45 CPU in FP32, it was 547 ms.

    The key claim ‘up to 95.8× faster’ figure is an analytical estimate, not a measured LLM run. It assumes prefill at 2,000 input tokens per second and generation at 60 output tokens per second. It excludes queueing, network delay, and hidden reasoning, and assumes nothing about accuracy parity.

    Nested Pydantic schemas work for multilevel records. One inference call can also run entities, classes, and structures together. Use joint_relations for relations, since the v1 checkpoints lack an open relation head.

    Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.? Connect with us

    575MParameter Encoder Extraction Generating GLiFormer hits JSON Knowledgator Nested Releases tokens
    NCIJ NETWNCIJ NETWORK
    • Website

    Keep Reading

    How workers are unlocking new ways of working

    Microsoft AI CEO criticises Anthropic over model ‘rights’

    Southeast Asia’s hydrocarbon push: Valeura hits oil pay, eyes new satellite development

    Nums AI Releases Causilo: A Tabular Foundation Model That Tops TabArena Among Single Models

    ChatGPT pioneer launches Jev model for programmatic logic

    Prior Labs Releases TabPFN-3.5: A Tabular Foundation Model That Beats the Winning Otto Kaggle Solution With Default Settings

    Add A Comment
    Leave A Reply Cancel Reply

    Editors Picks

    I have faced abuse, assaults and death threats because I’m an MP. It’s making politics a no-go zone | Dawn Butler

    September 16, 2026

    How September’s Pixel Drop changes the way you call and message important contacts

    September 16, 2026

    Knowledgator Releases GLiFormer: A 575M-Parameter Encoder That Hits 91.10 F1 on Nested JSON Extraction Without Generating Tokens

    September 16, 2026

    Iranian hackers use CHOSEN BRICK Windows malware to spy on targets

    September 16, 2026
    Latest Posts

    What is Trump Media’s Truth API and why is it controversial?

    August 4, 2026

    How ProPublica Tested Hundreds of Omaha Homes for Lead — ProPublica

    August 4, 2026

    Golar LNG raises $600 million loan with FLNG business expansion in mind

    August 4, 2026

    Subscribe to News

    Get the latest sports news from NewsSite about world, sports and politics.

    NCIJ Network is an independent digital news platform delivering trusted investigative journalism, European and global news, in-depth analysis, and fact-based reporting with accuracy, transparency, and integrity.

    Facebook X (Twitter) Instagram Pinterest YouTube

    I have faced abuse, assaults and death threats because I’m an MP. It’s making politics a no-go zone | Dawn Butler

    September 16, 2026

    How September’s Pixel Drop changes the way you call and message important contacts

    September 16, 2026

    Knowledgator Releases GLiFormer: A 575M-Parameter Encoder That Hits 91.10 F1 on Nested JSON Extraction Without Generating Tokens

    September 16, 2026

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    Type above and press Enter to search. Press Esc to cancel.