Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.
Během provádění vektorového dotazu hledá vyhledávací web podobné vektory, aby vyhledaly nejlepší kandidáty, které se mají vrátit ve výsledcích hledání. V závislosti na tom, jak jste indexovali obsah vektoru, je hledání relevantních shod buď vyčerpávající, nebo omezené na nejbližší sousedy pro rychlejší zpracování. Když jsou nalezeni kandidáti, metriky podobnosti se použijí k určení skóre každého výsledku na základě síly shody.
Tento článek vysvětluje algoritmy používané k vyhledání relevantních shod a metrik podobnosti používaných k bodování. Nabízí také tipy pro zlepšení relevance, pokud výsledky hledání nesplňují očekávání.
Algoritmy používané při vektorovém vyhledávání
Algoritmy vektorového vyhledávání zahrnují:
- Kompletní K-Nearest Neighbors (KNN), který provádí výpočet hrubou silou nad celým vektorovým prostorem.
- Hierarchický navigační malý svět (HNSW), který provádí hledání přibližného nejbližšího souseda (ANN).
K vyhledávání a bodování se používají pouze vektorová pole označená jako searchable v indexu nebo searchFields v dotazu.
Informace o vyčerpávajícím KNN
Exhaustive KNN vypočítá vzdálenosti mezi všemi dvojicemi datových bodů a najde přesné k nejbližší sousedy pro dotazovaný bod. Vzhledem k tomu, že algoritmus nevyžaduje rychlý náhodný přístup k datovým bodům, KNN nevyužívají kvótu velikosti vektorového indexu . Poskytuje ale globální sadu nejbližších sousedů.
Exhaustivní metoda KNN je výpočetně náročná, proto se používá pro malé až střední datové sady nebo v případě, že potřeba přesnosti převáží potřebu rychlosti dotazů. Dalším případem použití je vytvoření datové sady k vyhodnocení přesnosti algoritmu ANN, protože vyčerpávající KNN algoritmus se dá použít k vytvoření referenční sady pravdy nejbližších sousedů.
Informace o HNSW
HNSW je algoritmus ANN optimalizovaný pro aplikace s vysokou úplností a nízkou latencí s neznámou nebo nestálou distribucí dat. Během indexování vytvoří HNSW další datové struktury, které uspořádají datové body do hierarchického grafu. Během provádění dotazů prochází HNSW tímto grafem a vyhledá nejrelevavantnější shody, což umožňuje efektivní hledání nejbližších sousedů.
HNSW vyžaduje, aby se všechny datové body nacházejí v paměti pro rychlý náhodný přístup, který spotřebovává kvótu velikosti vektorového indexu . Tento návrh vyrovnává přesnost vyhledávání s výpočetní efektivitou a umožňuje HNSW vhodný pro většinu scénářů, zejména při vyhledávání větších datových sad.
HNSW nabízí několik vyladěných parametrů konfigurace pro optimalizaci propustnosti, latence a odvolání pro vaši vyhledávací aplikaci. Například pole, která používají HNSW, podporují také úplné vyhledávání KNN pomocí parametru požadavku query"exhaustive": true. Pole indexovaná pro exhaustiveKnn dotazy HNSW však nepodporují, protože neexistují další datové struktury, které umožňují efektivní vyhledávání.
Informace o ANN
ANN je třída algoritmů pro hledání shod v vektorovém prostoru. Tato třída algoritmů používá různé datové struktury nebo metody dělení dat k významnému snížení vyhledávacího prostoru a zrychlení zpracování dotazů.
Algoritmy ANN obětují určitou přesnost, ale nabízejí škálovatelné a rychlejší načítání přibližných sousedů, což je ideální pro vyrovnávání přesnosti a efektivity v moderních aplikacích pro načítání informací. Parametry svého algoritmu můžete upravit tak, abyste vyladili požadavky vaší vyhledávací aplikace na míru nalezení, latenci, paměť a využití disku.
Azure AI Vyhledávač pro svůj algoritmus ANN používá HNSW.
Jak funguje hledání nejbližšího souseda
Vektorové dotazy se spouštějí s prostorem pro vložení skládajícím se z vektorů vygenerovaných ze stejného modelu vkládání. Obecně platí, že vstupní hodnota v rámci požadavku dotazu se odesílá do stejného modelu strojového učení, který vygeneroval vkládání do indexu vektorů. Výstupem je vektor ve stejném embeddingovém prostoru. Vzhledem k tomu, že podobné vektory jsou seskupené blízko sebe, hledání shod odpovídá vyhledání vektorů, které jsou nejblíže vektoru dotazu, a vrácení přidružených dokumentů jako výsledku hledání.
Pokud je například požadavek dotazu o hotely, model mapuje dotaz na vektor, který existuje někde v clusteru vektorů představujících dokumenty o hotelech. Určení vektorů, které jsou nejvíce podobné dotazu na základě metriky podobnosti, určuje, které dokumenty jsou nejrelevavantnější.
Pokud jsou vektorová pole indexována pro vyčerpávající síť KNN, dotaz se provede proti "všem sousedům". Pro pole indexovaná pro HNSW používá vyhledávací web graf HNSW k vyhledávání podmnožiny uzlů v rámci vektorového indexu.
Vytvoření grafu HNSW
Během indexování vytvoří vyhledávací služba graf HNSW. Cílem indexování nového vektoru do grafu HNSW je přidat ho do struktury grafu způsobem, který podporuje efektivní hledání nejbližších sousedů. Následující kroky shrnují proces:
Inicializace: Začněte prázdným grafem HNSW nebo pokud se nejedná o nový index, stávající graf HNSW.
Vstupní bod: Toto je nejvyšší úroveň hierarchického grafu a slouží jako výchozí bod indexování.
Přidání do grafu: Různé hierarchické úrovně představují různé členitosti grafu, přičemž vyšší úrovně jsou více globální a nižší úrovně jsou podrobnější. Každý uzel v grafu představuje vektorový bod.
Každý uzel je připojen až k
mblízkým sousedům. Toto jemparametr.Parametr
efConstructionurčuje počet datových bodů, které se považují za kandidátské připojení. Tento dynamický seznam představuje množinu nejbližších bodů ve stávajícím grafu, které má algoritmus posoudit. VyššíefConstructionhodnoty vedou k tomu, že se zvažuje více uzlů, což často vede k hustším místním sousedstvím u každého vektoru.Tato připojení používají nakonfigurovanou podobnost k určení vzdálenosti
metric. Některá spojení jsou „dálková“ spojení, která propojují různé hierarchické úrovně a vytvářejí v grafu zkratky, jež zvyšují efektivitu vyhledávání.
Vyřezávání a optimalizace grafů: K tomu může dojít po indexování všech vektorů a zlepšuje navigaci a efektivitu grafu HNSW.
Navigace v grafu HNSW v době dotazu
Vektorový dotaz prochází hierarchickou strukturu grafu a hledá shody. Následující kroky shrnují proces:
Inicializace: Algoritmus zahájí vyhledávání na nejvyšší úrovni hierarchického grafu. Tento vstupní bod obsahuje množinu vektorů, které slouží jako výchozí body pro vyhledávání.
Procházení: Dále prochází graf po jednotlivých úrovních a pohybuje se z nejvyšší úrovně na nižší úrovně. Vybere kandidátské uzly, které jsou blíže vektoru dotazu na základě nakonfigurované metriky vzdálenosti, jako je kosinus podobnost.
Prořezávání: Pro zvýšení efektivity algoritmus prořezává prostor hledání tím, že bere v úvahu pouze uzly, které pravděpodobně obsahují nejbližší sousedy. Udržuje prioritní frontu potenciálních kandidátů a aktualizuje ji v průběhu hledání. Délka této fronty se konfiguruje parametrem
efSearch.Upřesnění: Když se algoritmus přesune na nižší, podrobnější úrovně, HNSW považuje více sousedů v blízkosti dotazu. Tato skutečnost umožňuje zpřesnit kandidátské množiny vektorů, což zlepšuje přesnost.
Dokončení: Hledání se dokončí, pokud je identifikován požadovaný počet nejbližších sousedů nebo když jsou splněna jiná kritéria zastavení. Parametr
kdoby dotazu řídí tento požadovaný počet nejbližších sousedů.
Metriky podobnosti používané k měření blízkosti
Algoritmus najde kandidátské vektory k vyhodnocení podobnosti. Aby bylo možné tuto úlohu provést, výpočet metriky podobnosti porovnává kandidátní vektor s vektorem dotazu a měří podobnost. Algoritmus sleduje seřazenou množinu většiny podobných vektorů, které našli, což tvoří seřazenou sadu výsledků, když algoritmus dosáhne dokončení.
| Metrický | Popis |
|---|---|
cosine |
Tato metrika měří úhel mezi dvěma vektory a není ovlivněn rozdílnou délkou vektoru. Matematicky vypočítá úhel mezi dvěma vektory. Kosinus je metrika podobnosti, kterou používají modely vkládání Azure OpenAI, takže pokud používáte Azure OpenAI, zadejte cosine v konfiguraci vektoru. |
dotProduct |
Tato metrika měří délku obou dvojic dvou vektorů a úhel mezi nimi. Matematicky vypočítá součin velikostí vektorů a úhel mezi nimi. U normalizovaných vektorů je tato metrika shodná s cosine podobností, ale je o něco výkonnější. |
euclidean |
(označované také jako l2 norm) Tato metrika měří délku vektorového rozdílu mezi dvěma vektory. Matematicky vypočítá euklidskou vzdálenost mezi dvěma vektory, což je l2-normou rozdílu dvou vektorů. |
Poznámka:
Pokud spouštíte dva nebo více vektorových dotazů paralelně nebo provádíte hybridní vyhledávání, které kombinuje vektorové a textové dotazy ve stejném požadavku, použije se k bodování konečných výsledků hledání reciproční Rank Fusion (RRF ).
Skóre ve výsledcích hledání vektorů
Systém vypočítá a přiřadí skóre ke každé shodě. Nejvyšší shodná shoda se vrátí jako k výsledky. Vlastnost @search.score obsahuje skóre. Následující tabulka ukazuje rozsah, ve kterém skóre spadá.
| Metoda vyhledávání | Parametr | Metrika hodnocení | Rozsah |
|---|---|---|---|
| vektorové vyhledávání | @search.score |
Kosinus | 0.333 - 1.00 |
cosine Pro metriku není počítaná @search.score hodnota kosinus mezi vektorem dotazu a vektory dokumentu. Místo toho Azure AI Vyhledávač používá transformace tak, aby funkce skóre monotonicky klesala. Hodnoty skóre se vždy snižují, protože podobnost je horší. Tato transformace zajišťuje, že skóre hledání je možné použít pro účely řazení.
Skóre podobnosti má několik nuancí:
- Kosinus podobnost je definována jako kosinus úhlu mezi dvěma vektory.
- Kosinusová vzdálenost je definována jako
1 - cosine_similarity.
Chcete-li vytvořit monotonicky sestupnou funkci, @search.score je definována jako 1 / (1 + cosine_distance).
Pokud potřebujete hodnotu kosinusu místo syntetické hodnoty, pomocí vzorce převeďte skóre hledání zpět na kosinusovou vzdálenost:
double ScoreToSimilarity(double score)
{
double cosineDistance = (1 - score) / score;
return -cosineDistance + 1;
}
Mít původní hodnotu kosinu může být užitečné ve vlastních řešeních, která nastavují prahové hodnoty k odfiltrování výsledků nízké kvality.
Tipy pro ladění relevance
Pokud se vám nezobrazují relevantní výsledky, zkuste změnit konfiguraci dotazu. Vektorové dotazy nemají specifické funkce ladění, jako je bodovací profil, zvýhodnění pole nebo termínu.
Zkuste různou velikost bloku dat a nastavení překrytí . Zvětšete velikost bloku a ujistěte se, že existuje dostatek překrývání, aby se zachoval kontext nebo kontinuita mezi bloky dat.
U HNSW vyzkoušejte různé hodnoty
efConstruction, abyste změnili vnitřní strukturu grafu sousednosti. Výchozí hodnota je 400. Rozsah je 100 až 1 000.Pokud používáte chatovací model, zvyšte
kpočet výsledků hledání, abyste mohli posílat více výsledků hledání.Vyzkoušejte hybridní dotazy s sémantickým hodnocením. Při srovnávacím testování tato kombinace konzistentně vytvořila nejrelevavantnější výsledky.