Grundlegendes zur semantischen Suche
Sehen wir uns die Grundlagen der semantischen Suche an:
- Wie es sich von der lexikalischen Standardsuche unterscheidet.
- Was ist Vektoreinbettung?
- Was tun Vektordatenbanken?
Was ist die semantische Suche?
Standardmäßige lexikalische Suche oder Stichwortsuche fragt Dokumente nach übereinstimmenden Zeichen ab. Die Abfrage "light" entspricht z. B. dem Text "helles Licht", da das Zeichen light im Dokument angezeigt wird.
Die lexikalische Suche kann mit Fuzzyübereinstimmung erweitert werden. Die Abfrage „light“ könnte z. B. weiterhin mit dem Text „bright light“ oder dem falsch geschriebenen Text lihgts übereinstimmen, da ein Zeichen abweichend ist (ein fehlender s, oder Austausch von g und h). Während Fuzzyabgleich und andere Techniken wie Stemming hilfreich sind, sollte diese Technik Synonyme oder semantisch ähnliche Sprache erkennen: unterschiedliche Formulierungen, Slang, technisches Vokabular usw. Um die relevantesten Suchergebnisse mit einer lexikalischen Suche bereitzustellen, müssen Autoren Schlüsselwörter in Metadaten oder den Text selbst integrieren (was für den Benutzer umständlich sein kann).
Geben Sie die semantische Suche ein. Die semantische Suche verwendet keine Zeichenähnlichkeit. Stattdessen werden numerische Darstellungen der Konzepte in Wörtern und Ausdrücken verwendet. Diese numerischen Darstellungen werden als Einbettungsvektoren oder einfach Einbettungen bezeichnet.
Wenn zwei Einbettungen numerisch ähnlich sind, sind sie auch semantisch ähnlich. Diese Ähnlichkeit ist allgemeiner als das Testen von Schlüsselwortüberlappungen, da sie weniger empfindlich für präzise Stichwortauswahl oder Ausdrücke ist.
Um eine semantische Suche durchzuführen, generieren Sie zuerst den Einbettungsvektor der Abfrage. Vergleichen Sie diesen Vektor dann mit einer Datenbank von Vektoren. Die Einbettungen, die der Abfrageeinbettung am nächsten sind, sind die Dokumente, die der Abfrage semantisch am ähnlichsten sind.
Die meisten relationalen Datenbank-Anwendungsfälle umfassen nicht das Speichern von n-dimensionalen Vektoren und das Berechnen des numerischen Abstands zwischen diesen. Effiziente semantische Suche erfordert Vektordatenbankfunktionen .
Einbettungen
Eine Einbettung ist eine numerische Darstellung der Semantik. Einbettungen werden als ndimensionale Vektoren dargestellt: Arrays von n Zahlen. Jede Dimension stellt eine semantische Qualität dar, die durch das Einbettungsmodell bestimmt wird.
Wenn zwei Einbettungsvektoren in ähnliche Richtungen zeigen, stellen sie ähnliche Konzepte dar, z. B. "hell" und "sonnig". Wenn sie voneinander weggehen, stellen sie entgegengesetzte Konzepte dar, z. B. "traurig" und "glücklich". Die Einbettungsmodellstruktur und Schulungsdaten bestimmen, was als ähnlich und anders betrachtet wird.
Einbettungen können auf Text und jede Art von Daten angewendet werden, z. B. Bilder oder Audio. Der kritische Teil wandelt Daten basierend auf einem Modell oder einer Funktion in ndimensionale Einbettungsvektoren um. Die numerische Ähnlichkeit von Einbettungen dient als Indikator für die semantische Ähnlichkeit ihrer entsprechenden Daten.
Die numerische Ähnlichkeit von zwei ndimensionalen Vektoren v1 und v2 wird durch ihr Punktprodukt angegeben, geschrieben v1·v2. Um das Punktprodukt zu berechnen, multiplizieren Sie die Werte der einzelnen Dimensionen paarweise, und summieren Sie dann das Ergebnis:
dot_product(v1, v2) = SUM(
v1[0] * v2[0],
v1[1] * v2[1],
...,
v1[n-1] * v2[n-1],
v1[n] * v2[n]
)
Da es sich bei den Einbettungen um Einheitsvektoren (Vektoren der ersten Länge) handelt, ist das Punktprodukt gleich der Kosinusgleichheit der Vektoren, ein Wert zwischen -1 (genau entgegengesetzte Richtung) und 1 (genau die gleiche Richtung). Vektoren mit einer Kosinusähnlichkeit von Null sind orthogonal: semantisch nicht verknüpft.
Sie können ndimensionale Räume visualisieren, indem Sie sie mithilfe der Hauptkomponentenanalyse (PCA) in einen dreidimensionalen Raum projizieren. PCA ist eine Standardtechnik zum Reduzieren von Vektorabmessungen. Das Ergebnis ist eine vereinfachte, aber visuelle Projektion des ndimensionalen Raums. Das Rendern von Dokumenteinbettungen auf diese Weise zeigt, dass ähnliche Dokumente in Clustern gruppiert werden, während weitere unterschiedliche Dokumente entfernt sind.
Aufgrund dieser Definitionen ist das Ausführen einer semantischen Suche einer Abfrage für eine Sammlung von Dokumenteinbettungen mathematisch einfach:
- Generieren Sie die Abfrageeinbettung mithilfe eines Sprachmodells.
- Nehmen Sie das Skalarprodukt der Abfrageeinbettung für die vorab berechnete Einbettung jedes Dokuments an.
- Sortieren Sie die Skalarprodukte; Zahlen von -1 bis 1.
- Die relevantesten (semantisch ähnlichen) Dokumente weisen die höchsten Bewertungen auf, und die am wenigsten relevanten (semantisch unterschiedlichen) Dokumente weisen die niedrigsten Bewertungen auf.
Obwohl dies mathematisch einfach ist, handelt es sich nicht um eine einfache oder performante Abfrage in einer relationalen Datenbank. Verwenden Sie eine Vektordatenbank, um diese Art von Vektorähnlichkeitsabfrage zu speichern und zu verarbeiten.
Vektordatenbanken
Eine Vektordatenbank optimiert die Speicherung und Berechnung von ndimensionalen Vektoren, z. B. Einbettungen. Insbesondere bieten Vektordatenbanken schnelle und genaue Punktproduktberechnungen zum Ausführen einer Vektor-Ähnlichkeitsabfrage.
Vektorähnlichkeitssuchen weisen mehrere Anwendungsfälle auf:
- Suchen nach Bildern ähnlich der Einbettung des Abfragebilds
- Suchen von Dokumenten semantisch ähnlich dem Abfragetext
- Suchen von Produkten mit ähnlichen Features und Bewertungen für ein Empfehlungssystem
Die semantische Suche fragt die Vektordatenbank nach der Ähnlichkeit der Abfrageeinbettung mit den einzelnen gespeicherten Einbettungen ab. Anwendungen können dann die Daten abrufen, die den Einbettungen entsprechen.
Es gibt viele systemeigene Vektordatenbanken und Datenbankerweiterungen, aus denen Sie auswählen können. Die folgenden Azure-Dienste können Ihnen dabei helfen, Ihre Vektordatenbankanforderungen zu erfüllen: