Wat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd

  1. Home
  2. Blog
  3. Kunstmatige intelligentie

Kunstmatige intelligentie

Wat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd

Dankzij inbedding kunnen computers de betekenis vergelijken in plaats van exacte woorden te matchen. Ze maken semantisch zoeken, aanbevelingen en RAG mogelijk. Ontdek wat ze zijn, hoe gelijkenis wordt gemeten en waar ze je in de steek laten.

8 min leestijd
Wat zijn insluitingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd

Belangrijkste punten

  • Een insluiting is een lijst met getallen die de betekenis van tekst, een afbeelding of andere gegevens weergeven.
  • Soortgelijke items eindigen met vergelijkbare cijfers, dus betekenis kan worden vergeleken met wiskunde.
  • Cosinusovereenkomst vergelijkt de richting, en het is een gebruikelijke manier om te beoordelen in hoeverre twee inbeddingen op elkaar lijken.
  • Vergelijk alleen insluitingen uit hetzelfde model en test de resultaten op uw eigen gegevens.

Zoek naar “hoe krijg ik mijn geld terug”, en een goed systeem zou een pagina met de titel “Terugbetalingsbeleid” moeten vinden, ook al delen de twee geen belangrijke woorden. Dat vermogen komt voort uit inbedding, een van de nuttigste ideeën in de moderne AI.

In deze handleiding worden insluitingen uitgelegd zonder zware wiskunde. We hebben een klein voorbeeld uitgevoerd in Python 3.13, en de uitvoer ervan wordt hieronder weergegeven. De vectoren daarin zijn de vectoren die we met de hand hebben gemaakt, met elk slechts drie getallen, zodat het idee gemakkelijk te begrijpen is. Echte inbedding is afkomstig van een getraind model en bestaat vaak uit honderden of duizenden cijfers.

Wat is een inbedding?

Een inbedding is een weergave van iets als een lijst met getallen, een zogenaamde vector. Een model wordt zo getraind dat items met gerelateerde betekenissen vectoren krijgen die dicht bij elkaar liggen.

"kitten"  -> [0.9, 0.8, 0.1]
"cat"     -> [0.9, 0.7, 0.2]
"invoice" -> [0.0, 0.1, 0.9]

Zodra de tekst deze vorm heeft, kan een computer berekenen hoe vergelijkbaar twee stukken tekst zijn, wat hij niet rechtstreeks met woorden kan doen. Inbedding beperkt zich ook niet tot woorden. Zinnen, hele documenten, afbeeldingen, audio en producten kunnen allemaal worden ingesloten.

Waarom niet gewoon zoekwoorden matchen?

Opvragen en documenteren Zoeken op trefwoord Zoekopdracht insluiten
“geld terug” en “terugbetalingsbeleid” Mist het, geen gedeelde woorden Kan het vinden
“laptop” en “notebookcomputer” Mist het Kan het vinden
“fout E1042” en een pagina met “E1042” Vindt het precies Kan het missen
“bank” (rivier) en “bank” (geld) Behandelt ze hetzelfde Kan ze scheiden, gegeven de context

Onze gids voor RAG laat dit in de praktijk zien. Een eenvoudige zoekopdracht op basis van het aantal woorden scoorde nul voor “Wanneer kan ik mijn geld terugkrijgen?” tegen een restitutiedocument, omdat ze geen woorden deelden. Let ook op de derde rij: exacte ID’s zijn een zwakte van insluitingen, dus zoeken op trefwoorden heeft nog steeds een plaats.

Denk aan een kaart

Stel je voor dat je elk woord op een enorme kaart plaatst, waar de locatie de betekenis weerspiegelt. ‘Kat’ en ‘kitten’ zitten bijna naast elkaar, ‘hond’ bevindt zich in dezelfde buurt en ‘factuur’ bevindt zich in een andere stad. Om verwante woorden te vinden, hoeft u alleen maar in de buurt te kijken.

Een echte inbedding werkt op dezelfde manier, behalve dat de kaart honderden dimensies heeft in plaats van twee. Mensen kunnen zich dat niet voorstellen, maar de wiskunde werkt precies hetzelfde. Individuele cijfers hebben over het algemeen geen nette betekenis, zoals “vacht”. Waar het om gaat is de algemene positie.

Een klein werkend voorbeeld

Zo kunt u onze handgemaakte vectoren vergelijken:

import math

def cosine(a, b):
    dot = sum(x * y for x, y in zip(a, b))
    return dot / (math.sqrt(sum(x * x for x in a)) *
                  math.sqrt(sum(y * y for y in b)))

