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 vyhledává v dokumentech podle shody znaků. 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 ještě odpovídat textu "jasné světlo" nebo chybně napsané lihgts
díky tomu, že se liší o jeden znak (chybějící s,
nebo prohození g
a h
). Zatímco přibližné porovnávání a jiné techniky, jako je stemmatizace, jsou užitečné, tato technika musí odpovídat synonymům nebo sémanticky podobnému jazyku: různé fráze, slang, technická slovní zásoba atd. Aby autoři mohli poskytnout nejrelevantnější výsledky vyhledává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 nepohodlné pro uživatele).
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ů. Vložení nejbližší ke vložení dotazu jsou dokumenty, které jsou nejvíce sémanticky podobné 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 .
Zakotvení
Embedding 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 ukazují opačným směrem, představují opačné koncepty, například "smutné" a "šťastné". Struktura embedovacího modelu a tréninková data určují, co je považováno 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 n-dimenzionální vektory zapuštění založené na určitém modelu nebo funkci. Číselná podobnost vnořených reprezentací slouží jako proxy pro sémantickou podobnost příslušný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 skalární součin, vynásobte hodnoty jednotlivých dimenzí po dvojicích a pak sečtěte výsledky:
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 zakotvení jsou jednotkové vektory (vektory délky jedna), je skalární součin roven kosinové podobnosti 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í.
n-dimenzionální prostoru můžete vizualizovat tak, že je promítnete do třídimenzionální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 ukáže, že podobnější dokumenty jsou seskupeny v klastrech, zatímco odlišnější dokumenty jsou dál.
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
- Vypočítejte skalární součin vložením dotazu proti předem vypočítanému vkládání každého dokumentu.
- Seřaďte tečky, čí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í dotazuje vektorovou databázi na podobnost vektoru dotazu s každým uloženým embeddingem. 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: