Teilen über


Vektor- und Einbettungen: Häufig gestellte Fragen (FAQ)

Gilt für: SQL Server 2025 (17.x) Azure SQL-Datenbank AzureSQL Managed InstanceSQL SQL-Datenbank in Microsoft Fabric

Dieser Artikel enthält häufig gestellte Fragen zu Vektoren und Einbettungen im SQL-Datenbankmodul.

Hinweis

Vektor-Funktionen sind in Azure SQL Managed Instance verfügbar, die mit der Always-up-to-date-Richtlinie konfiguriert ist.

Wie halte ich die Einbettung auf dem neuesten Stand?

Aktualisieren Sie Einbettungen jedes Mal, wenn die zugrunde liegenden Daten, die sie darstellen, Änderungen darstellen. Diese Vorgehensweise ist besonders wichtig für Szenarien, in denen die Daten dynamisch sind, z. B. vom Benutzer generierte Inhalte oder häufig aktualisierte Datenbanken. Weitere Informationen zu mehreren Strategien, um Einbettungen auf dem neuesten Stand zu halten, finden Sie unter Datenbank und KI: Lösungen für die Aktualisierung von Einbettungen.

Der Aufwand für die Vektorsuche umfasst in erster Linie die Speicherung des Vektordatentyps und die rechentechnischen Ressourcen, die für die Indizierung und Suche erforderlich sind. Der Vektordatentyp ist so konzipiert, dass er in Bezug auf den Speicher effizient ist, aber der genaue Aufwand kann je nach Größe - der Anzahl der Dimensionen - der gespeicherten Vektoren variieren.

Weitere Informationen zum Auswählen der richtigen Vektorgröße finden Sie unter Einbetten von Modellen und Dimensionen: Optimieren des Leistungsressourceneinsatzverhältnisses.

Eine SQL Server-Datenseite kann bis zu 8.060 Byte enthalten, sodass sich die Größe des Vektors darauf auswirkt, wie viele Vektoren auf einer einzelnen Seite gespeichert werden können. Wenn Sie beispielsweise einen Vektor mit 1.024 Dimensionen haben und jede Dimension ein einzelner Genauigkeits-Float (4 Byte) ist, beträgt die Gesamtgröße des Vektors 4.104 Bytes (4.096 Bytes Nutzlast + 8 Bytes Kopfzeile). Diese Größe begrenzt die Anzahl der Vektoren, die auf eine einzelne Seite passen.

Welches Einbettungsmodell sollte ich verwenden und wann?

Viele Einbettungsmodelle sind verfügbar. Die Auswahl hängt von Ihrem jeweiligen Anwendungsfall und dem Datentyp ab, den Sie verarbeiten. Einige Modelle unterstützen mehrere Sprachen, während andere multimodale Daten (Text, Bilder und mehr) unterstützen. Einige Modelle sind nur online verfügbar, während andere lokal ausgeführt werden können.

Berücksichtigen Sie neben dem Modell selbst auch die Größe des Modells und die Anzahl der erzeugten Dimensionen. Größere Modelle bieten möglicherweise eine bessere Genauigkeit, erfordern jedoch mehr Rechenressourcen und Speicherplatz. In vielen Fällen ändert sich die Qualität bei häufigen Anwendungsfällen mit mehr Dimensionen nicht erheblich.

Weitere Informationen zum Auswählen des richtigen Einbettungsmodells finden Sie unter Einbetten von Modellen und Dimensionen: Optimieren des Leistungsressourceneinsatzverhältnisses.

Wie entscheide ich, wann Gleitkommawerte mit einfacher Genauigkeit (4 Byte) im Vergleich zu Gleitkommawerten mit halber Genauigkeit (2 Byte) für Vektoren verwendet werden sollen?

Wenn Sie Einbettungsvektoren in einer Datenbank speichern, müssen Sie häufig die Speichereffizienz mit numerischer Genauigkeit ausgleichen, wenn Sie zwischen Einzelgenauigkeit (float32) und Halbgenauigkeit (float16) Gleitkommazahlen wählen.

Glücklicherweise sind Einbettungen in der Regel nicht sehr empfindlich auf kleine Änderungen der Genauigkeit.

Einbettungen sind dichte Vektordarstellungen, die in Aufgaben wie der semantischen Suche, Empfehlungssystemen und der Verarbeitung natürlicher Sprachen verwendet werden. Diese Vektoren stammen häufig aus neuralen Netzwerken, die inhärent gegenüber kleinen numerischen Variationen tolerant sind. Daher hat die Reduzierung der Genauigkeit von float32 zu float16 der Regel minimale Auswirkungen auf die Qualität von Ähnlichkeitsvergleichen oder nachgelagerten Vorgängen, insbesondere während der Ableitung.

Die Verwendung float16 kann die Speicher- und Speicherauslastung erheblich reduzieren, was besonders bei der Arbeit mit großen Einbettungsdatensätzen von Vorteil ist.

Was ist mit Sparse-Vektoren?

Derzeit ist der Vektordatentyp im SQL-Datenbankmodul für dichte Vektoren ausgelegt. Diese Vektoren sind Arrays von Gleitkommazahlen, bei denen die meisten Elemente ungleich Null sind. Geringe Vektoren, die eine erhebliche Anzahl von Nullelementen enthalten, werden nicht nativ unterstützt.

Die Leistung kann stark abhängig vom jeweiligen Anwendungsfall, der Größe des Datasets und der Komplexität der Abfragen variieren. Die Vektorsuchfunktionen von SQL Server sind jedoch effizient und skalierbar. Sie verwenden Indizierungstechniken, um die Suchleistung zu optimieren.

Was geschieht, wenn ich mehr als eine Spalte habe, die ich zum Generieren von Einbettungen verwenden möchte?

Wenn Sie über mehrere Spalten verfügen, die Sie zum Generieren von Einbettungen verwenden möchten, haben Sie zwei Hauptoptionen:

  • Erstellen Sie eine Einbettung für jede Spalte oder
  • Verketten Sie die Werte mehrerer Spalten in eine einzelne Zeichenfolge, und generieren Sie dann eine einzelne Einbettung für diese verkettete Zeichenfolge.

Weitere Informationen zu diesen beiden Optionen und den zugehörigen Überlegungen zum Datenbankentwurf finden Sie unter Effizientes und elegantes Modellieren von Embeddings.

Was ist mit einer Neubewertung?

Die Erneute Rangfolge verbessert die Relevanz der Suchergebnisse, indem die ersten Ergebnisse basierend auf zusätzlichen Kriterien oder Modellen erneut ausgewertet werden. Im SQL-Datenbankmodul können Sie eine erneute Rangfolge implementieren, indem Sie die Vektorsuche mit der Volltextsuche (die BM25-Rangfolge bereitstellt) oder mithilfe zusätzlicher SQL-Abfragen oder Machine Learning-Modelle die Ergebnisse basierend auf bestimmten Geschäftslogik- oder Benutzereinstellungen verfeinern.

Weitere Informationen finden Sie unter Verbessern der Suchfunktionen mit hybrider Suche und RRF Re-Ranking.

Eine verfeinerte Neubewertungsmethode wird als semantische Neubewertung bezeichnet. Das semantische Re-Ranking basiert auf einem speziellen Modell (häufig ein Cross-Encoder oder ein später Interaktionsansatz), um jede Kandidatenpassage mit der Abfrage zu vergleichen und einen detaillierten Relevanzscore zuzuweisen. Durch die Neubewertung dieser Passagen stellen Reranker sicher, dass die präzisesten, nützlichsten und relevantesten Ergebnisse an die Spitze gelangen.

Ein Beispiel für die Verwendung eines Neubewertungsmodells finden Sie unter Semantic Reranking with Azure SQL, SQL Server 2025 and Cohere Rerank models.

Wann sollte ich KI-Suche (jetzt KI Foundry) im Vergleich zur Verwendung von SQL für Vektorsuchszenarien verwenden?

