Hybridní vyhledávání ve službě Azure Cosmos DB for NoSQL (Preview)
Azure Cosmos DB for NoSQL teď podporuje výkonnou funkci hybridního vyhledávání, která kombinuje vektorové vyhledávání s bodováním fulltextového vyhledávání (BM25) pomocí funkce Reciproční Rank Fusion (RRF).
Poznámka:
FullTextové a hybridní vyhledávání je v rané verzi Preview a nemusí být v současnosti dostupné ve všech oblastech.
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 Azure Cosmos DB for NoSQL snadné díky možnosti ukládat metadata i vektory v rámci stejného dokumentu.
Hybridní vyhledávání ve službě Azure Cosmos DB for NoSQL 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ů. To umožňuje více nuancí a kontextové 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 padnout.
- Fulltextové vyhledávání (BM25): Dobře zavedený algoritmus, který vyhodnotí dokumenty na základě přítomnosti a četnosti slov a termínů. BM25 je zvláště efektivní pro jednoduché hledání klíčových slov a poskytuje robustní směrný plán pro relevanci hledá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í. Tím zajistíte, že konečné výsledky hledání budou těžit ze silných stránek obou přístupů hledání a nabízejí více výhod.
- Vylepšená relevance: Kombinací sémantického porozumění s párováním klíčových slov nabízí hybridní vyhledávání relevantnější výsledky pro širokou škálu dotazů.
- 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 LLM na základě vašich vlastních dat.
Jak používat hybridní vyhledávání
- Povolte funkci Vektorové vyhledávání ve službě Azure Cosmos DB for NoSQL.
- Povolte funkci FullText & Hybrid Search for NoSQL Preview.
- Vytvořte kontejner se zásadami vektoru, fulltextovými zásadami, vektorovým indexem a fulltextovým indexem.
- Vložte data s vlastnostmi textu a vektoru.
- Spusťte hybridní dotazy na data.
Konfigurace zásad a indexů pro hybridní vyhledávání
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.
Ukázková zásada vektoru
{
"vectorEmbeddings": [
{
"path":"/vector",
"dataType":"float32",
"distanceFunction":"cosine",
"dimensions":3
},
}
Ukázková zásada fulltextu
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
Ukázková zásada 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"
}
]
}
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 VectorDistance
FullTextScore
. Například parametrizovaný dotaz, který najde nejrelevantnější výsledky, by vypadal takto:
SELECT TOP @k *
FROM c
ORDER BY RANK RRF(VectorDistance(c.vector, @queryVector), FullTextScore(c.content, [@searchTerm1, @searchTerm2, ...]))
Předpokládejme, že máte dokument, který obsahuje vektorové vkládání uložených v každém dokumentu ve vlastnosti c.vector
a textová data obsažená ve vlastnosti c.text. Pokud chcete získat 10 nejrelevavantnějších dokumentů pomocí hybridního vyhledávání, můžete dotaz zapsat takto:
SELECT TOP 10 *
FROM c
ORDER BY RANK RRF(VectorDistance(c.vector, [1,2,3]), FullTextScore(c.text, ["text", "to", "search", "goes" ,"here])