Was sind Einbettungen? Vektoren und Kosinusähnlichkeit einfach erklärt
Durch Einbettungen können Computer die Bedeutung vergleichen, anstatt genaue Wörter zuzuordnen. Sie unterstützen die semantische Suche, Empfehlungen und RAG. Erfahren Sie, was sie sind, wie Ähnlichkeit gemessen wird und wo sie Sie im Stich lassen.
- Eine Einbettung ist eine Liste von Zahlen, die die Bedeutung von Text, einem Bild oder anderen Daten darstellt.
- Ähnliche Elemente haben am Ende ähnliche Zahlen, sodass ihre Bedeutung mit der Mathematik verglichen werden kann.
- Kosinus-Ähnlichkeit vergleicht die Richtung und ist eine gängige Methode, um zu bewerten, wie ähnlich zwei Einbettungen sind.
- Vergleichen Sie nur Einbettungen aus demselben Modell und testen Sie die Ergebnisse anhand Ihrer eigenen Daten.
Suchen Sie nach „Wie bekomme ich mein Geld zurück?“ und ein gutes System sollte eine Seite mit dem Titel „Rückerstattungsrichtlinie“ finden, auch wenn die beiden keine wichtigen Wörter gemeinsam haben. Diese Fähigkeit kommt von Einbettungen, einer der nützlichsten Ideen in der modernen KI.
Dieser Leitfaden erklärt Einbettungen ohne schwere Mathematik. Wir haben ein kleines Beispiel in Python 3.13 ausgeführt und die Ausgabe ist unten dargestellt. Die darin enthaltenen Vektoren sind diejenigen, die wir von Hand erstellt haben, mit jeweils nur drei Zahlen, um die Idee leicht erkennbar zu machen. Echte Einbettungen stammen aus einem trainierten Modell und haben oft Hunderte oder Tausende von Zahlen.
Was ist eine Einbettung?
Eine Einbettung ist eine Darstellung von etwas als Liste von Zahlen, die als Vektor bezeichnet wird. Ein Modell wird so trainiert, dass Elemente mit verwandten Bedeutungen nahe beieinander liegende Vektoren erhalten.
"kitten" -> [0.9, 0.8, 0.1]
"cat" -> [0.9, 0.7, 0.2]
"invoice" -> [0.0, 0.1, 0.9]
Sobald der Text in dieser Form vorliegt, kann ein Computer berechnen, wie ähnlich zwei Textteile sind, was mit Wörtern nicht direkt möglich ist. Auch Einbettungen sind nicht auf Wörter beschränkt. Sätze, ganze Dokumente, Bilder, Audio und Produkte können eingebettet werden.
Warum nicht einfach Keywords abgleichen?
| Abfrage und Dokument | Stichwortsuche | Einbettungssuche |
|---|---|---|
| „Geld zurück“ und „Rückerstattungsrichtlinie“ | Vermisst es, keine gemeinsamen Worte | Kann es finden |
| „Laptop“ und „Notebook“ | Vermisst es | Kann es finden |
| „Fehler E1042“ und eine Seite mit „E1042“ | Findet es genau | Kann es vermissen |
| „Bank“ (Fluss) und „Bank“ (Geld) | Behandelt sie gleich | Kann sie je nach Kontext trennen |
Unser Leitfaden zu RAG zeigt dies in der Praxis. Eine einfache Suche nach Wörtern ergab für die Frage „Wann kann ich mein Geld zurückbekommen?“ null Treffer. gegen ein Rückerstattungsdokument, da sie keine Worte austauschten. Beachten Sie auch die dritte Zeile: Genaue Bezeichner sind eine Schwäche von Einbettungen, sodass die Suche nach Schlüsselwörtern immer noch ihren Platz hat.
Denken Sie an eine Karte
Stellen Sie sich vor, Sie platzieren jedes Wort auf einer riesigen Karte, auf der der Ort die Bedeutung widerspiegelt. „Katze“ und „Kätzchen“ sitzen fast nebeneinander, „Hund“ ist in der gleichen Nachbarschaft und „Rechnung“ ist in einer anderen Stadt. Um verwandte Wörter zu finden, schauen Sie einfach in der Nähe nach.
Eine echte Einbettung funktioniert auf die gleiche Weise, außer dass die Karte Hunderte statt zwei Dimensionen hat. Die Leute können sich das nicht vorstellen, aber die Rechnung funktioniert trotzdem. Einzelne Zahlen haben im Allgemeinen keine klare Bedeutung, wie zum Beispiel „Felligkeit“. Entscheidend ist die Gesamtposition.
Ein kleines Arbeitsbeispiel
So vergleichen Sie unsere handgefertigten Vektoren:
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
Gegen „Katze“ erzielt „Kätzchen“ die höchste Punktzahl, „Hund“ folgt als nächstes und „Rechnung“ deutlich schlechter. Wir haben diese Vektoren ausgewählt, um dieses Muster zu erzeugen, daher beweist die Rangfolge nichts über die tatsächliche Sprache. Es zeigt nur, wie sich die Berechnung verhält. Eine semantische Suche erledigt das Gleiche in drei Schritten: Einbetten der Abfrage, Bewerten für jedes gespeicherte Element und Sortieren.
query = [0.85, 0.75, 0.15]
sorted(vectors, key=lambda w: cosine(query, vectors[w]), reverse=True)
# ['kitten', 'cat', 'dog', 'invoice']
Kosinusähnlichkeit erklärt
Man kann sich jeden Vektor als einen vom Ursprung ausgehenden Pfeil vorstellen. Die Kosinusähnlichkeit misst den Winkel zwischen zwei Pfeilen und ignoriert dabei deren Länge. Wir haben die Schlüsselwerte bestätigt:
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
| Punktzahl | Bedeutung |
|---|---|
| In der Nähe von 1 | Zeigen Sie fast in die gleiche Richtung, also sehr ähnlich |
| Nahezu 0 | Ohne Zusammenhang |
| Nahe bei -1 | Zeigen Sie in entgegengesetzte Richtungen |
Schauen Sie sich die erste Zeile an. [2, 4, 6] ist doppelt so lang wie [1, 2, 3], dennoch ist die Punktzahl perfekt 1,0, da nur die Richtung zählt. Das ist nützlich für Text, bei dem die Länge eher Dinge wie die Dokumentgröße als die Bedeutung widerspiegeln kann. Seien Sie auch bei Schwellenwerten vorsichtig. Es gibt keinen universellen Wert, der „ähnlich“ bedeutet, da die nützlichen Bereiche von Modell zu Modell unterschiedlich sind. Testen Sie sie daher anhand Ihrer eigenen Daten.
Andere Distanzmaße
| Messen | Was es sieht | Notizen |
|---|---|---|
| Kosinusähnlichkeit | Nur Winkel | Ein gängiger Standardwert für Text |
| Punktprodukt | Winkel und Länge | Schnell und entspricht dem Kosinus auf normalisierten Vektoren |
| Euklidischer Abstand | Gerader Abstand | Kleiner bedeutet ähnlicher |
Der Unterschied ist leicht zu erkennen. Dieselben zwei Vektoren mit einem Kosinuswert von 1,0 haben einen euklidischen Abstand von 3,742, da einer länger als der andere ist. Viele Systeme normalisieren Vektoren und skalieren jeden auf eine Länge von 1. Danach liefern Skalarprodukt und Kosinus das gleiche Ergebnis, und wir haben dies bestätigt: Beide ergaben 0,955 für „Katze“ und „Hund“. Sehen Sie in der Dokumentation Ihres Modells nach, welche Maßnahme empfohlen wird.
Wie Einbettungen gelernt werden
In realen Systemen ordnet niemand diese Nummern von Hand zu. Ein neuronales Netzwerk lernt sie beim Training. Eine frühe und einflussreiche Idee ist, dass Wörter, die in ähnlichen Kontexten vorkommen, tendenziell eine ähnliche Bedeutung haben, wie zum Beispiel „Ich habe meine Katze gefüttert“ und „Ich habe meinen Hund gefüttert“. Modelle wie Word2Vec und GloVe lernten Wortvektoren aus diesen Mustern.
Später machten transformatorbasierte Modelle wie BERT Einbettungen kontextsensitiv, sodass „Bank“ einen anderen Vektor in „Flussufer“ und „Bankdarlehen“ erhalten konnte. Viele moderne Modelle betten ganze Sätze oder Passagen auf einmal ein. Unser Leitfaden zu großen Sprachmodellen erklärt, wie Transformatoren mit Kontext umgehen.
Wo Einbettungen verwendet werden
| Benutzen | Wie es hilft |
|---|---|
| Semantische Suche | Findet Ergebnisse anhand der Bedeutung und nicht anhand exakter Wörter |
| RAG | Ruft relevante Passagen für ein Sprachmodell ab |
| Empfehlungen | Schlägt Artikel vor, die denen ähneln, die Ihnen gefallen haben |
| Clustering | Gruppen unterstützen Tickets oder Rezensionen nach Thema |
| Duplikaterkennung | Erkennt ähnliche Fragen oder Einträge |
| Klassifizierung | Bietet Funktionen für einfache Modelle |
| Anomalieerkennung | Markiert Elemente, die weit entfernt von allem anderen sind |
Suche im Maßstab
In unserem Beispiel wurde eine Abfrage mit jedem Artikel verglichen, was als exakte Suche bezeichnet wird. Das funktioniert bei Tausenden von Artikeln gut, bei vielen Millionen wird es jedoch langsam. Approximate Nearest Neighbour (ANN)-Indizes wie HNSW lösen dieses Problem. Sie finden schnell sehr enge Übereinstimmungen, indem sie eine kleine Chance aufgeben, die absolut beste Übereinstimmung zu verpassen.
Vektordatenbanken und Erweiterungen wie pgvector für PostgreSQL stellen diese Indizes zusammen mit Filterung und Speicherung bereit. Unser Vektordatenbank-Leitfaden behandelt die Optionen. Für ein kleines Projekt benötigen Sie möglicherweise überhaupt keines, und eine In-Memory-Suche ist ein absolut guter Anfang.
Tipp: Erwägen Sie frühzeitig die Hybridsuche. Die Kombination der Einbettungsähnlichkeit mit dem Keyword-Matching führt häufig zu besseren Ergebnissen als beides allein, insbesondere wenn Benutzer nach Produktcodes, Namen oder Fehlermeldungen suchen.
Auswahl eines Einbettungsmodells
- Sprache. Wenn Ihre Inhalte beispielsweise auf Hindi oder Tamil vorliegen, prüfen Sie, ob das Modell damit gut zurechtkommt.
- Domäne. Allgemeine Modelle können mit juristischen oder medizinischen Fachbegriffen Schwierigkeiten haben.
- Abmessungen. Mit mehr Dimensionen können mehr Details erfasst werden, sie kosten jedoch mehr Speicherplatz und Arbeitsspeicher.
- Kosten und Hosting. Vergleichen Sie eine gehostete API mit einem offenen Modell, das Sie selbst ausführen können, insbesondere für private Daten.
- Eingabelänge. Modelle haben eine Grenze, daher müssen lange Dokumente zuerst in Blöcke aufgeteilt werden.
Der beste Test sind Ihre eigenen Daten. Sammeln Sie etwa 20 echte Anfragen zusammen mit den Dokumenten, die sie finden sollten, und vergleichen Sie, wie jedes Modell sie einordnet. Veröffentlichte Benchmarks spiegeln möglicherweise nicht Ihren Inhalt wider.
Einschränkungen
- Modell-Lock-in. Vektoren aus verschiedenen Modellen können nicht verglichen werden. Wenn Sie Modelle ändern, müssen Sie alles neu einbetten.
- Genaue Begriffe. IDs, Codes und seltene Namen werden möglicherweise nicht zuverlässig zugeordnet.
- Verneinung. „Rückerstattungen zulässig“ und „Rückerstattungen nicht zulässig“ können nahe beieinander liegen, obwohl sie gegensätzliche Bedeutungen haben.
- Ähnlich bedeutet nicht richtig. Eine enge Übereinstimmung kann veraltet oder einfach falsch sein.
- Voreingenommenheit. Einbettungen können Stereotypen aus ihren Trainingsdaten absorbieren.
- Kosinus ist keine Magie. Forscher haben in Frage gestellt, wie aussagekräftig er bei einigen erlernten Einbettungen ist. Behandeln Sie Scores daher als nützliches Signal und nicht als Maß für die Wahrheit.
Häufige Fehler
- Modelle mischen. Betten Sie Abfragen und Dokumente mit demselben Modell und derselben Version ein.
- Überall einen Ähnlichkeitsschwellenwert verwenden. Passen Sie ihn für jedes Modell und jede Aufgabe an.
- Einbetten großer Dokumente als Ganzes. Die Bedeutung wird verwässert, also teilen Sie sie zuerst in Stücke.
- Auswertung überspringen. Ohne Testabfragen können Sie nicht sagen, ob eine Änderung geholfen hat.
- Einbettungen für alles verwenden. Wenn Benutzer nach genauen IDs suchen, ist ein normaler Datenbankindex besser.
Fazit
Eine Einbettung wandelt Bedeutung in Zahlen um, sodass Software Ideen statt Zeichenfolgen vergleichen kann. Das Konzept ist einfach, während die praktische Arbeit darin besteht, ein Modell auszuwählen, Daten aufzuteilen und anhand realer Abfragen zu testen. Um es selbst auszuprobieren, betten Sie ein paar Dutzend Ihrer eigenen Dokumente mit einem beliebigen Einbettungsmodell ein, durchsuchen Sie sie mit echten Fragen und sehen Sie, welche Ergebnisse Sie überraschen.
Häufige Fragen
Was sind Einbettungen in einfachen Worten?
Einbettungen sind Listen von Zahlen, die eine Bedeutung darstellen. Gegenstände mit ähnlicher Bedeutung erhalten ähnliche Zahlen, sodass ein Computer sie mathematisch vergleichen kann.
Was ist Kosinusähnlichkeit?
Es misst den Winkel zwischen zwei Vektoren im Bereich von -1 bis 1. Ein Wert nahe 1 bedeutet, dass sie nahezu in die gleiche Richtung zeigen, was auf einen ähnlichen Inhalt schließen lässt.
Was ist der Unterschied zwischen Einbettungen und Token?
Ein Token ist ein Textblock, den ein Modell verarbeitet. Eine Einbettung ist ein numerischer Vektor, der die Bedeutung eines Tokens, Satzes oder Dokuments darstellt.
Wie viele Dimensionen sollte eine Einbettung haben?
Dies hängt vom Modell ab und liegt häufig bei Hunderten bis einigen Tausend. Mehr kann mehr Details erfassen, kostet aber mehr Speicherplatz. Testen Sie also, was Ihr Anwendungsfall benötigt.
Benötige ich eine Vektordatenbank, um Einbettungen zu verwenden?
Nein. Kleine Sammlungen können im Speicher durchsucht werden. Vektordatenbanken werden bei größeren Sammlungen, häufigen Aktualisierungen oder Filteranforderungen nützlich.
Lerne weiter
Benötigen Sie Hilfe beim Testen, WordPress oder SEO?
Wir helfen Teams, bessere Software zu liefern und ihre Websites zu erweitern. Sagen Sie uns, woran Sie gerade arbeiten, und wir schlagen Ihnen einen klaren nächsten Schritt vor.
Weitere Anleitungen finden Sie unter Tests, KI und moderne Entwicklung
Hat Ihnen dieser Artikel gefallen? Wählen Sie ein Thema und springen Sie direkt in unsere neuesten Tutorials.
KI-Halluzinationen erklärt: Warum Sprachmodelle Dinge erfinden und wie man sie reduziert
KI-Halluzinationen erklärt: Was sie sind, warum Sprachmodelle sie produzieren, gängige Typen, wie man sie mit Erdung und Eingabeaufforderungen reduz…
Artikel lesen →DevOpsErklärte Umgebungsvariablen: .env-Dateien, Geheimnisse und Konfiguration richtig gemacht
Umgebungsvariablen anhand von Python-Beispielen erklärt, die wir ausgeführt haben: Sie lesen und festlegen, warum jeder Wert ein String ist, .env-Da…
Artikel lesen →SoftwareentwicklungAPI-Ratenbegrenzung erklärt: Algorithmen, Header und Behandlung von 429-Fehlern
API-Ratenbegrenzung anhand einer von uns durchgeführten Simulation erklärt: Token-Bucket, festes Fenster, gleitendes Fenster, 429 Antworten, Ratenbe…
Artikel lesen →TestautomatisierungSpott in Python: unittest.mock, Patch und die Fehler, die Tests zum Lügen machen
Mocking in Python mit unittest.mock, getestet: Mock und return_value, side_effect, Patchen, wo ein Name verwendet wird, Spezifikation und Autospec, …
Artikel lesen →SoftwaretestsCode-Abdeckung erklärt: Leitungs- und Zweigstellenabdeckung und was 100 % wirklich bedeutet
Erklärung der Codeabdeckung anhand eines echten Coverage.py-Laufs: Zeilen-, Zweig- und Bedingungsabdeckung, Lesen eines Berichts, warum bei 100 % Ab…
Artikel lesen →Datenbanken & SQLDELETE vs. TRUNCATE vs. DROP in SQL: Unterschiede, Rollback und Verwendungszweck
DELETE vs. TRUNCATE vs. DROP erklärt mit getestetem SQL: was jeweils entfernt wird, Rollback, Trigger, Identitätsrücksetzung, Geschwindigkeit und wi…
Artikel lesen →Datenbanken & SQLErklärte SQL-Ansichten: Erstellen, nutzen und vermeiden Sie Fallstricke mit Beispielen
SQL-Ansichten anhand der von uns ausgeführten Abfragen erklärt: Erstellen einer Ansicht, Live-Ergebnisse, Ausblenden von Spalten, Leistung, aktualis…
Artikel lesen →SoftwareentwicklungTypeScript-Schnittstelle vs. Typ: Echte Unterschiede, getestet mit dem Compiler
TypeScript-Schnittstelle vs. Typ, überprüft mit dem echten Compiler: Was beide können, was nur einer kann, Deklarationszusammenführung, Erweiterunge…
Artikel lesen →SoftwareentwicklungPython *args und **kwargs erklärt: Flexible Funktionen mit klaren Beispielen
Python *args und **kwargs erklärt mit Code, den wir ausgeführt haben: Packen und Entpacken, Parameterreihenfolge, Nur-Schlüsselwort- und Nur-Positio…
Artikel lesen →SoftwareentwicklungPython-Lambda-Funktionen: Syntax, tatsächliche Verwendung und wann man sie nicht verwendet
Python-Lambda-Funktionen erklärt mit Code, den wir ausgeführt haben: Syntax, Sortierung mit Schlüssel, Karte und Filter, Abschlüsse, die Late-Bindin…
Artikel lesen →Künstliche IntelligenzWas sind KI-Agenten? Wie sie funktionieren, mit einer einfachen Agentenschleife, die Sie ausführen können
Was sind KI-Agenten? Eine einfache Anleitung zur Agentenschleife, zu Tools, Speicher und Leitplanken, mit einer kleinen Python-Schleife, die wir aus…
Artikel lesen →DevOpsÜberwachung vs. Beobachtbarkeit: Der wahre Unterschied, mit Protokollen, Metriken und Traces
Überwachung vs. Beobachtbarkeit erklärt: bekannte und unbekannte Fehler, Protokolle, Metriken und Spuren, eine exemplarische Vorgehensweise für Chec…
Artikel lesen →DevOpsDocker-Volumes vs. Bind Mounts: Containerdaten auf die richtige Art und Weise beibehalten
Docker-Volumes vs. Bind-Mounts erklärt: Warum Containerdaten verschwinden, benannte Volumes, Bind-Mounts, tmpfs, Compose-Beispiele, Backups, Berecht…
Artikel lesen →TestautomatisierungTDD vs. BDD: Hauptunterschiede, eine Funktion, die auf beide Arten entwickelt wurde und wann sie jeweils verwendet werden sollte
TDD vs. BDD erklärt mit einer Rabattfunktion, die in beide Richtungen aufgebaut ist: Rot-Grün-Refaktor mit Code, den wir ausgeführt haben, Gegeben-W…
Artikel lesen →SoftwaretestsBenutzerakzeptanztests (UAT): Prozess, Checkliste und reale Beispiele
Benutzerakzeptanztests erklärt: Wer führt ihn durch, wie unterscheidet er sich von der Qualitätssicherung, ein siebenstufiger Prozess, eine UAT-Test…
Artikel lesen →Datenbanken & SQLErklärte SQL-NULL-Werte: IS NULL, COALESCE, NULLIF und die zu vermeidenden Fallen
SQL-NULL-Werte, die mit von uns ausgeführten Abfragen erklärt wurden: dreiwertige Logik, IS NULL, COALESCE, NULLIF, wie Aggregate, Joins und Sortier…
Artikel lesen →Datenbanken & SQLSQL CASE WHEN-Anweisung: Syntax, reale Beispiele und häufige Fehler
SQL CASE WHEN anhand der von uns ausgeführten Abfragen erklärt: einfache und durchsuchte Formulare, Bedingungsreihenfolge, Pivots mit SUM, COUNT-Tri…
Artikel lesen →SoftwareentwicklungWas ist JWT? JSON-Web-Tokens anhand eines funktionierenden Beispiels erklärt
Was ist JWT? JSON Web Tokens erklärt: die drei Teile, ein Token, das in dem von uns ausgeführten Code erstellt und manipuliert wurde, JWT vs. Sitzun…
Artikel lesen →SoftwareentwicklungErklärte JavaScript-Ereignisschleife: Aufrufstapel, Mikrotasks und Timer mit Beispielen
Die JavaScript-Ereignisschleife wurde mit dem von uns ausgeführten Code erklärt: Aufrufstapel, Aufgaben- und Mikrotask-Warteschlangen, warum setTime…
Artikel lesen →SoftwareentwicklungErklärung von Python-Generatoren und -Ertrag: Sparen Sie Speicher mit echten Beispielen
Python-Generatoren und Yield anhand des von uns ausgeführten Codes erklärt: wie sie angehalten und fortgesetzt werden, gemessene Speichereinsparunge…
Artikel lesen →Künstliche IntelligenzWas sind Einbettungen? Vektoren und Kosinusähnlichkeit einfach erklärt
Was sind Einbettungen? Ein Leitfaden in einfacher Sprache zu Vektoren, Kosinusähnlichkeit und semantischer Suche, mit einem kleinen Beispiel, das wi…
Artikel lesen →DevOpsBlau-Grün vs. Canary-Bereitstellung: Unterschiede, Kompromisse und Auswahl
Blue-Green vs. Canary-Bereitstellung erklärt: Funktionsweise, Kosten, Risiko und Rollback, stabiles Benutzer-Bucketing, das wir getestet haben, Date…
Artikel lesen →TestautomatisierungFlaky-Tests: Was sie verursacht und wie man sie endgültig behebt
Flaky-Tests wurden anhand von Demos erklärt, die wir durchgeführt haben: die Hauptursachen, wie man sie bestätigt und diagnostiziert, richtige Korre…
Artikel lesen →SoftwaretestsLasttest vs. Stresstest: Unterschiede, Metriken und k6-Beispiele
Erläuterungen zu Lasttests und Stresstests: Was die einzelnen Tests beweisen, Spike- und Soak-Tests, welche Kennzahlen wichtig sind, warum Durchschn…
Artikel lesen →SoftwaretestsTestfall vs. Testszenario: Hauptunterschiede, Beispiele und wann man sie jeweils verwendet
Testfall vs. Testszenario erklärt: klare Definitionen, eine Tabelle nebeneinander, eine Funktion zum Zurücksetzen von Passwörtern, die von Szenarios…
Artikel lesen →Datenbanken & SQLSQL-Abfrageoptimierung: Ausführungspläne lesen und langsame Abfragen mit Zeitvorgaben beheben
An einer Million Zeilen getestete SQL-Abfrageoptimierung: Ausführungspläne lesen, die richtigen Indizes hinzufügen, nicht sargierbare Filter korrigi…
Artikel lesen →Datenbanken & SQLSQL UNION vs. UNION ALL: Unterschiede, Beispiele und getestete Leistung
SQL UNION vs. UNION ALL anhand der von uns ausgeführten Abfragen erklärt: Duplikate, die Regeln, denen beide folgen, ein echter Datenfehler, gemesse…
Artikel lesen →SoftwareentwicklungTutorial zur JavaScript-Abruf-API: GET, POST, Fehlerbehandlung und Zeitüberschreitungen
Ein JavaScript-Abruf-API-Tutorial, das auf einem lokalen Server getestet wurde: GET und POST, warum 404 nicht ausgelöst wird, ein wiederverwendbarer…
Artikel lesen →SoftwareentwicklungUmgang mit Python-Dateien: Lesen, Schreiben, CSV, JSON und Pathlib mit Beispielen
Die Handhabung von Python-Dateien wird anhand des von uns ausgeführten Codes erklärt: Öffnungsmodi, Lesen großer Dateien, CSV, JSON, Pathlib, Binärd…
Artikel lesen →SoftwareentwicklungPython-Klassen und -Objekte: OOP-Tutorial mit echten Beispielen
Python-Klassen und -Objekte erklärt mit Code, den wir ausgeführt haben: __init__, Methoden, Klassen- und Instanzattribute, Vererbung, Eigenschaften,…
Artikel lesen →Künstliche IntelligenzWas ist ein großes Sprachmodell? Wie LLMs funktionieren, ohne großen Hype erklärt
Was ist ein großes Sprachmodell? LLMs im Klartext erklärt: Token, Einbettungen, Aufmerksamkeit, Training, Temperatur- und Kontextfenster, eine klein…
Artikel lesen →DevOpsLinux-Befehle für Anfänger: Der grundlegende Terminal-Leitfaden mit Beispielen
Linux-Befehle für Anfänger, gruppiert nach Aufgaben: Navigation, Dateien, Anzeigen von Protokollen, Grep, Pipes, Berechtigungen, Prozesse und Archiv…
Artikel lesen →TestautomatisierungSelenium vs. Playwright: Hauptunterschiede, Code im Vergleich und welche Sie wählen sollten
Selenium vs. Playwright im Vergleich: Architektur, Wartezeit, Browser- und Sprachunterstützung, Debugging, der gleiche Test in beiden Tools, Migrati…
Artikel lesen →SoftwaretestsÄquivalenzpartitionierung: Testdesigntechnik anhand von Beispielen erklärt
Erklärung der Äquivalenzpartitionierung: Wie man gültige und ungültige Partitionen findet, Beispiele für Alter, Passwörter und Gutscheine, von uns d…
Artikel lesen →SoftwaretestsSchweregrad vs. Priorität beim Softwaretest: Unterschiede, Matrix und reale Beispiele
Schweregrad vs. Priorität beim Softwaretest erklärt: klare Definitionen, eine Vier-Wege-Matrix mit Beispielen, Stufenskalen, wer die einzelnen Punkt…
Artikel lesen →Datenbanken & SQLTutorial zu SQL-Unterabfragen: Typen, korrelierte Unterabfragen und EXISTS mit Beispielen
Ein SQL-Unterabfrage-Tutorial mit Abfragen, die wir ausgeführt haben: Skalar-, IN-, FROM- und SELECT-Unterabfragen, korrelierte Unterabfragen, EXIST…
Artikel lesen →Datenbanken & SQLSQL-Transaktionen und ACID erklärt: COMMIT, ROLLBACK und Isolationsstufen
SQL-Transaktionen und ACID anhand einer von uns durchgeführten Banküberweisung erklärt: COMMIT, ROLLBACK, Sicherungspunkte, Sperren, Isolationsstufe…
Artikel lesen →SoftwareentwicklungGit merge vs rebase: Unterschiede, Beispiele und wann man was nutzt
Git merge vs rebase erklärt mit echter Log-Ausgabe, einer Vergleichstabelle, der goldenen Regel des Rebase und einem sicheren Team-Workflow.
Artikel lesen →SoftwareentwicklungPython List Comprehension: Syntax, Beispiele und wann man darauf verzichtet
Python List Comprehension erklärt: Syntax, Filter, if-else, verschachtelte Schleifen, gemessene Zeiten und Fälle, in denen eine normale for-Schleife…
Artikel lesen →Datenbanken & SQLSQL Joins erklärt mit Beispielen (Inner, Left, Right, Full)
SQL Joins Schritt für Schritt mit Beispieltabellen und Abfragen verstehen: INNER, LEFT, RIGHT, FULL, CROSS und SELF, plus typische Fehler und Perfor…
Artikel lesen →