vectors = {
    "kitten":  [0.9, 0.8, 0.1],
    "cat":     [0.9, 0.7, 0.2],
    "dog":     [0.8, 0.3, 0.2],
    "invoice": [0.0, 0.1, 0.9],
}

for word in ("kitten", "dog", "invoice"):
    print(word, round(cosine(vectors["cat"], vectors[word]), 3))

# kitten 0.994
# dog 0.955
# invoice 0.238

Tegen ‘kat’ scoort ‘kitten’ het hoogst, vervolgens ‘hond’ en ‘factuur’ veel lager. We hebben deze vectoren gekozen om dat patroon te produceren, dus de rangschikking bewijst niets over echte taal. Het laat alleen zien hoe de berekening zich gedraagt. Een semantische zoekopdracht doet hetzelfde in drie stappen: de zoekopdracht insluiten, een score toekennen aan elk opgeslagen item en sorteren.

query = [0.85, 0.75, 0.15]
sorted(vectors, key=lambda w: cosine(query, vectors[w]), reverse=True)

# ['kitten', 'cat', 'dog', 'invoice']

Cosinus gelijkenis uitgelegd

Elke vector kan worden gezien als een pijl die vanuit de oorsprong wijst. Cosinusgelijkenis meet de hoek tussen twee pijlen, waarbij wordt genegeerd hoe lang ze zijn. We hebben de belangrijkste waarden bevestigd:

cosine([1, 2, 3], [2, 4, 6])   # 1.0   same direction
cosine([1, 0], [0, 1])         # 0.0   unrelated (at right angles)
cosine([1, 0], [-1, 0])        # -1.0  opposite directions
Scoren Betekenis
Dichtbij 1 Wijs in bijna dezelfde richting, dus zeer vergelijkbaar
Dichtbij 0 Niet gerelateerd
Bijna -1 Wijs in tegengestelde richtingen

Kijk naar de eerste regel. [2, 4, 6] is twee keer zo lang als [1, 2, 3], maar de score is een perfecte 1,0, omdat richting het enige is dat telt. Dat is handig voor tekst, waarbij de lengte zaken als de documentgrootte kan weerspiegelen in plaats van de betekenis. Wees ook voorzichtig met drempels. Er is geen universele score die ‘soortgelijk’ betekent, aangezien bruikbare bereiken van model tot model verschillen. Test dus op uw eigen gegevens.

Andere afstandsmaatregelen

Maatregel Waar het naar kijkt Opmerkingen
Cosinus gelijkenis Alleen hoek Een veel voorkomende standaard voor tekst
Puntproduct Hoek en lengte Snel, en is gelijk aan cosinus op genormaliseerde vectoren
Euclidische afstand Rechtlijnige afstand Kleiner betekent meer vergelijkbaar

Het verschil is gemakkelijk te zien. Diezelfde twee vectoren met een cosinusscore van 1,0 hebben een Euclidische afstand van 3,742, aangezien de ene langer is dan de andere. Veel systemen normaliseren vectoren, waarbij ze elk naar een lengte van 1 schalen. Daarna geven het puntproduct en de cosinus hetzelfde antwoord, en we hebben dit bevestigd: beide gaven 0,955 voor “kat” en “hond”. Controleer de documentatie van uw model om te zien welke maatregel wordt aanbevolen.

Hoe inbeddingen worden geleerd

Niemand wijst deze nummers in echte systemen met de hand toe. Een neuraal netwerk leert ze tijdens de training. Een vroeg en invloedrijk idee is dat woorden die in vergelijkbare contexten voorkomen, vaak dezelfde betekenis hebben, zoals bij “Ik heb mijn kat te eten gegeven” en “Ik heb mijn hond te eten gegeven”. Modellen zoals Word2Vec en GloVe leerden woordvectoren uit die patronen.

Later maakten op transformatoren gebaseerde modellen zoals BERT de inbedding contextbewust, zodat ‘bank’ een andere vector kon krijgen in ‘rivieroever’ en ‘banklening’. Veel moderne modellen integreren hele zinnen of passages in één keer. In onze gids voor grote taalmodellen wordt uitgelegd hoe transformatoren omgaan met context.

Waar inbedding wordt gebruikt

