Implementace datových typů vektorů a hledání vektorů
SQL Server 2025 obsahuje nativní podporu pro datové typy vektorů a vektorové vyhledávání. Tato funkce umožňuje ukládat vysoce dimenzionální vektorové vkládání spolu s relačními daty a provádět vyhledávání podobností, což umožňuje vytvářet aplikace, které chápou sémantické vztahy v datech.
Vektorové vyhledávání řeší omezení tradičních databázových dotazů. Tradiční databáze jsou vynikající v přesných shodách a strukturovaných dotazech, ale mají potíže s porozuměním kontextu a významu. Vektorové vyhledávání to změní povolením sémantického porozumění – schopnost najít koncepčně podobné položky, i když nesdílejí přesná klíčová slova. Například hledání "pohodlné běhací boty" může najít produkty popsané jako "polštářová sportovní obuv", protože jejich vektorové vkládání zachycuje podobný sémantický význam.
Pro vývojáře to znamená, že můžete vytvářet inteligentní aplikace bez správy samostatných vektorových databází nebo složitých procesů synchronizace dat. Díky zachování vektorů vedle relačních dat v SQL Serveru udržujete dodržování předpisů ACID, používáte stávající zásady zabezpečení, používáte známou syntaxi T-SQL a zjednodušíte architekturu. Tato integrace se vztahuje na scénáře, jako jsou:
- Sémantické vyhledávání a doporučení: Vyhledání relevantních produktů, dokumentů nebo obsahu na základě významu, nikoli jenom klíčových slov
- Systémy pro zodpovídání otázek: Chatboty a virtuální asistenti, kteří rozumí dotazům v přirozeném jazyce s využitím podnikových dat
- Detekce anomálií: Identifikace neobvyklých vzorů vyhledáním datových bodů, které jsou sémanticky vzdálené od normálního chování
- Deduplikace obsahu: Detekce podobných nebo duplicitních položek, i když jsou formulovány odlišně
- Moduly pro přizpůsobení: Porovnávání uživatelských předvoleb s produkty nebo obsahem na základě nuancované podobnosti
Prozkoumání datového typu vektoru
Datový typ vektor v SQL Serveru 2025 je navržen tak, aby efektivně ukládal pole čísel s pohyblivou řádovou čárkou. Vektory se běžně používají k reprezentaci vkládání generovaných modely AI, kde každá dimenze zachycuje specifické vlastnosti nebo sémantické charakteristiky dat.
Prozkoumání klíčových charakteristik
- Optimalizovaný formát úložiště: Vektory se ukládají interně v optimalizovaném binárním formátu, ale zobrazují se jako pole JSON, aby se usnadnilo použití a kompatibilita.
- Flexibilní přesnost: Každý prvek vektoru lze uložit pomocí jednoduché přesnosti (4 bajtů) nebo polopřesnosti (2 bajtových) hodnot s plovoucí desetinnou čárkou, což umožňuje vyvážení přesnosti a efektivity úložiště.
- Podpora dimenzí: SQL Server 2025 podporuje vektory s až 1998 rozměry pro jednoduchou přesnost a 3 996 dimenzí pro polopřesnost a nabízí širokou škálu vložených modelů.
Vytváření a ukládání vektorů
Vektory můžete vytvářet přetypováním polí JSON na vector datový typ. Tady je příklad:
-- 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;
Tento kód ukazuje dva způsoby, jak vytvořit třírozměrný vektor: přímým přetypováním řetězcového literálu JSON nebo použitím funkce JSON_ARRAY. Obě metody vytvoří stejný výsledek a uloží hodnoty [1.0, -0.2, 30] do datového typu vektoru.
Uložení vektorů v tabulce:
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name NVARCHAR(100),
description NVARCHAR(MAX),
embedding VECTOR(1536) -- Common dimension for OpenAI embeddings
);
Tento kód vytvoří tabulku pro ukládání informací o produktech spolu s vkládáním 1536 dimenzionálních vektorů. Velikost dimenze 1536 se běžně používá s modely vkládání textu OpenAI, takže tato tabulka je připravená k ukládání vložených dat vygenerovaných z popisů produktů.
Převod vektorů na JSON
Vektory můžete snadno převést zpět na pole JSON pro zobrazení nebo zpracování:
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;
Tento kód převede vektor zpět na čitelné formáty.
CAST to NVARCHAR(MAX) vrátí vektor jako řetězec, zatímco CAST to JSON vrátí jako pole JSON, což je užitečné pro interoperabilitu s aplikacemi a rozhraními API.
Provedení přesného hledání nejbližšího souseda (k-NN)
Přesné hledání nejbližšího souseda (k-NN) zahrnuje výpočet vzdálenosti mezi vektorem dotazu a všemi vektory v datové sadě a následným vrácením nejbližších shod. Tato metoda zaručuje přesné výsledky, ale může být výpočetně náročná na velké datové sady.
Použijte funkci VECTOR_DISTANCE
Funkce VECTOR_DISTANCE měří podobnost mezi dvěma vektory pomocí zadané metriky vzdálenosti:
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;
Tento dotaz vygeneruje embedding pro text "Pink Floyd music style" pomocí modelu Ada2Embeddings a najde 10 produktů s embeddingy, které jsou nejvíce podobné tomuto dotazu. Funkce VECTOR_DISTANCE vypočítá kosinus vzdálenost mezi vektorem dotazu a vkládáním jednotlivých produktů s menšími vzdálenostmi označujícími větší podobnost.
Volba metrik vzdálenosti
SQL Server 2025 podporuje několik metrik vzdáleností:
- Kosinusová podobnost: Měří úhel mezi vektory, ideální pro vkládání textu.
- Eukleidovská vzdálenost: Měří přímou vzdálenost ve vektorovém prostoru.
- Skalární součin: Užitečný pro normalizované vektory
Určení, kdy použít přesné vyhledávání
Přesné vyhledávání se doporučuje, když:
- Pro vyhledávání máte méně než 50 000 vektorů.
- Predikáty dotazu filtruje datovou sadu na spravovatelnou velikost.
- Vyžadujete perfektní zpětné vyvolání (přesnost 100%)
- Dodatečné výpočetní náklady jsou přijatelné.
Implementace přibližného hledání nejbližšího souseda (ANN)
U větších datových sad poskytuje přibližné hledání nejbližšího souseda (ANN) rovnováhu mezi rychlostí a přesností. SQL Server 2025 implementuje ANN pomocí algoritmu DiskANN, který vytvoří index založený na grafu pro efektivní vektorovou navigaci.
Pochopení recallu
Úplnost měří podíl skutečných nejbližších sousedů, které algoritmus ANN identifikuje v porovnání s přesným vyhledáváním. Přesnost vyhledávání 1,0 (100 %) znamená, že přibližné vyhledávání vrátí stejné výsledky jako přesné vyhledávání. V praxi hodnoty recall nad 0,95 často poskytují vynikající výsledky pro aplikace umělé inteligence a současně nabízejí významná vylepšení výkonu.
Vytváření vektorových indexů
Pokud chcete povolit vyhledávání ANN, vytvořte vektorový index ve sloupci vektoru:
CREATE VECTOR INDEX idx_product_embedding
ON products(embedding);
Tento kód vytvoří vektorový index ve sloupci pro vložení pomocí algoritmu DiskANN. Index zlepšuje výkon přibližného hledání nejbližších sousedů u velkých datových sad vytvořením struktury grafu pro efektivní vektorovou navigaci.
Vektorové indexy v SQL Serveru 2025:
- Použití algoritmu DiskANN k efektivnímu vyhledávání založenému na grafech
- Podpora omezených zdrojů paměti a CPU
- Vyrovnávání výkonu vstupně-výstupních operací disku, využití paměti a dotazů
- Automatická aktualizace při změnách dat
Použijte funkci VECTOR_SEARCH
Funkce VECTOR_SEARCH provádí přibližné hledání nejbližších sousedů:
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;
Tento dotaz provede přibližné hledání nejbližšího souseda pomocí indexu vektoru vytvořeného dříve. Funkce VECTOR_SEARCH používá algoritmus DiskANN k nalezení 10 nejpodobnějších produktů bez skenování všech vektorů a poskytuje vylepšení výkonu velkých datových sad při zachování vysoké přesnosti.
Zvážení výhod výkonu
ANN vyhledávání nabízí:
- Rychlejší provádění dotazů: Zvláště u datových sad s miliony vektorů
- Nižší spotřeba prostředků: Snížení využití procesoru a paměti v porovnání s přesným vyhledáváním
- Škálovatelnost: Efektivně zpracovává rozsáhlé vektorové datové sady.
- Vysoká úplnost: Obvykle dosahuje míry úspěšnosti nad 95%, zajištění kvalitních výsledků
Vytváření scénářů hybridního vyhledávání
SQL Server 2025 podporuje kombinování vektorového vyhledávání s tradičními operacemi SQL pro scénáře hybridního vyhledávání.
Kombinování sémantického vyhledávání a hledání klíčových slov
Sémantické vyhledávání můžete provádět pomocí vektorů a zároveň používat tradiční filtry:
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;
Toto hybridní vyhledávání kombinuje sémantické vyhledávání podobnosti s tradičním filtrováním SQL. Zaprvé najde 20 sémanticky podobných produktů jako "pohodlné běhací boty", pak filtruje výsledky tak, aby zahrnovaly pouze položky obuvi s cenou mezi 50 USD a 150 USD. Tento přístup umožňuje přesné cílení při použití sémantického porozumění.
Integrace fulltextového a vektorového vyhledávání
Kombinování fulltextového vyhledávání s hledáním vektorů pro komplexní výsledky:
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);
Tento dotaz kombinuje vektorové vyhledávání s fulltextovým vyhledáváním. Najde produkty sémanticky podobné "udržitelným materiálům" pomocí vektorových vkládání a pak se spojí s fulltextovými výsledky hledání pro klíčová slova "udržitelná" nebo "ekologicky přívětivá" v popisu. Konečné hodnocení kombinuje obě skóre s váženým vzorcem (60% sémantické podobnosti, 40% shoda klíčových slov).
Použití osvědčených postupů
Při implementaci vektorového vyhledávání v SQL Serveru 2025:
- Zvolte správnou přesnost: Použijte poloviční přesnost pro větší rozměry, pokud je úložiště důležité
- Index strategicky: Vytvořte vektorové indexy u sloupců, které se často prohledávají
- Monitorování zpětného vyhledání: Otestujte dotazy ANN, abyste zajistili přijatelnou míru zpětného vyhledání pro váš případ použití.
- Optimalizace dotazů: Pomocí vhodných filtrů zmenšete prostor hledání před vektorovými operacemi.
- Dávkové operace: Generování a vkládání v dávkách pro vyšší výkon
Pomocí těchto vektorových funkcí můžete vytvářet aplikace využívající AI, které chápou sémantické vztahy, poskytují inteligentní doporučení a poskytují prostředí pro vyhledávání přirozeného jazyka – to vše v rámci důvěryhodné platformy SQL Serveru.