Alleen persoonsgegevens,
zwart.
Noir is een klein LLM dat alleen maskeert: het krijgt een document en de opdracht wat er gemaskeerd moet worden, en geeft een lijst terug van de plekken die daaronder vallen. Zo verwerkt u documenten voordat ze naar buiten gaan, op alleen een interne CPU. Als u scrolt, trekt er een lichtstreep over het document.
JA担当の山田太郎です。お電話は03-0000-1234までお願いします。
ENPlease call Emily Carter at (555) 010-4477 before March 3.
DEFrau Anna Becker wohnt in der Lindenstraße 12, 10115 Berlin.
HRIvan Horvat (42 godine) javio je da je na bolovanju.
* Voorbeeldteksten, namen en nummers zijn allemaal verzonnen. De beweging hierboven is een afgespeeld voorbeeld.
Geef opdracht in
gewone woorden.
‘Persoonsgegevens’, ‘contactgegevens’, ‘maar niet de leeftijd’. Geef de opdracht zoals u het gewoon zou zeggen, en in hetzelfde document verandert wat er gemaskeerd wordt. Druk op een knop of kijk gewoon even mee.
Onderwerp: Voorbeeld Handel – bevestiging van uw contract
Voorbeeld Handel, afdeling Algemene Zaken, t.a.v. Jan Voorbeeld
Goedendag, u ontvangt dit bericht van Sanne Jansen van Kattendata bv.
Op vrijdag 20 november bespreek ik graag de verlenging van uw contract. Het maandbedrag blijft € 480.
Ik begreep dat uw collega Pieter Smit (42 jaar) vandaag afwezig is vanwege rugpijn.
U bereikt ons via 020-0001234 of [email protected].
Verzendadres: Voorbeeldstraat 12, 5e verdieping, 1234 AB Voorbeeldstad
* Dit vak is een voorbeeld van de werking en speelt vaste antwoorden af (er draait geen echt model). Alle voorbeeldteksten zijn verzonnen.
Maskeert minder onnodig
dan 120B.
Met 100 Japanse en 100 Engelse documenten hebben we Noir en gpt-oss-120b (117 miljard parameters) dezelfde opdracht gegeven en vergeleken. De vellen bovenaan zijn voorbeelden van elk soort fout. De staven eronder laten zien hoe vaak die fout voorkwam: hoe korter, hoe beter.
* Gemeten in een test die we zelf hebben gemaakt (november 2026, Q4_K_M, samen met algemene regels voor e-mail, telefoon, URL en datum). De precieze voorwaarden staan onderaan de pagina.
Hoe vager de opdracht,
hoe groter het verschil.
Op de weegschaal vergelijken we hoeveel er gemist wordt. De kant die meer mist, zakt. Bij opdrachten die de soorten duidelijk opsommen is het gelijkspel; bij vage opdrachten als ‘persoonsgegevens’, of met een ‘maar niet …’ erbij, loopt het verschil op.
Noir0%
gpt-oss-120b0%
* Japans en Engels samen. Percentage gemist (%, 1 vakje = 1%). Verdeling van de opdrachten: 69 documenten met opgesomde soorten, 104 met een vage opdracht, 27 met een uitzondering.
4 talen,
elk met eigen cijfers.
Per taal is er een eigen Noir (Japans en Engels delen er één). Geel is een beter cijfer dan gpt-oss-120b.
- In het Kroatisch en Duits mist Noir vrijwel evenveel als gpt-oss-120b. Wat gemist werd, waren vooral data en tijden in Europese notatie, zoals ‘02.11.2026’ en ‘14:12 Uhr’.
- Met twee extra regels die data en tijden in deze vorm oppikken, daalt het gemiste aandeel volgens onze berekening van 31 naar 23% in het Kroatisch en van 25 naar 15% in het Duits: lager dan gpt-oss-120b (24% en 19%). We gaan dit in het product inbouwen. gepland
Terug komt
JSON.
Noir geeft de gevonden plekken terug als lijst, gegroepeerd per persoon of ding. Het zijn de tekenreeksen precies zoals ze in het document staan, dus u kunt ze zo in de tekst opzoeken en vervangen.
De heer Smit is bereikbaar op 020-0001234,
zijn e-mailadres is [email protected].
- id: dezelfde persoon of hetzelfde ding krijgt één id (‘Pieter Smit’ en ‘Smit’).
- type: de naam van een van de 48 soorten, in de taal van de instructie (hier bijvoorbeeld ‘Naam’).
- mentions: de tekenreeksen precies zoals ze in het document staan. Valt er niets onder, dan
[].
Vind in het volgende document alles
wat onder het doel valt. … (ingekort)
Geef alleen een JSON-array terug: [{"id": "E1",
"type": "...", "mentions": ["..."]}]
Doel:
Persoonsgegevens, maar niet de leeftijd
Methode: maskeren (geen replacements invullen)
Document:
(hier het document)Eén document in
circa 20 seconden.
We spelen af hoe Noir op de CPU van een laptop (zonder GPU) een document van circa 900 tekens leest en de te maskeren plekken teruggeeft. Het afspelen gaat 5× versneld; de klok toont de werkelijke seconden.
0.0s5× versneld
Document lezenPlekken opschrijven
Gemaskeerd 0 / 0
- Opdracht
- Naam, telefoonnummer, e-mailadres, adres
- Lezen
- ca. 140 tokens/s
- Schrijven
- ca. 24 tokens/s
- Hardware
- Core i7-11800H · 8 threads
- Achter elkaar verwerkt op deze snelheid haalt één machine ongeveer 170.000 tekens per uur.
- Op een GPU, met 16 documenten tegelijk, duurden 100 documenten ongeveer 20 seconden (gpt-oss-120b: ongeveer 90 seconden). eigen meting
* Het document en de gemaskeerde plekken zijn een voorbeeld (op deze pagina draait geen model). De tijd is berekend uit de lees- en schrijfsnelheid die we zelf hebben gemeten. Verschillende aanduidingen van dezelfde persoon worden samengevoegd en in één keer gemaskeerd.
Geef het door in
stukken van 1.000 tekens.
Een lang document knipt u in stukken van ongeveer 1.000 tekens, die u een voor een doorgeeft. Sluit de lengte aan op wat het model bij de training zag, dan mist het minder. Aan het eind voegt u de resultaten samen en combineert u ze met regels die de vaste vormen van e-mail, telefoon, URL en datum oppikken.
Starten (llama.cpp)
llama-server -m noir-ja-en-Q4_K_M.gguf \ -c 16384 -t 8 -np 1 --jinja --port 8191
BeschikbaarGewichten downloaden →
- Zet de denkmodus uit (
enable_thinking: false) en gebruiktemperature 0. - Kies het model per taal: ja-en voor Japans en Engels, de-en voor Duits, hr-en voor Kroatisch.
- Op een CPU (Core i7-11800H, 8 threads) duurt een stuk van 1.000 tekens ongeveer 20 seconden. eigen meting
Hetzelfde document, anders
gemaskeerd per opdracht.
Kies bij een voorbeelddocument een opdracht en probeer het. Met een andere opdracht verandert in hetzelfde document wat er gemaskeerd wordt. Ook de instructie die naar het model gaat en de JSON die terugkomt, kunt u zo bekijken.
1Kies een document
2Kies een opdrachtwordt direct uitgevoerd
Of kies zelf de soorten
Instructie aan het model
JSON die terugkomt
[]
Meetmethode en
contact.
- Documenten: 100 per taal, in het Japans, Engels, Duits en Kroatisch. Het zijn verzonnen documenten die voor de test zijn gemaakt, zoals e-mails, notulen, personeelsnotities, facturen en medische gegevens, waarin de te maskeren plekken als juist antwoord zijn gemarkeerd.
- Opdrachten: per document één van drie vormen: ‘soorten opsommen’, ‘vaag omschrijven’ of ‘met een uitzondering’. gpt-oss-120b (reasoning effort medium) kreeg dezelfde instructie.
- Maatstaven: gemist = het deel van de juiste plekken dat bleef staan; te veel = het deel van de gemaskeerde plekken dat niet nodig was; ongevraagd = het deel waarbij een soort is gemaskeerd die niet in de opdracht stond.
- Uitgevoerd: november 2026, Q4_K_M. We herzien dit vóór de officiële publicatie.