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.
- 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 |
Zoeken op schaal
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
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.
Meer handleidingen over testen, AI en moderne ontwikkeling
Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.
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 →DevOpsOmgevingsvariabelen 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 →SoftwareontwikkelingAPI-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 →TestautomatiseringSpotten 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 →SoftwaretestenCodedekking 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 & SQLDELETE 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 & SQLSQL-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 →SoftwareontwikkelingTypeScript-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 →SoftwareontwikkelingPython *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 →SoftwareontwikkelingPython 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 intelligentieWat 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 →DevOpsMonitoring 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 →DevOpsDocker-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 →TestautomatiseringTDD 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 →SoftwaretestenGebruikersacceptatietesten (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 & SQLSQL 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 & SQLSQL 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 →SoftwareontwikkelingWat 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 →SoftwareontwikkelingJavaScript-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 →SoftwareontwikkelingPython-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 intelligentieWat 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 →DevOpsImplementatie 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 →TestautomatiseringSchilferige 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 →SoftwaretestenBelastingtesten 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 →SoftwaretestenTestcase 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 & SQLOptimalisatie 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 & SQLSQL 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 →SoftwareontwikkelingJavaScript 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 →SoftwareontwikkelingPython-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 →SoftwareontwikkelingPython-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 intelligentieWat 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 →DevOpsLinux-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 →TestautomatiseringSelenium 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 →SoftwaretestenEquivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden
Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…
Lees artikel →SoftwaretestenErnst 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 & SQLTutorial 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 & SQLSQL-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 →SoftwareontwikkelingGit 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 →SoftwareontwikkelingPython 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 & SQLSQL 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 →