Implementarea tipurilor de date vectoriale și a căutării vectoriale
SQL Server 2025 include suport nativ pentru tipurile de date vectoriale și căutarea vectorială. Această caracteristică vă permite să stocați încorporari vectoriale de înaltă dimensiune alături de datele relaționale și să efectuați căutări de similitudine, făcând posibilă crearea de aplicații care înțeleg relațiile semantice din datele dvs.
Căutarea vectorială abordează limitările în interogările tradiționale ale bazelor de date. Bazele de date tradiționale excelează la potriviri exacte și interogări structurate, dar se luptă cu înțelegerea contextului și a semnificației. Căutarea vectorială schimbă acest lucru permițând înțelegerea semantică - capacitatea de a găsi elemente similare conceptual chiar și atunci când nu împărtășesc cuvinte cheie exacte. De exemplu, o căutare pentru "pantofi de alergare confortabili" poate găsi produse descrise ca "încălțăminte sportivă amortizată", deoarece încorporarea lor vectorială captează o semnificație semantică similară.
Pentru dezvoltatori, acest lucru înseamnă că puteți construi aplicații inteligente fără a gestiona baze de date vectoriale separate sau procese complexe de sincronizare a datelor. Păstrând vectorii alături de datele relaționale în SQL Server, mențineți conformitatea ACID, utilizați politicile de securitate existente, utilizați sintaxa T-SQL familiară și simplificați arhitectura. Această integrare se aplică scenariilor precum:
- Căutare semantică și recomandări: Găsiți produse, documente sau conținut relevante pe baza semnificației, mai degrabă decât a cuvintelor cheie
- Sisteme de răspuns la întrebări: Alimentați chatbots și asistenți virtuali care înțeleg interogările în limbaj natural asupra datelor dvs.
- Detectarea anomaliilor: Identificați modele neobișnuite prin găsirea punctelor de date care sunt îndepărtate semantic de comportamentul normal
- Deduplicarea conținutului: Detectați elemente similare sau duplicate chiar și atunci când sunt formulate diferit
- Motoare de personalizare: Potrivirea preferințelor utilizatorului cu produsele sau conținutul pe baza similitudinii nuanțate
Explorați tipul de date vectoriale
Tipul de date vectoriale din SQL Server 2025 este conceput pentru a stoca eficient matricele de numere în virgulă mobilă. Vectorii sunt utilizați în mod obișnuit pentru a reprezenta încorporarile generate de modele AI, în care fiecare dimensiune captează caracteristici specifice sau caracteristici semantice ale datelor.
Explorați caracteristicile cheie
- Format de stocare optimizat: Vectorii sunt stocați într-un format binar optimizat intern, dar expuși ca matrice JSON pentru ușurință în utilizare și compatibilitate.
- Precizie flexibilă: Fiecare element din vector poate fi stocat folosind valori în virgulă mobilă cu o singură precizie (4 octeți) sau semiprecizie (2 octeți), permițându-vă să echilibrați acuratețea și eficiența stocării.
- Suport pentru dimensiuni: SQL Server 2025 acceptă vectori cu dimensiuni de până la 1998 pentru o singură precizie și 3.996 de dimensiuni pentru jumătate de precizie, găzduind o gamă largă de modele de încorporare.
Crearea și stocarea vectorilor
Puteți crea vectori prin turnarea matricelor JSON la tipul de vector date. Iată un exemplu:
-- 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;
Acest cod demonstrează două moduri de a crea un vector tridimensional: prin turnarea directă a unui șir JSON literal sau prin utilizarea JSON_ARRAY funcției. Ambele metode produc același rezultat, stocând valorile [1.0, -0.2, 30] într-un tip de date vectoriale.
Pentru a stoca vectori într-un tabel:
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name NVARCHAR(100),
description NVARCHAR(MAX),
embedding VECTOR(1536) -- Common dimension for OpenAI embeddings
);
Acest cod creează un tabel pentru a stoca informații despre produs împreună cu o încorporare vectorială de 1536 de dimensiuni. Dimensiunea dimensiunii 1536 este utilizată în mod obișnuit cu modelele de încorporare a textului OpenAI, ceea ce face ca acest tabel să fie gata pentru stocarea încorporarilor generate din descrierile produselor.
Convertiți vectorii în JSON
Puteți converti cu ușurință vectorii înapoi în matrice JSON pentru afișare sau procesare:
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;
Acest cod convertește un vector înapoi în formate lizibile.
CAST to NVARCHAR(MAX) returnează vectorul ca șir, în timp ce CAST to JSON îl returnează ca matrice JSON, ceea ce este util pentru interoperabilitatea cu aplicații și API-uri.
Efectuați căutarea exactă a celui mai apropiat vecin (k-NN)
Căutarea celui mai apropiat vecin exact (k-NN) implică calcularea distanței dintre un vector de interogare și toți vectorii din setul de date, apoi returnarea celor mai apropiate k potriviri. Această metodă garantează rezultate precise, dar poate fi intensivă din punct de vedere computațional pentru seturi mari de date.
Utilizați VECTOR_DISTANCE funcția
Funcția VECTOR_DISTANCE măsoară similitudinea dintre doi vectori folosind o metrică de distanță specificată:
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;
Această interogare generează o încorporare pentru textul "Stil muzical Pink Floyd" folosind modelul Ada2Embeddings, apoi găsește cele 10 produse cu încorporari cele mai asemănătoare cu interogarea. Funcția VECTOR_DISTANCE calculează distanța cosinus dintre vectorul de interogare și încorporarea fiecărui produs, distanțe mai mici indicând o similitudine mai mare.
Alegeți indicatorii de distanță
SQL Server 2025 acceptă mai multe valori de distanță:
- Asemănarea cosinusului: Măsoară unghiul dintre vectori, ideal pentru încorporarea textului
- Distanța euclidiană: Măsoară distanța în linie dreaptă în spațiul vectorial
- Produs punct: Util pentru vectorii normalizați
Determinați când să utilizați căutarea exactă
Căutarea exactă este recomandată atunci când:
- Aveți mai puțin de 50.000 de vectori de căutat
- Predicatele de interogare filtrează setul de date la o dimensiune gestionabilă
- Aveți nevoie de reamintire perfectă (precizie de 100%)
- Costul suplimentar de calcul este acceptabil
Implementați căutarea aproximativă a celui mai apropiat vecin (ANN)
Pentru seturi de date mai mari, căutarea aproximativă a celui mai apropiat vecin (ANN) oferă un echilibru între viteză și acuratețe. SQL Server 2025 implementează ANN folosind algoritmul DiskANN, care creează un index bazat pe grafice pentru o navigare vectorială eficientă.
Înțelegeți reamintirea
Recall măsoară proporția de vecini apropiați adevărați pe care un algoritm ANN îi identifică în comparație cu căutarea exactă. O rechemare de 1,0 (100%) înseamnă că căutarea aproximativă returnează aceleași rezultate ca și căutarea exactă. În practică, valorile de rechemare peste 0,95 oferă adesea rezultate excelente pentru aplicațiile AI, oferind în același timp îmbunătățiri semnificative ale performanței.
Creați indici vectoriali
Pentru a activa căutarea ANN, creați un index vectorial pe coloana vectorială:
CREATE VECTOR INDEX idx_product_embedding
ON products(embedding);
Acest cod creează un index vectorial pe coloana de încorporare folosind algoritmul DiskANN. Indexul îmbunătățește performanța căutărilor aproximative ale celui mai apropiat vecin pe seturi mari de date prin crearea unei structuri grafice pentru o navigare vectorială eficientă.
Indici vectoriali în SQL Server 2025:
- Utilizați algoritmul DiskANN pentru o căutare eficientă bazată pe grafice
- Suportă resurse limitate de memorie și procesor
- Echilibrați I/O disc, utilizarea memoriei și performanța interogărilor
- Actualizați automat pe măsură ce datele se modifică
Utilizați VECTOR_SEARCH funcția
Funcția VECTOR_SEARCH efectuează căutări aproximative ale celui mai apropiat vecin:
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;
Această interogare efectuează o căutare aproximativă a celui mai apropiat vecin folosind indexul vectorial creat mai devreme. Funcția VECTOR_SEARCH folosește algoritmul DiskANN pentru a găsi cele mai asemănătoare 10 produse fără a scana toți vectorii, oferind îmbunătățiri de performanță pentru seturi de date mari, menținând în același timp o precizie ridicată.
Luați în considerare beneficiile de performanță
Căutarea ANN oferă:
- Executare mai rapidă a interogărilor: În special pentru seturi de date cu milioane de vectori
- Consum mai mic de resurse: Utilizare redusă a procesorului și a memoriei în comparație cu căutarea exactă
- Scalabilitate: Gestionează eficient seturile de date vectoriale la scară largă
- Rechemare ridicată: De obicei atinge rate de rechemare peste 95%, asigurând rezultate de calitate
Creați scenarii de căutare hibridă
SQL Server 2025 acceptă combinarea căutării vectoriale cu operațiunile SQL tradiționale pentru scenarii de căutare hibridă.
Combinați căutarea semantică și a cuvintelor cheie
Puteți efectua căutarea semantică folosind vectori, aplicând în același timp filtre tradiționale:
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;
Această căutare hibridă combină căutarea semantică de similitudine cu filtrarea SQL tradițională. În primul rând, găsește cele mai asemănătoare 20 de produse din punct de vedere semantic cu "pantofi de alergare confortabili", apoi filtrează aceste rezultate pentru a include doar articole de încălțăminte cu prețuri cuprinse între 50 USD și 150 USD. Această abordare permite direcționarea precisă în timp ce se utilizează înțelegerea semantică.
Integrați căutarea full-text și vectorială
Combinați căutarea în text complet cu căutarea vectorială pentru rezultate cuprinzătoare:
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);
Această interogare combină căutarea vectorială cu căutarea în text complet. Găsește produse similare semantic cu "materiale durabile" folosind încorporari vectoriale, apoi se alătură cu rezultatele căutării în text complet pentru cuvintele cheie "durabil" sau "ecologic" în descriere. Clasamentul final combină ambele scoruri cu o formulă ponderată (60% similitudine semantică, 40% potrivire de cuvinte cheie).
Aplicarea celor mai bune practici
Când implementați căutarea vectorială în SQL Server 2025:
- Alegeți precizia potrivită: Utilizați jumătate de precizie pentru dimensiuni mai mari atunci când depozitarea este o problemă
- Indice strategic: Creați indexuri vectoriale pe coloanele care sunt căutate frecvent
- Rechemarea monitorului: Testați-vă interogările ANN pentru a asigura rate de rechemare acceptabile pentru cazul dvs.
- Optimizați interogările: Utilizați filtre adecvate pentru a reduce spațiul de căutare înainte de operațiunile vectoriale
- Operațiuni în lot: Generați și inserați încorporari în loturi pentru performanțe mai bune
Utilizând aceste capacități vectoriale, puteți crea aplicații bazate pe inteligență artificială care înțeleg relațiile semantice, oferă recomandări inteligente și oferă experiențe de căutare în limbaj natural, toate în cadrul platformei SQL Server de încredere.