Principy sémantického vyhledávání
Pojďme si projít základy sémantického hledání:
- Jak se liší od standardního lexikálního vyhledávání.
- Co je vkládání vektorů?
- Co dělají vektorové databáze?
Co je sémantické vyhledávání?
Standardní lexikální vyhledávání nebo hledání klíčových slov dotazuje dokumenty odpovídajícími znaky. Například dotaz "světlo" odpovídá textu "světlé světlo", protože se znak light
zobrazí v dokumentu.
Lexikální vyhledávání lze rozšířit o přibližné shody; Například dotaz "lights" může stále odpovídat textu "jasné světlo" nebo chybně napsané lihgts
kvůli tomu, že je jeden znak vypnutý (chybějící s,
nebo prohození g
a h
). Zatímco přibližné porovnávání a další techniky, jako je závorka , jsou užitečné, tato technika se musí shodovat se synonymy nebo sémanticky podobný jazyk: různé fráze, slang, technická slovní zásoba atd. Aby autoři mohli poskytnout nejrelevantnější výsledky hledání pomocí lexikálního vyhledávání, musí do metadat nebo samotného textu vložit klíčová slova (což může být nepříjemné uživatelské prostředí).
Zadejte sémantické hledání. Sémantické vyhledávání nepoužívá podobnost znaků. Místo toho používá číselné reprezentace konceptů ve slovech a frázích. Tyto číselné reprezentace se nazývají vložené vektory nebo jednoduše vložené.
Pokud jsou dvě vložené hodnoty číselně podobné, jsou také sémanticky podobné. Tato podobnost je obecnější než testování překrývajících se klíčových slov, protože je méně citlivá na přesný výběr nebo formulaci klíčových slov.
Pokud chcete provést sémantické vyhledávání, nejprve vygenerujte vektor vkládání dotazu. Pak tento vektor porovnejte s databází vektorů. Vkládání nejblíže k vložení dotazu jsou dokumenty, které se nejvíce séanticky podobají dotazu.
Většina případů použití relační databáze nezahrnuje ukládání ndimenzionálních vektorů a výpočet číselné vzdálenosti mezi nimi. Efektivní sémantické vyhledávání vyžaduje funkci vektorové databáze .
Vkládání
Vkládání je číselná reprezentace sémantiky. Vkládání je reprezentováno jako ndimenzionální vektory: pole n čísel. Každá dimenze představuje sémantickou kvalitu určenou modelem vkládání.
Pokud dva vložené vektory ukazují v podobných směrech, představují podobné koncepty, například "jasné" a "slunečný". Pokud se od sebe odkážejí, představují opačné koncepty, například "smutné" a "šťastné". Struktura modelu vložení a trénovací data určují, co se považuje za podobné a odlišné.
Vkládání se dá použít na text a jakýkoli druh dat, jako jsou obrázky nebo zvuk. Důležitou součástí je transformace dat na ndimenzionální vektory vkládání založené na určitém modelu nebo funkci. Číselná podobnost vložených proxy serverů označuje sémantickou podobnost odpovídajících dat.
Číselná podobnost dvou ndimenzionálních vektorů v1
a v2
je dána jejich tečkovým součinem napsaným v1·v2
. Pokud chcete vypočítat tečkovaný součin, vynásobte hodnoty jednotlivých dimenzí párem a pak součet výsledku:
dot_product(v1, v2) = SUM(
v1[0] * v2[0] +
v1[1] * v2[1],
...,
v1[n-1] * v2[n-1],
v1[n] * v2[n]
)
Vzhledem k tomu, že vkládání jsou vektory jednotek (vektory délky jedna), tečkovaný součin se rovná kosinusu vektorů, hodnota mezi -1 (přesně opačné směry) a 1 (přesně stejný směr). Vektory s kosinusovou podobností nuly jsou orthogonální: sémanticky nesouvisející.
Ndimenzionální prostory můžete vizualizovat tak, že je promítnete do prostorového prostoru pomocí analýzy hlavních komponent (PCA). PCA je standardní technika redukce dimenzí vektorů. Výsledkem je zjednodušená, ale vizualizovatelná projekce ndimenzionálního prostoru. Při vykreslování vložených dokumentů tímto způsobem se zobrazí, že další podobné dokumenty jsou seskupené v clusterech, zatímco více různých dokumentů je dál daleko.
Vzhledem k těmto definicím je provádění sémantického vyhledávání dotazu na kolekci vkládání dokumentů jednoduché matematicky:
- Generování vkládání dotazů pomocí jazykového modelu
- Převezměte tečkovaný součin vloženého dotazu na předem vypočítané vkládání jednotlivých dokumentů.
- Seřaďte tečkované produkty, čísla od -1 do 1.
- Nejrelevavantnější (séanticky podobné) dokumenty mají nejvyšší skóre a nejméně relevantní (séanticky odlišné) dokumenty mají nejnižší skóre.
I když je to jednoduché matematicky, nejedná se o jednoduchý ani výkonný dotaz v relační databázi. Pokud chcete tento druh dotazu na podobnost vektorů uložit a zpracovat, použijte vektorovou databázi.
Vektorové databáze
Vektorová databáze optimalizuje úložiště a výpočet mnoharozměrných vektorů, jako jsou vkládání. Konkrétně vektorové databáze poskytují rychlé a přesné výpočty s tečkami za účelem provedení dotazu na podobnost vektorů.
Hledání vektorové podobnosti má několik případů použití:
- vyhledání obrázků podobných vložení obrázku dotazu
- vyhledání dokumentů sémanticky podobných textu dotazu
- najít produkty s podobnými funkcemi a hodnoceními pro systém doporučení
Sémantické vyhledávání se dotazuje vektorové databáze na podobnost vkládání dotazu s každým uloženým vkládáním. Aplikace pak mohou načíst data odpovídající vloženým objektům.
Existuje mnoho nativních vektorových databází a rozšíření databáze, ze které si můžete vybrat. Následující služby Azure vám můžou pomoct splňovat potřeby vektorové databáze:
- Rozšíření pgvector serveru Azure PostgreSQL
- Rozšíření vektorové databáze Azure Cosmos DB
- Azure AI Search