Gebruik Hoe het helpt
Semantisch zoeken Vindt resultaten op basis van betekenis, in plaats van exacte woorden
RAG Haalt relevante passages op voor een taalmodel
Aanbevelingen Stelt items voor die lijken op de items die u leuk vond
Clustering Groepen ondersteunen tickets of recensies per onderwerp
Duplicaatdetectie Vindt vergelijkbare vragen of vermeldingen
Classificatie Biedt functies voor eenvoudige modellen
Detectie van afwijkingen Markeert items die ver verwijderd zijn van al het andere

Ons voorbeeld vergeleek een zoekopdracht met elk item, wat bekend staat als een exacte zoekopdracht. Dat werkt prima voor duizenden items, maar bij vele miljoenen wordt het traag. Geschatte dichtstbijzijnde buur (ANN)-indexen zoals HNSW lossen dit op. Ze vinden snel zeer goede overeenkomsten, door een kleine kans op te geven om de absoluut beste te missen.

Vectordatabases en extensies, zoals pgvector voor PostgreSQL, bieden deze indexen samen met filtering en opslag. Onze vectordatabasegids behandelt de opties. Voor een klein project heb je er misschien helemaal geen nodig, en zoeken in het geheugen is een prima manier om te beginnen.

Tip: Overweeg vroegtijdig hybride zoeken. Het combineren van het insluiten van gelijkenis met trefwoordmatching levert vaak betere resultaten op dan elk afzonderlijk, vooral wanneer gebruikers zoeken naar productcodes, namen of foutmeldingen.

Een inbeddingsmodel kiezen

  • Taal. Als uw inhoud bijvoorbeeld in het Hindi of Tamil is, controleer dan of het model hier goed mee omgaat.
  • Domein. Algemene modellen kunnen moeite hebben met specialistische juridische of medische termen.
  • Afmetingen. Met meer dimensies kunnen meer details worden vastgelegd, maar dit kost meer opslagruimte en geheugen.
  • Kosten en hosting. Vergelijk een gehoste API met een open model dat u zelf kunt uitvoeren, vooral voor privégegevens.
  • Invoerlengte. Modellen hebben een limiet, dus lange documenten moeten eerst in delen worden opgesplitst.

De beste test zijn uw eigen gegevens. Verzamel ongeveer twintig echte zoekopdrachten, samen met de documenten die ze moeten vinden, en vergelijk hoe elk model ze rangschikt. Gepubliceerde benchmarks geven mogelijk niet uw inhoud weer.

Beperkingen

  • Model lock-in. Vectoren van verschillende modellen kunnen niet met elkaar worden vergeleken. Als je van model verandert, moet je alles opnieuw embedden.
  • Exacte termen. ID’s, codes en zeldzame namen komen mogelijk niet betrouwbaar overeen.
  • Ontkenning. ‘Terugbetalingen toegestaan’ en ‘Terugbetalingen niet toegestaan’ kunnen dicht bij elkaar liggen, ook al betekenen ze tegengestelde dingen.
  • Gelijkaardig betekent niet dat het correct is. Een goede match kan achterhaald of gewoonweg verkeerd zijn.
  • Vooroordelen. Inbedding kan stereotypen uit de trainingsgegevens halen.
  • Cosinus is geen magie. Onderzoekers hebben zich afgevraagd hoe betekenisvol het is bij sommige aangeleerde inbeddingsvormen. Beschouw scores dus als een nuttig signaal en niet als maatstaf voor de waarheid.

Veel voorkomende fouten

  • Modellen combineren. Query’s en documenten insluiten met hetzelfde model en dezelfde versie.
  • Gebruik overal één gelijkheidsdrempel. Stem deze af voor elk model en elke taak.
  • Grote documenten in hun geheel insluiten. De betekenis wordt verwaterd, dus deel ze eerst op.
  • Evaluatie overgeslagen. Zonder testquery’s kun je niet zeggen of een wijziging heeft geholpen.
  • Voor alles gebruik maken van insluitingen. Als gebruikers naar exacte ID’s zoeken, is een normale database-index beter.

Tot slot

Een inbedding verandert betekenis in cijfers, zodat software ideeën kan vergelijken in plaats van strings. Het concept is eenvoudig, terwijl het praktische werk bestaat uit het kiezen van een model, het opsplitsen van gegevens en het testen op echte vragen. Om het zelf te proberen, sluit u enkele tientallen van uw eigen documenten in met een willekeurig inbeddingsmodel, doorzoekt u ze met echte vragen en ziet u waar de resultaten u verrassen.

Veelgestelde vragen

Wat zijn inbedding in eenvoudige bewoordingen?

