Implementieren von Vektordatentypen und Vektorsuche
SQL Server 2025 umfasst native Unterstützung für Vektordatentypen und Vektorsuche . Mit diesem Feature können Sie hochdimensionale Vektoreinbettungen zusammen mit ihren relationalen Daten speichern und Ähnlichkeitssuchen durchführen, sodass Anwendungen erstellt werden können, die semantische Beziehungen in Ihren Daten verstehen.
Die Vektorsuche behebt Einschränkungen in herkömmlichen Datenbankabfragen. Herkömmliche Datenbanken zeichnen sich in exakten Übereinstimmungen und strukturierten Abfragen aus, aber sie kämpfen mit dem Verständnis von Kontext und Bedeutung. Die Vektorsuche ändert dies, indem das semantische Verständnis ermöglicht wird– die Möglichkeit, konzeptuelle ähnliche Elemente zu finden, auch wenn sie keine genauen Schlüsselwörter teilen. Beispielsweise kann eine Suche nach "komfortablen Laufschuhen" Produkte finden, die als "gepolsterte Sportschuhe" beschrieben werden, da ihre Vektoreinbettungen eine ähnliche semantische Bedeutung erfassen.
Für Entwickler bedeutet dies, dass Sie intelligente Anwendungen erstellen können, ohne separate Vektordatenbanken oder komplexe Datensynchronisierungsprozesse zu verwalten. Indem Sie Ihre Vektoren zusammen mit ihren relationalen Daten in SQL Server beibehalten, die ACID-Compliance beibehalten, vorhandene Sicherheitsrichtlinien verwenden, vertraute T-SQL-Syntax verwenden und Ihre Architektur vereinfachen. Diese Integration gilt für Szenarien wie:
- Semantische Suche und Empfehlungen: Suchen relevanter Produkte, Dokumente oder Inhalte basierend auf Bedeutung und nicht nur Schlüsselwörtern
- Fragebeantwortungssysteme: Power-Chatbots und virtuelle Assistenten, die Abfragen natürlicher Sprachen über Ihre Unternehmensdaten verstehen
- Anomalieerkennung: Identifizieren Sie ungewöhnliche Muster, indem Sie Datenpunkte finden, die semantisch von normalem Verhalten entfernt sind
- Inhaltsdeduplizierung: Erkennen ähnlicher oder doppelter Elemente, selbst wenn sie anders formuliert sind
- Personalisierungsmodule: Zuordnen von Benutzereinstellungen zu Produkten oder Inhalten basierend auf differenzierter Ähnlichkeit
Erkunden des Vektordatentyps
Der Vektordatentyp in SQL Server 2025 wurde entwickelt, um Arrays von Gleitkommazahlen effizient zu speichern. Vektoren werden häufig verwendet, um Einbettungen darzustellen, die von KI-Modellen generiert werden, wobei jede Dimension bestimmte Features oder semantische Merkmale der Daten erfasst.
Erkunden der wichtigsten Merkmale
- Optimiertes Speicherformat: Vektoren werden intern in einem optimierten Binärformat gespeichert, werden jedoch als JSON-Arrays zur Benutzerfreundlichkeit und Kompatibilität verfügbar gemacht.
- Flexible Präzision: Jedes Element im Vektor kann als Gleitkommawert mit einfacher Genauigkeit (4 Byte) oder als Gleitkommawert mit halber Genauigkeit (2 Byte) gespeichert werden, wodurch Sie Genauigkeit und Speichereffizienz ausgleichen können.
- Bemaßungsunterstützung: SQL Server 2025 unterstützt Vektoren mit bis zu 1998 Dimensionen für einzelpräzision und 3.996 Dimensionen für die halbe Genauigkeit, wobei eine breite Palette von Einbettungsmodellen unterstützt wird.
Erstellen und Speichern von Vektoren
Sie können Vektoren erstellen, indem Sie JSON-Arrays in den vector Datentyp umwandeln. Ein Beispiel:
-- Create a vector from a JSON array
DECLARE @v1 VECTOR(3) = '[1.0, -0.2, 30]';
DECLARE @v2 VECTOR(3) = JSON_ARRAY(1.0, -0.2, 30);
SELECT @v1 AS v1, @v2 AS v2;
Dieser Code veranschaulicht zwei Möglichkeiten zum Erstellen eines 3-dimensionalen Vektors: durch direktes Umwandeln eines JSON-Zeichenfolgenliterals oder mithilfe der JSON_ARRAY Funktion. Beide Methoden erzeugen dasselbe Ergebnis, wobei die Werte [1,0, -0,2, 30] in einem Vektordatentyp gespeichert werden.
So speichern Sie Vektoren in einer Tabelle:
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name NVARCHAR(100),
description NVARCHAR(MAX),
embedding VECTOR(1536) -- Common dimension for OpenAI embeddings
);
Dieser Code erstellt eine Tabelle zum Speichern von Produktinformationen zusammen mit einem 1536-dimensionalen Vektoreinbettung. Die Bemaßungsgröße von 1536 wird häufig mit OpenAI-Modellen zum Einbetten von Text verwendet, sodass diese Tabelle bereit ist, um aus Produktbeschreibungen generierte Einbettungen zu speichern.
Konvertieren von Vektoren in JSON
Sie können Vektoren einfach zurück in JSON-Arrays für die Anzeige oder Verarbeitung konvertieren:
DECLARE @v VECTOR(3) = '[1.0, -0.2, 30]';
SELECT
CAST(@v AS NVARCHAR(MAX)) AS string_representation,
CAST(@v AS JSON) AS json_representation;
Dieser Code konvertiert einen Vektor zurück in lesbare Formate. Die CAST bis NVARCHAR(MAX) geben den Vektor als Zeichenfolge zurück, während die CAST bis JSON ihn als JSON-Array zurückgeben, was für die Interoperabilität mit Anwendungen und APIs nützlich ist.
Genaue Nächste Nachbarsuche durchführen (k-NN)
Exakte nächste Nachbarschaftssuche (k-NN) umfasst die Berechnung des Abstands zwischen einem Abfragevektor und allen Vektoren in Ihrem Datensatz, wobei dann die k nächsten Übereinstimmungen zurückgegeben werden. Diese Methode garantiert präzise Ergebnisse, kann aber rechenintensiv für große Datasets sein.
Verwenden der VECTOR_DISTANCE-Funktion
Die VECTOR_DISTANCE Funktion misst die Ähnlichkeit zwischen zwei Vektoren unter Verwendung einer angegebenen Abstandsmetrik:
DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
N'Pink Floyd music style'
USE MODEL Ada2Embeddings
);
SELECT TOP (10)
product_id,
product_name,
VECTOR_DISTANCE('cosine', @query_vector, embedding) AS distance
FROM products
ORDER BY distance;
Diese Abfrage generiert eine Einbettung für den Text "Pink Floyd music style" mit dem Ada2Embeddings-Modell und findet dann die 10 Produkte mit Einbettungen, die der Abfrage am ehesten ähneln. Die VECTOR_DISTANCE Funktion berechnet den Kosinusabstand zwischen dem Abfragevektor und der Einbettung jedes Produkts mit kleineren Abständen, die eine größere Ähnlichkeit angeben.
Entfernungsmetriken auswählen
SQL Server 2025 unterstützt mehrere Entfernungsmetriken:
- Kosinus-Ähnlichkeit: Misst den Winkel zwischen Vektoren, ideal für Text-Einbettungen
- Euklidischer Abstand: Misst geraden Abstand im Vektorraum
- Skalarprodukt: Nützlich für normalisierte Vektoren
Ermitteln, wann die genaue Suche verwendet werden soll
Genaue Suche wird empfohlen, wenn:
- Sie haben weniger als 50.000 Vektoren für die Suche
- Ihre Abfrage-Prädikate filtern das Dataset auf eine verwaltbare Größe
- Sie benötigen einen perfekten Rückruf (100% Genauigkeit)
- Die zusätzlichen Rechenkosten sind akzeptabel.
Implementieren der ungefähren Nächstnachbarsuche (ANN)
Bei größeren Datensätzen bietet die annäherte Nachbarsuche (ANN) ein Gleichgewicht zwischen Geschwindigkeit und Genauigkeit. SQL Server 2025 implementiert ANN mithilfe des DiskANN-Algorithmus, der einen graphbasierten Index für eine effiziente Vektornavigation erstellt.
Rückruf verstehen
Recall misst den Anteil der wahren nächsten Nachbarn, die ein ANN-Algorithmus im Vergleich zur exakten Suche identifiziert. Ein Recall von 1,0 (100 %) bedeutet, dass die ungefähre Suche die gleichen Ergebnisse liefert wie die exakte Suche. In der Praxis liefern Erinnerungswerte über 0,95 oft ausgezeichnete Ergebnisse für KI-Anwendungen und bieten bedeutende Leistungsverbesserungen.
Erstellen von Vektorindizes
Um die ANN-Suche zu aktivieren, erstellen Sie einen Vektorindex in Ihrer Vektorspalte:
CREATE VECTOR INDEX idx_product_embedding
ON products(embedding);
Dieser Code erstellt einen Vektorindex für die Einbettungsspalte mithilfe des DiskANN-Algorithmus. Der Index verbessert die Leistung der approximativen Suche nach dem nächsten Nachbarn in großen Datasets, indem er eine Graphstruktur für eine effiziente Vektornavigation schafft.
Vektorindizes in SQL Server 2025:
- Verwenden des DiskANN-Algorithmus für eine effiziente graphbasierte Suche
- Unterstützung begrenzter Arbeitsspeicher und CPU-Ressourcen
- Ausgleich zwischen Datenträger-E/A, Speicherauslastung und Abfrageleistung
- Automatische Aktualisierung bei Datenänderungen
Verwenden der VECTOR_SEARCH-Funktion
Die VECTOR_SEARCH Funktion führt ungefähre Nachbarsuchen durch:
DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
N'Pink Floyd music style'
USE MODEL Ada2Embeddings
);
SELECT
t.product_id,
t.product_name,
s.distance
FROM
VECTOR_SEARCH(
TABLE = products AS t,
COLUMN = embedding,
SIMILAR_TO = @query_vector,
METRIC = 'cosine',
TOP_N = 10
) AS s
ORDER BY s.distance;
Diese Abfrage führt eine ungefähre Nachbarsuche mithilfe des zuvor erstellten Vektorindex aus. Die VECTOR_SEARCH Funktion verwendet den DiskANN-Algorithmus, um die 10 ähnlichsten Produkte zu finden, ohne alle Vektoren zu scannen und leistungsverbesserungen für große Datasets bereitzustellen und gleichzeitig hohe Genauigkeit zu gewährleisten.
Leistungsvorteile berücksichtigen
ANN-Suchangebote:
- Schnellere Abfrageausführung: Besonders für Datasets mit Millionen von Vektoren
- Geringerer Ressourcenverbrauch: Reduzierte CPU- und Arbeitsspeicherauslastung im Vergleich zur exakten Suche
- Skalierbarkeit: Verarbeitet große Vektordatensätze effizient
- Hoher Rückruf: Erzielt in der Regel Rückrufraten über 95%, wodurch Qualitätsergebnisse sichergestellt werden
Erstellen von Hybridsuchszenarien
SQL Server 2025 unterstützt die Kombination der Vektorsuche mit herkömmlichen SQL-Vorgängen für Hybridsuchszenarien.
Kombinieren der Semantik- und Schlüsselwortsuche
Sie können die semantische Suche mithilfe von Vektoren ausführen und gleichzeitig herkömmliche Filter anwenden:
DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
N'comfortable running shoes'
USE MODEL Ada2Embeddings
);
SELECT
t.product_id,
t.product_name,
t.category,
t.price,
s.distance
FROM
VECTOR_SEARCH(
TABLE = products AS t,
COLUMN = embedding,
SIMILAR_TO = @query_vector,
METRIC = 'cosine',
TOP_N = 20
) AS s
WHERE
t.category = 'Footwear'
AND t.price BETWEEN 50 AND 150
ORDER BY s.distance;
Diese Hybridsuche kombiniert semantische Ähnlichkeitssuche mit herkömmlicher SQL-Filterung. Zunächst findet es die 20 semantisch ähnlichsten Produkte wie "bequeme Laufschuhe", und filtert diese Ergebnisse dann so, dass nur Schuhe mit einem Preis von 50 USD und 150 USD enthalten sind. Dieser Ansatz ermöglicht eine präzise Zielbestimmung bei Verwendung des semantischen Verständnisses.
Integrieren der Volltext- und Vektorsuche
Kombinieren Sie die Volltextsuche mit der Vektorsuche für umfassende Ergebnisse:
DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
N'sustainable materials'
USE MODEL Ada2Embeddings
);
SELECT
t.product_id,
t.product_name,
s.distance,
fts.RANK AS text_rank
FROM
VECTOR_SEARCH(
TABLE = products AS t,
COLUMN = embedding,
SIMILAR_TO = @query_vector,
METRIC = 'cosine',
TOP_N = 50
) AS s
INNER JOIN CONTAINSTABLE(products, description, 'sustainable OR eco-friendly') AS fts
ON t.product_id = fts.[KEY]
ORDER BY (s.distance * 0.6) + ((1.0 - fts.RANK/1000.0) * 0.4);
Diese Abfrage kombiniert die Vektorsuche mit der Volltextsuche. Es findet Produkte semantisch ähnlich wie "nachhaltige Materialien" unter Verwendung von Vektoreinbettungen und verbindet sich dann mit Volltextsuchergebnissen für Schlüsselwörter "nachhaltig" oder "umweltfreundlich" in der Beschreibung. Die endgültige Rangfolge kombiniert beide Bewertungen mit einer gewichteten Formel (60% semantische Ähnlichkeit, 40% Schlüsselwort-Übereinstimmung).
Anwenden von bewährten Methoden
Bei der Implementierung der Vektorsuche in SQL Server 2025:
- Wählen Sie die richtige Genauigkeit aus: Verwenden Sie die halbe Genauigkeit für größere Dimensionen, wenn die Speicherung ein Problem darstellt.
- Index strategisch: Erstellen Sie Vektorindizes für Spalten, die häufig durchsucht werden
- Rückruf überwachen: Testen Sie Ihre ANN-Abfragen, um akzeptable Rückrufraten für Ihren Anwendungsfall sicherzustellen.
- Optimieren von Abfragen: Verwenden Sie geeignete Filter, um den Suchbereich vor Vektorvorgängen zu reduzieren.
- Batchvorgänge: Generieren und Einfügen von Einbettungen in Batches zur besseren Leistung
Mithilfe dieser Vektorfunktionen können Sie KI-basierte Anwendungen erstellen, die semantische Beziehungen verstehen, intelligente Empfehlungen bereitstellen und Oberflächen für die Suche in natürlicher Sprache bereitstellen – alles innerhalb der vertrauenswürdigen SQL Server-Plattform.