Platí pro: SQL Server 2025 (17.x)
Azure SQL Database
Spravovaná instance Azure SQL
SQL databáze v Microsoft Fabric
Tento článek obsahuje nejčastější dotazy týkající se vektorů a vkládání v Database Engine SQL.
Otázky a pokyny k návrhu
Jak mám embeddingy udržovat aktuální?
Aktualizujte vkládání pokaždé, když podkladová data představují změny. Tento postup je zvlášť důležitý pro scénáře, kdy jsou data dynamická, například uživatelsky generovaný obsah nebo často aktualizované databáze. Další informace o několika strategiích, které umožňují udržovat vkládání v aktualizovaném stavu, najdete v tématu Databáze a AI: řešení pro udržování aktualizací vkládání.
Jaká je režie při ukládání a zpracování vektorového vyhledávání?
Nároky na vektorové vyhledávání zahrnují především ukládání vektorových dat a výpočetní prostředky potřebné pro indexování a vyhledávání. Datový typ vektoru je navržený tak, aby byl efektivní z hlediska úložiště, ale přesná režie se může lišit v závislosti na velikosti – počtu dimenzí – vektorů uložených.
Další informace o tom, jak zvolit správnou velikost vektoru, najdete v tématu Vložené modely a dimenze: optimalizace poměru využití prostředků výkonu.
Datová stránka databáze SQL může obsahovat až 8 060 bajtů, takže velikost vektoru ovlivňuje, kolik vektorů může být uloženo na jedné stránce. Pokud máte například vektor s 1 024 rozměry a každá dimenze má jednoduchou přesnost float (4 bajty), celková velikost vektoru je 4 104 bajtů (včetně 4 096 bajtů užitečných dat a 8 bajtů záhlaví). Tato velikost omezuje počet vektorů, které se vejdou na jednu stránku na jednu.
Jaký model vkládání mám použít a kdy?
K dispozici je mnoho modelů vkládání. Volba závisí na konkrétním případu použití a typu zpracovávaných dat. Některé modely podporují více programovacích jazyků, zatímco jiné podporují vícemodelová data (text, obrázky a další). Některé modely jsou dostupné jenom online, zatímco jiné můžou běžet místně.
Kromě samotného modelu zvažte velikost modelu a počet dimenzí, které vytváří. Větší modely můžou poskytovat vyšší přesnost, ale vyžadují více výpočetních prostředků a prostoru úložiště. V mnoha případech se při větším počtu dimenzí výrazně nemění kvalita běžných případů použití.
Další informace o tom, jak zvolit správný model vkládání, najdete v tématu Vkládání modelů a dimenzí: optimalizace poměru využití prostředků výkonu.
Jak se můžu rozhodnout, kdy pro vektory použít hodnoty s jednoduchou přesností (4 bajty) nebo s poloviční přesností (2 bajty) s plovoucí desetinnou čárkou?
Při ukládání vektorů vnoření do databáze často potřebujete vyvážit efektivitu úložiště a číselnou věrnost při výběru mezi plnou přesností (float32) a poloviční přesností (float16).
Naštěstí embeddingy obvykle nejsou vysoce citlivé na drobné změny v přesnosti.
Vkládání jsou zhuštěné vektorové reprezentace používané v úlohách, jako jsou sémantické vyhledávání, systémy doporučení a zpracování přirozeného jazyka. Tyto vektory často pocházejí z neurálních sítí, které jsou ze své podstaty odolné vůči malým číselným variacím. V důsledku toho má snížení přesnosti float32 na float16 obvykle minimální dopad na kvalitu porovnání podobnosti nebo podřízených úkolů, zejména při odvozování.
Použití float16 může výrazně snížit využití úložiště a paměti, což je zvláště užitečné při práci s rozsáhlými vloženými datovými sadami.
A co řídké vektory?
V současné době je datový typ vector v sql Database Engine určený pro zhuštěné vektory. Tyto vektory jsou pole desetinných čísel, kde většina prvků není nula. Řídké vektory, které obsahují významný počet nulových prvků, nejsou nativně podporovány.
Jaké jsou některé srovnávací testy výkonu pro vyhledávání vektorů SQL?
Výkon se může výrazně lišit v závislosti na konkrétním případu použití, velikosti datové sady a složitosti dotazů. Možnosti vektorového vyhledávání v sql Database Engine jsou ale efektivní a škálovatelné. K optimalizaci výkonu vyhledávání používají techniky indexování.
Co když mám více než jeden sloupec, který chci použít ke generování vložených objektů?
Pokud máte více sloupců, které chcete použít ke generování vkládání, máte dvě hlavní možnosti:
- Vytvořte jedno embedding pro každý sloupec nebo
- Zřetězení hodnot více sloupců do jednoho řetězce a následné vygenerování jednoho vložení pro tento zřetězený řetězec.
Další informace o těchto dvou možnostech a souvisejících aspektech návrhu databáze najdete v tématu Efektivní a elegantně modelované vkládání.
A co opětovné hodnocení?
Opětovné hodnocení zlepšuje relevanci výsledků hledání opětovným vyhodnocením počátečních výsledků na základě dodatečných kritérií nebo modelů. V Database Engine SQL můžete implementovat opětovné řazení kombinací vektorového vyhledávání s fulltextovým vyhledáváním (které poskytuje nejlepší porovnání 25 (BM25) nebo pomocí dalších dotazů SQL nebo modelů strojového učení k upřesnění výsledků na základě konkrétní obchodní logiky nebo uživatelských preferencí.
Další informace naleznete v tématu Vylepšení možností vyhledávání pomocí hybridního vyhledávání a RRF Re-Ranking.
Pokročilejší technika přeřazení se nazývá sémantické přeřazení. Sémantické přeurčování pořadí spoléhá na specializovaný model (často nazývaný cross-encoder nebo metoda pozdní interakce) k porovnání každé kandidátní pasáže s dotazem a přiřazení detailního skóre relevance. Opětovným posouzením těchto pasáží přehodnocovatelé zajistí, že se na vrchol dostanou nejpřesnější, užitečné a relevantní výsledky.
Ukázku použití modelu opětovného řazení najdete v tématu Sémantické řazení s modely Azure SQL, SQL Server 2025 a Cohere Rerank.
Kdy použít Microsoft Foundry a kdy použít SQL pro scénáře vektorové vyhledávání?
Microsoft Foundry (dříve AI Search nebo AI Foundry) je specializovaná služba navržená pro pokročilé scénáře hledání, včetně vektorového vyhledávání, zpracování přirozeného jazyka a přehledů řízených AI. Poskytuje komplexní sadu funkcí pro vytváření inteligentních vyhledávacích aplikací, jako je například integrovaná podpora různých modelů AI, pokročilých algoritmů řazení a integrace s dalšími službami AI.
SQL Database Engine poskytuje možnost ukládat a dotazovat strukturovaná i nestrukturovaná data. U dat můžete provádět vektorové vyhledávání. Je to dobrá volba pro scénáře, kdy potřebujete prohledávat všechna tato data společně a nechcete pro vyhledávání používat samostatnou službu, která by komplikovala vaši architekturu. SQL Database Engine nabízí důležité podnikové funkce zabezpečení, které zajišťují, že jsou data vždy chráněná, například zabezpečení na úrovni řádků (RLS), dynamické maskování dat (DDM), Always Encrypted, neměnné tabulky registru a transparentní šifrování dat (TDE).
Tady je příklad jednoho dotazu, který můžete spustit na libovolné platformě Azure SQL nebo SQL Server, která kombinuje vektorová, geoprostorová, strukturovaná a nestrukturovaná data najednou. Ukázkový dotaz načte 50 nejrelevantních restaurací na základě popisu restaurace, umístění restaurace a předvoleb uživatele. Používá vektorové vyhledávání pro popis a geoprostorové vyhledávání polohy, filtrování podle hvězdných čísel, počtu recenzí, kategorií a dalších atributů.
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;
V předchozí ukázce najde hledání přesného nejbližšího souseda (ENN) nejrelevavantnější recenze na základě sémantické vzdálenosti vkládání a zároveň filtrování podle geoprostorové vzdálenosti a dalších obchodních atributů. Tento dotaz ukazuje sílu kombinování vektorového vyhledávání s tradičními funkcemi SQL k vytvoření bohatého a efektivního vyhledávání.
Pokud chcete použít přibližné hledání typu AnN (Nearest Neighbor), můžete v tabulce vytvořit vektorový index reviews_embeddings a pomocí VECTOR_SEARCH funkce provést vyhledávání.
Kde najdu testovací prostředí s vlastním tempem, kde se dozvím více o vkládání a vektorovém vyhledávání?
Projděte si samostatně řízenou laboratoř Azure SQL Cryptozoology AI Embeddings.
Availability
Je vektorové vyhledávání dostupné ve všech edicích a platformách SQL Server?
Ano, ale vektorové indexy a vektorové vyhledávání zůstávají funkcí náhledu v SQL Server 2025 a Azure SQL Managed Instance v aktualizační politiceSQL Server 2025. Pro použití vektorových indexů nebo funkcí vektorového vyhledávání v SQL Server 2025 musíte povolit konfiguraci zaměřenou PREVIEW_FEATURESna databázi.
Vektorový datový typ a další vektorové funkce jsou obecně dostupné v SQL Server 2025 a Azure SQL SQL Managed Instance v aktualizační politiceSQL Server 2025.
Datový typ vector, indexy vector a všechny funkce vector jsou nyní všeobecně dostupné (GA) ve službách Azure SQL Database, databáze SQL v Microsoft Fabric a Azure SQL Managed Instance se zásadouaktualizací Always-up-to-date.