Insluitingen zijn lijsten met getallen die de betekenis vertegenwoordigen. Items met een vergelijkbare betekenis krijgen vergelijkbare cijfers, waardoor een computer ze wiskundig kan vergelijken.

Wat is cosinusgelijkenis?

Het meet de hoek tussen twee vectoren, van -1 tot 1. Een score dichtbij 1 betekent dat ze in bijna dezelfde richting wijzen, wat een vergelijkbare inhoud suggereert.

Wat is het verschil tussen inbedding en tokens?

Een token is een stuk tekst dat door een model wordt verwerkt. Een inbedding is een numerieke vector die de betekenis van een token, zin of document weergeeft.

Hoeveel dimensies moet een inbedding hebben?

Het hangt af van het model, en honderden tot een paar duizend zijn gebruikelijk. Met meer kunt u meer details vastleggen, maar het kost meer opslagruimte, dus test wat uw gebruiksscenario nodig heeft.

Heb ik een vectordatabase nodig om insluitingen te gebruiken?

Nee. Kleine collecties kunnen in het geheugen worden doorzocht. Vectordatabases worden handig bij grotere collecties, frequente updates of filterbehoeften.

Blijf leren

Werk met Stack Quora

Hulp nodig met testen, WordPress of SEO?

We helpen teams betere software te leveren en hun sites te laten groeien. Vertel ons waar u mee bezig bent en wij stellen een duidelijke volgende stap voor.

Blijf lezen

Meer handleidingen over testen, AI en moderne ontwikkeling

Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.

Kunstmatige intelligentie

AI-hallucinaties uitgelegd: waarom taalmodellen dingen verzinnen en hoe ze te verminderen

AI-hallucinaties uitgelegd: wat ze zijn, waarom taalmodellen ze produceren, veelvoorkomende typen, hoe je ze kunt verminderen met aarding en aanwijz…

Lees artikel →
DevOps

Omgevingsvariabelen uitgelegd: .env-bestanden, geheimen en configuratie goed gedaan

Omgevingsvariabelen uitgelegd met Python-voorbeelden die we hebben uitgevoerd: ze lezen en instellen, waarom elke waarde een string is, .env-bestand…

Lees artikel →
Softwareontwikkeling

API-snelheidsbeperking uitgelegd: algoritmen, headers en afhandeling van 429-fouten

API-snelheidsbeperking uitgelegd met een simulatie die we hebben uitgevoerd: token-bucket, vast venster, schuifvenster, 429 reacties, headers van sn…

Lees artikel →
Testautomatisering

Spotten in Python: unittest.mock, patch en de fouten die tests doen liegen

Spotten in Python met unittest.mock, getest: Mock en return_value, side_effect, patchen waar een naam wordt gebruikt, spec en autospec, spotdatums e…

Lees artikel →
Softwaretesten

Codedekking uitgelegd: lijn versus filiaaldekking en wat 100% werkelijk betekent

Codedekking uitgelegd met een echte dekking.py-run: dekking van lijnen, vertakkingen en condities, een rapport lezen, waarom 100% dekking nog steeds…

Lees artikel →
Databases & SQL

DELETE versus TRUNCATE versus DROP in SQL: verschillen, terugdraaien en wanneer elk te gebruiken

DELETE versus TRUNCATE versus DROP uitgelegd met geteste SQL: wat elk verwijdert, terugdraaien, triggers, identiteitsreset, snelheid en hoe PostgreS…

Lees artikel →
Databases & SQL

SQL-weergaven uitgelegd: creëer, gebruik en vermijd de valkuilen, met voorbeelden

SQL-weergaven uitgelegd met query's die we hebben uitgevoerd: een weergave maken, live resultaten, kolommen verbergen, prestaties, bijwerkbare en ge…

Lees artikel →
Softwareontwikkeling

TypeScript-interface versus type: echte verschillen, getest met de compiler

TypeScript-interface versus type, gecontroleerd met de echte compiler: wat beide kunnen doen, wat slechts één kan doen, samenvoegen van declaraties,…

Lees artikel →
Softwareontwikkeling

Python *args en **kwargs uitgelegd: flexibele functies met duidelijke voorbeelden

Python *args en **kwargs uitgelegd met code die we hebben uitgevoerd: in- en uitpakken, parametervolgorde, argumenten die alleen trefwoorden en posi…

Lees artikel →
Softwareontwikkeling

Python Lambda-functies: syntaxis, echt gebruik en wanneer u ze niet moet gebruiken

