Sdílet prostřednictvím


Vektory a vkládání: Nejčastější dotazy

Platí pro: SQL Server 2025 (17.x) Azure SQL Database Azure SQLManaged InstanceSQL Database v Microsoft Fabric

Tento článek obsahuje nejčastější dotazy týkající se vektorů a vkládání v databázovém stroji SQL.

Poznámka:

Funkce vektorů jsou dostupné ve službě Azure SQL Managed Instance nakonfigurované pomocí zásad Always-up-to-date .

Jak mohu udržovat vložení aktuální?

Aktualizujte vkládání pokaždé, když podkladová data představují změny. To 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 pro udržování vkládání v aktuálním stavu najdete v tématu Databáze a AI: řešení pro udržování aktualizací vkládání.

Náklady při hledání vektorů primárně zahrnují ukládání datového typu vektoru a výpočetní prostředky potřebné k 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 SQL Serveru 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 je jednoduché přesnosti float (4 bajty), celková velikost vektoru by byla 4 104 bajtů (4096 bajtů užitečného zatížení + 8 bajtů). Tím se omezí počet vektorů, které se dají umístit do jedné stránky na jednu.

Jaký model vkládání mám použít a kdy?

K dispozici je mnoho modelů vkládání a volba, kterou použít, závisí na konkrétním případu použití a typu zpracovávaných dat. Některé modely podporují více jazyků, zatímco jiné podporují multimodální data (text, obrázky atd.). Některé jsou dostupné jenom online, jiné je možné spustit místně.

Kromě samotného modelu zvažte velikost modelu a počet dimenzí, které vytváří. Větší modely mohou poskytovat vyšší přesnost, ale vyžadují více výpočetních prostředků a úložného prostoru. Ve skutečnosti však větší rozměr v mnoha případech kvalitu výrazně nezmění, zejména pro běžné scénáře využ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 rozhodnout, kdy pro vektory použít hodnoty s jednoduchou přesností (4 bajty) a s poloviční přesností (2 bajty) s plovoucí desetinnou čárkou?

Při ukládání vektorů vložených do databáze se při výběru mezi plovoucí desetinnou čárkou s jednoduchou přesností float32 a poloviční přesností float16 často vyrovnává efektivita úložiště s číselnou věrností.

Naštěstí embeddingy obvykle nejsou vysoce citlivé na malé změny 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 jsou často výstupem 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 vektoru v databázovém stroji SQL určen pro husté vektory, což 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.

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í SQL Serveru jsou ale navržené tak, aby byly efektivní a škálovatelné a využívají techniky indexování k optimalizaci výkonu vyhledávání.

Co když mám více než jeden sloupec, který bych chtěl použít ke generování embeddingů?

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í je technika, která se používá ke zlepšení relevance výsledků hledání opětovným vyhodnocením počátečních výsledků na základě dalších kritérií nebo modelů. V databázovém stroji SQL můžete implementovat opětovné řazení tak, že zkombinujete vektorové vyhledávání s fulltextovým vyhledáváním (které poskytuje řazení BM25) nebo další dotazy SQL nebo modely strojového učení pro upřesnění výsledků na základě konkrétní obchodní logiky nebo uživatelských preferencí.

Další informace najdete v tématu Vylepšení možností vyhledávání pomocí hybridního vyhledávání a opětovného řazení RRF.

Kdy použít AI Search (now AI Foundry) vs. použití SQL pro scénáře hledání vektorů?

AI Search (nyní 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.

Databázový stroj SQL poskytuje možnost ukládat jakýkoli druh dat a spouštět jakýkoli druh dotazu: strukturovaný a nestrukturovaný a provádět vektorové vyhledávání na těchto datech. 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. Databázový stroj SQL nabízí důležité podnikové funkce zabezpečení, které zajišťují, že data jsou 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ý lze spustit v Azure SQL nebo SQL Serveru, který kombinuje vektory, geoprostorová, strukturovaná a nestrukturovaná data najednou. Ukázkový dotaz načte prvních 50 nejrelevantních restaurací na základě popisu restaurace, umístění restaurace a předvoleb uživatele pomocí vektorového vyhledávání popisu a geoprostorového vyhledávání umístění, filtrováním také podle čísel hvězdiček, počtu recenzí, kategorie atd.:

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 se k vyhledání nejrelevavantnějších recenzí na základě sémantické vzdálenosti vkládání používá vyhledávání přesného nejbližšího souseda (ENN) a také 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í.

Projděte si vlastní laboratoř Azure SQL Cryptozoology AI Embeddings.