AI Search (jetzt AI Foundry) ist ein spezieller Dienst, der für erweiterte Suchszenarien entwickelt wurde, einschließlich Vektorsuche, Verarbeitung natürlicher Sprachen und KI-gesteuerte Einblicke. Es bietet eine umfassende Reihe von Features für die Erstellung intelligenter Suchanwendungen, z. B. integrierte Unterstützung für verschiedene KI-Modelle, erweiterte Bewertungsalgorithmen und Integration in andere KI-Dienste.

Das SQL-Datenbankmodul bietet die Möglichkeit, jede Art von Daten zu speichern und jede Art von Abfrage auszuführen: strukturiert und unstrukturiert. Sie können die Vektorsuche für diese Daten ausführen. Es ist eine gute Wahl für Szenarien, in denen Sie alle diese Daten zusammen durchsuchen müssen, und Sie möchten keinen separaten Dienst für die Suche verwenden, der Ihre Architektur erschwert. Das SQL-Datenbankmodul bietet wichtige Unternehmenssicherheitsfeatures, um sicherzustellen, dass Daten immer geschützt sind, z. B. Sicherheit auf Zeilenebene (RLS), dynamische Datenmasken (DDM), Always Encrypted, unveränderliche Sachtabellen und transparente Datenverschlüsselung (TDE).

Hier ist ein Beispiel für eine einzelne Abfrage, die Sie in Azure SQL oder SQL Server ausführen können, die Vektor-, Geospatial-, strukturierte und unstrukturierte Daten auf einmal kombiniert. Die Beispielabfrage ruft die 50 relevantesten Restaurants basierend auf der Beschreibung des Restaurants, dem Standort des Restaurants und den Vorlieben des Benutzers ab. Es verwendet die Vektorsuche für die Beschreibung und geospatiale Suche nach dem Standort, filtert auch nach Sternzahlen, Anzahl der Rezensionen, Kategorie und anderen Attributen.

DECLARE @p AS GEOGRAPHY = GEOGRAPHY::Point(47.6694141, -122.1238767, 4326);
DECLARE @e AS VECTOR(1536) = AI_GENERATE_EMBEDDINGS('I want to eat a good focaccia' USE MODEL Text3Embedding);

SELECT TOP (50) b.id AS business_id,
                b.name AS business_name,
                r.id AS review_id,
                r.stars,
                r.review,
                VECTOR_DISTANCE('cosine', re.embedding, @e) AS semantic_distance,
                @p.STDistance(geo_location) AS geo_distance
FROM dbo.reviews AS r
     INNER JOIN dbo.reviews_embeddings AS re
         ON r.id = re.review_id
     INNER JOIN dbo.business AS b
         ON r.business_id = b.id
WHERE b.city = 'Redmond'
      AND @p.STDistance(b.geo_location) < 5000 -- 5 km
      AND r.stars >= 4
      AND b.reviews >= 30
      AND JSON_VALUE(b.custom_attributes, '$.local_recommended') = 'true'
      AND VECTOR_DISTANCE('cosine', re.embedding, @e) < 0.2
ORDER BY semantic_distance DESC;

Im vorherigen Beispiel findet die 'Exact Nearest Neighbor' (ENN)-Suche die relevantesten Rezensionen auf Grundlage der semantischen Distanz der Einbettungen und filtert gleichzeitig nach räumlicher Entfernung und anderen Geschäftsattributen. Diese Abfrage veranschaulicht die Leistungsfähigkeit der Kombination der Vektorsuche mit herkömmlichen SQL-Funktionen, um eine umfangreiche und effiziente Suchumgebung zu schaffen.

Wenn Sie die Suche "Näherste Nachbar( ANN)" verwenden möchten, können Sie einen Vektorindex für die reviews_embeddings Tabelle erstellen und die VECTOR_SEARCH Funktion verwenden, um die Suche auszuführen.

Überprüfen Sie das im eigenen Tempo durchführbare Azure SQL Cryptozoology AI Embeddings Labor.