Python lambda-functies uitgelegd met code die we hebben uitgevoerd: syntaxis, sorteren met sleutel, kaart en filter, sluitingen, de laat-bindende va…

Lees artikel →
Kunstmatige intelligentie

Wat zijn AI-agenten? Hoe ze werken, met een eenvoudige agentloop die u kunt uitvoeren

Wat zijn AI-agenten? Een duidelijke gids voor de agentenlus, tools, geheugen en vangrails, met een kleine Python-lus die we hebben uitgevoerd, echte…

Lees artikel →
DevOps

Monitoring versus waarneembaarheid: het echte verschil, met logboeken, statistieken en sporen

Monitoring versus waarneembaarheid uitgelegd: bekende en onbekende fouten, logboeken, statistieken en sporen, een walkthrough voor afrekenincidenten…

Lees artikel →
DevOps

Docker-volumes versus bindingsmounts: bewaar containergegevens op de juiste manier

Docker-volumes versus bind-mounts uitgelegd: waarom containergegevens verdwijnen, benoemde volumes, bind-mounts, tmpfs, Compose-voorbeelden, back-up…

Lees artikel →
Testautomatisering

TDD versus BDD: belangrijkste verschillen, één functie die op beide manieren is gebouwd en wanneer deze moet worden gebruikt

TDD versus BDD uitgelegd met één kortingsfunctie die in beide richtingen is gebouwd: rood-groen-refactor met code die we hebben uitgevoerd, gegeven-…

Lees artikel →
Softwaretesten

Gebruikersacceptatietesten (UAT): proces, checklist en echte voorbeelden

Gebruikersacceptatietesten uitgelegd: wie voert het uit, hoe het verschilt van QA, een proces in zeven stappen, een UAT-testcase-sjabloon, een check…

Lees artikel →
Databases & SQL

SQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen

SQL NULL-waarden uitgelegd met query's die we hebben uitgevoerd: logica met drie waarden, IS NULL, COALESCE, NULLIF, hoe aggregaten, joins en sorter…

Lees artikel →
Databases & SQL

SQL CASE WHEN-instructie: syntaxis, echte voorbeelden en veelvoorkomende fouten

SQL CASE WHEN uitgelegd met vragen die we hebben uitgevoerd: eenvoudige en doorzochte formulieren, volgorde van de voorwaarden, draaipunten met SUM,…

Lees artikel →
Softwareontwikkeling

Wat is JWT? JSON-webtokens uitgelegd met een werkend voorbeeld

Wat is JWT? JSON Web Tokens uitgelegd: de drie delen, een token gebouwd en waarmee is geknoeid in de code die we hebben uitgevoerd, JWT versus sessi…

Lees artikel →
Softwareontwikkeling

JavaScript-gebeurtenislus uitgelegd: call-stack, microtaken en timers met voorbeelden

De JavaScript-gebeurtenislus uitgelegd met code die we hebben uitgevoerd: call-stack, taak- en microtask-wachtrijen, waarom setTimeout 0 niet onmidd…

Lees artikel →
Softwareontwikkeling

Python-generatoren en opbrengst uitgelegd: bespaar geheugen met echte voorbeelden

Python-generatoren en opbrengst uitgelegd met code die we hebben uitgevoerd: hoe ze pauzeren en hervatten, gemeten geheugenbesparingen, pijplijnen, …

Lees artikel →
Kunstmatige intelligentie

Wat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd

Wat zijn insluitingen? Een gids in duidelijke taal over vectoren, cosinusovereenkomst en semantisch zoeken, met een klein voorbeeld dat we hebben ui…

Lees artikel →
DevOps

Implementatie van blauwgroen versus kanarie: verschillen, afwegingen en hoe te kiezen

Blauw-groen versus kanarie-implementatie uitgelegd: hoe elk werkt, kosten, risico's en terugdraaien, stabiele gebruikersbucket die we hebben getest,…

Lees artikel →
Testautomatisering

Schilferige tests: wat de oorzaak ervan is en hoe u ze voorgoed kunt oplossen

Zwakke tests uitgelegd met demo's die we hebben uitgevoerd: de belangrijkste oorzaken, hoe je er een kunt bevestigen en diagnosticeren, goede oploss…

Lees artikel →
Softwaretesten

Belastingtesten versus stresstesten: verschillen, statistieken en k6-voorbeelden

Belastingtesten versus stresstesten uitgelegd: wat elk bewijst, piek- en soak-tests, de statistieken die er toe doen, waarom gemiddelden misleiden, …

