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.
Cosmos DB (v Azure a Fabric) podporuje funkci hybridního vyhledávání, která kombinuje vektorové vyhledávání s bodováním fulltextového vyhledávání (BM25) pomocí funkce Reciprocal Rank Fusion (RRF).
Co je hybridní vyhledávání?
Hybridní vyhledávání využívá silné stránky vektorových i tradičních vyhledávacích metod založených na klíčových slovech k poskytování relevantnějších a přesnějších výsledků hledání. Hybridní vyhledávání je v Cosmos DB snadné díky možnosti ukládat metadata i vektory v rámci stejného dokumentu.
Hybridní vyhledávání ve službě Cosmos DB integruje dvě odlišné metodologie vyhledávání:
Vektorové vyhledávání: Využívá modely strojového učení k pochopení sémantického významu dotazů a dokumentů. Tato metodologie umožňuje podrobnější a kontextově uvědomělé výsledky hledání, zejména užitečné pro složité dotazy, ve kterých by tradiční hledání klíčových slov mohlo selhávat.
Fulltextové vyhledávání (
BM25): Dobře zavedený algoritmus, který vyhodnotuje dokumenty na základě přítomnosti a četnosti slov a termínů.BM25je efektivní pro jednoduché hledání klíčových slov a poskytuje robustní základ pro relevanci vyhledávání.
Výsledky vektorového vyhledávání a fulltextového vyhledávání se pak zkombinují pomocí funkce Reciproční Rank Fusion (RRF). RRF je metoda agregace pořadí, která slučuje řazení z více vyhledávacích algoritmů a vytváří jedno sjednocené řazení. Tato metoda zajišťuje, aby konečné výsledky hledání využívaly výhody obou přístupů hledání a nabízí více výhod.
Vylepšená relevance: Hybridní vyhledávání poskytuje relevantnější výsledky pro širokou škálu dotazů kombinací sémantického porozumění s párováním klíčových slov.
Vylepšená přesnost: Funkce RRF zajišťuje, že nejpřesnější výsledky obou metod hledání jsou upřednostňovány.
Všestrannost: Vhodné pro různé případy použití, včetně načítání rozšířené generace (RAG) ke zlepšení odpovědí generovaných velkým jazykovým modelem (LLM) na základě vlastních dat.
Konfigurace zásad a indexů pro hybridní vyhledávání
Projděte si tuto ukázkovou zásadu indexování s fulltextovými i vektorovými indexy:
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
{
"path": "/vector/*"
}
],
"fullTextIndexes": [
{
"path": "/text"
}
],
"vectorIndexes": [
{
"path": "/vector",
"type": "DiskANN"
}
]
}
Důležité
V současné době jsou vektorové zásady a indexy vektorů neměnné po vytvoření. Pokud chcete provést změny, vytvořte novou kolekci. Ostatní indexy stále zůstávají proměnlivé.
Hybridní vyhledávací dotazy
Hybridní vyhledávací dotazy lze provádět pomocí RRF systémové funkce v ORDER BY RANK klauzuli, která zahrnuje funkci i VECTORDISTANCEFULLTEXTSCORE. Například parametrizovaný dotaz, který najde nejrelevantnější výsledky, by vypadal takto:
SELECT TOP @k
*
FROM
container c
ORDER BY
RANK RRF(VECTORDISTANCE(c.vector, @queryVector), FULLTEXTSCORE(c.content, @searchTerm1, @searchTerm2, ...))
Předpokládejme, že máte dokument, který má vektorová zapouzdření uložená ve vlastnosti c.vector a textová data obsažená ve vlastnosti c.text v každém dokumentu. Pokud chcete získat 10 nejrelevavantnějších dokumentů pomocí hybridního vyhledávání, můžete dotaz zapsat takto:
SELECT TOP 10
*
FROM
container c
ORDER BY
RANK RRF(VECTORDISTANCE(c.vector, [1,2,3]), FULLTEXTSCORE(c.text, "searchable", "text", "goes" ,"here"))
Vážené hybridní vyhledávací dotazy
Volitelně můžete zadat pole hmotností , které ovlivní, jak důležité je skóre jednotlivých komponent ve RRF funkci. Pokud máte například dvě skóre komponent (VECTORDISTANCE a FULLTEXTSCORE) a chcete vážit vektorové vyhledávání dvakrát důležitější než bodování BM25, můžete jako poslední argument přidat matici čísel [2, 1], jak je znázorněno na RRF.
SELECT TOP 10
*
FROM
container c
ORDER BY
RANK RRF(VECTORDISTANCE(c.vector, [1,2,3]), FULLTEXTSCORE(c.text, "searchable", "text", "goes" ,"here"), [2, 1])