Lees artikel →
Softwaretesten

Testcase versus testscenario: belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken

Testcase versus testscenario uitgelegd: duidelijke definities, een tabel naast elkaar, één functie voor het opnieuw instellen van wachtwoorden, over…

Lees artikel →
Databases & SQL

Optimalisatie van SQL-query's: lees uitvoeringsplannen en repareer langzame query's, met timing

Optimalisatie van SQL-query's getest op een miljoen rijen: lees uitvoeringsplannen, voeg de juiste indexen toe, repareer niet-sargeerbare filters, g…

Lees artikel →
Databases & SQL

SQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties

SQL UNION versus UNION ALL uitgelegd met de query's die we hebben uitgevoerd: duplicaten, de regels volgen beide, een echte databug, gemeten prestat…

Lees artikel →
Softwareontwikkeling

JavaScript Fetch API-tutorial: GET, POST, foutafhandeling en time-outs

Een JavaScript Fetch API-tutorial getest tegen een lokale server: GET en POST, waarom 404 niet gooit, een herbruikbare helper, queryreeksen, time-ou…

Lees artikel →
Softwareontwikkeling

Python-bestandsverwerking: lezen, schrijven, CSV, JSON en pathlib met voorbeelden

Het verwerken van Python-bestanden uitgelegd met code die we hebben uitgevoerd: open modi, met het lezen van grote bestanden, CSV, JSON, pathlib, bi…

Lees artikel →
Softwareontwikkeling

Python-klassen en -objecten: OOP-zelfstudie met echte voorbeelden

Python-klassen en -objecten uitgelegd met code die we hebben uitgevoerd: __init__, methoden, klasse versus instantie-attributen, overerving, eigensc…

Lees artikel →
Kunstmatige intelligentie

Wat is een groot taalmodel? Hoe LLM's werken, uitgelegd zonder de hype

Wat is een groot taalmodel? LLM's uitgelegd in duidelijke taal: tokens, inbedding, aandacht, training, temperatuur- en contextvensters, een kleine d…

Lees artikel →
DevOps

Linux-opdrachten voor beginners: de essentiële terminalgids met voorbeelden

Linux-opdrachten voor beginners, gegroepeerd op taak: navigatie, bestanden, logboeken bekijken, grep, pipelines, machtigingen, processen en archieve…

Lees artikel →
Testautomatisering

Selenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen

Selenium versus Playwright vergeleken: architectuur, wachten, browser- en taalondersteuning, debuggen, dezelfde test in beide tools, migratieadvies …

Lees artikel →
Softwaretesten

Equivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden

Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…

Lees artikel →
Softwaretesten

Ernst versus prioriteit bij het testen van software: verschillen, matrix en echte voorbeelden

Ernst versus prioriteit bij het testen van software uitgelegd: duidelijke definities, een vierwegmatrix met voorbeelden, niveauschalen, wie deze bep…

Lees artikel →
Databases & SQL

Tutorial voor SQL-subquery's: typen, gecorreleerde subquery's en BESTAAN met voorbeelden

Een SQL-subquery-tutorial met query's die we hebben uitgevoerd: scalaire, IN-, FROM- en SELECT-subquery's, gecorreleerde subquery's, EXISTS, de NOT …

Lees artikel →
Databases & SQL

SQL-transacties en ACID uitgelegd: COMMIT-, ROLLBACK- en isolatieniveaus

SQL-transacties en ACID uitgelegd met een bankoverschrijving die we hebben uitgevoerd: COMMIT, ROLLBACK, savepoints, locks, isolatieniveaus, dirty r…

Lees artikel →
Softwareontwikkeling

Git merge vs rebase: verschillen, voorbeelden en wanneer je wat gebruikt

Git merge vs rebase uitgelegd met echte logoutput, een vergelijkingstabel, de gouden regel van rebase en een veilige teamwerkwijze.

Lees artikel →
Softwareontwikkeling

Python list comprehension: syntaxis, voorbeelden en wanneer je het vermijdt

Python list comprehension uitgelegd: syntaxis, filteren, if-else, geneste lussen, gemeten tijden en wanneer een gewone for-lus beter is.

Lees artikel →
Databases & SQL

SQL JOIN uitgelegd met voorbeelden (Inner, Left, Right, Full)

Begrijp SQL joins stap voor stap met voorbeeldtabellen en queries: INNER, LEFT, RIGHT, FULL, CROSS en SELF, plus veelgemaakte fouten en prestatietips.

Lees artikel →