Fulltextové vyhledávání ve službě Azure Cosmos DB for NoSQL (Preview)
Azure Cosmos DB for NoSQL teď nabízí výkonnou funkci fulltextového vyhledávání ve verzi Preview, která je navržená tak, aby zlepšila možnosti vyhledávání vašich aplikací.
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 fulltextové vyhledávání?
Azure Cosmos DB for NoSQL teď nabízí výkonnou funkci fulltextového vyhledávání ve verzi Preview, která je navržená tak, aby zlepšila možnosti dotazování dat. Tato funkce zahrnuje pokročilé techniky zpracování textu, jako je zastavování, zastavení odebrání slov a tokenizace, povolení efektivního a efektivního vyhledávání textu prostřednictvím specializovaného textového indexu. Fulltextové vyhledávání také zahrnuje fulltextové bodování pomocí funkce, která vyhodnocuje význam dokumentů pro daný vyhledávací dotaz. BM25 nebo nejlepší shoda 25 považuje faktory, jako je frekvence termínů, inverzní frekvence dokumentů a délka dokumentu k určení skóre a pořadí dokumentů. To pomáhá zajistit, aby se v horní části výsledků hledání zobrazovaly nejrelevantní dokumenty, což zlepšuje přesnost a užitečnost hledání textu.
FullTextové vyhledávání je ideální pro různé scénáře, mezi které patří:
- Elektronické obchodování: Umožňuje rychle najít produkty na základě popisu, recenzí a dalších atributů textu.
- Správa obsahu: Efektivně prohledávat články, blogy a dokumenty.
- Zákaznická podpora: Načtěte relevantní lístky podpory, nejčastější dotazy a články o znalostní báze.
- Uživatelský obsah: Analyzujte a prohledávejte obsah vygenerovaný uživatelem, jako jsou příspěvky a komentáře.
- RAG pro chatboty: Vylepšete odpovědi chatovacího robota načtením relevantních informací z velkých textových korporů, zlepšením přesnosti a relevance odpovědí.
- Aplikace S více agenty AI: Umožňuje více agentům umělé inteligence spolupracovat na hledání a analýze velkých objemů textových dat, což poskytuje komplexní a nuancované přehledy.
Jak používat fulltextové vyhledávání
Poznámka:
FullTextové a hybridní vyhledávání (Preview) nemusí být v tuto chvíli dostupné ve všech oblastech.
- Povolte funkci fulltextového a hybridního vyhledávání pro NoSQL ve verzi Preview.
- Nakonfigurujte kontejner se zásadami fulltextu a fulltextovým indexem.
- Vložte data s vlastnostmi textu.
- Spusťte hybridní dotazy na data.
Povolení funkce fulltextového a hybridního vyhledávání noSQL ve verzi Preview
Fulltextové vyhledávání, fulltextové bodování a hybridní vyhledávání vyžadují povolení funkce Preview ve vašem účtu Azure Cosmos DB for NoSQL před použitím. Pokud se chcete zaregistrovat, postupujte následovně:
- Přejděte na stránku prostředku Azure Cosmos DB for NoSQL.
- V položce nabídky Nastavení vyberte podokno Funkce.
- Vyberte funkci Fulltextové a hybridní vyhledávání pro rozhraní NOSQL API (Preview).
- Přečtěte si popis funkce a potvrďte, že ji chcete povolit.
- Výběrem možnosti Povolit zapnete funkci indexování vektorů a vyhledávání.
Konfigurace zásad kontejneru a indexů pro hybridní vyhledávání
Pokud chcete použít možnosti fulltextové vyhledávání, musíte nejprve definovat dvě zásady:
- Zásada fulltextu na úrovni kontejneru, která definuje, jaké cesty budou obsahovat text pro nové funkce systému fulltextových dotazů.
- Fulltextový index přidaný do zásad indexování, který umožňuje efektivní vyhledávání.
Zásady fulltextu
Pro každou textovou vlastnost, kterou chcete nakonfigurovat pro fulltextové vyhledávání, musíte deklarovat path
vlastnost textem i language
textem. Jednoduché zásady fulltextu můžou být:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
Definování více textových cest se snadno provádí přidáním dalšího fullTextPolicy
prvku do pole:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Poznámka:
Angličtina ("en-us" jako jazyk) je v tuto chvíli jediným podporovaným jazykem.
Důležité
Zástupné znaky (*, []) se v současné době nepodporují v zásadách fulltextu ani v indexu fulltextu.
Fulltextový index
Všechny operace fulltextového vyhledávání by měly používat fulltextový index. Fulltextový index je možné snadno definovat v libovolné zásadě indexu Azure Cosmos DB for NoSQL podle následujícího příkladu.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
Stejně jako u zásad fulltextu je možné definovat fulltextové indexy na více cestách.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
},
{
"path": "/text2"
}
]
}
Fulltextové vyhledávací dotazy
Operace fulltextového vyhledávání a bodování se provádějí pomocí následujících systémových funkcí v dotazovacím jazyce Azure Cosmos DB for NoSQL:
FullTextContains
: Vrátítrue
, pokud je daný řetězec obsažen v zadané vlastnosti dokumentu. To je užitečné vWHERE
klauzuli, pokud chcete zajistit, aby konkrétní klíčová slova byla zahrnuta do dokumentů vrácených dotazem.FullTextContainsAll
: Vrátítrue
, pokud jsou všechny dané řetězce obsaženy v zadané vlastnosti dokumentu. To je užitečné vWHERE
klauzuli, pokud chcete zajistit, aby v dokumentech vrácených dotazem bylo zahrnuto více klíčových slov.FullTextContainsAny
: Vrátítrue
, pokud některý z daných řetězců je obsažen v zadané vlastnosti dokumentu. To je užitečné vWHERE
klauzuli, pokud chcete zajistit, aby v dokumentech vrácených dotazem obsahovala aspoň jedno z klíčových slov.FullTextScore
: Vrátí skóre. To lze použít pouze vORDER BY RANK
klauzuli, kde jsou vrácené dokumenty seřazené podle pořadí fulltextového skóre, s nejrelevavantnějšími (nejvyššími bodovacími) dokumenty nahoře a nejméně relevantními (nejnižšími bodovacími) dokumenty dole.
Tady je několik příkladů jednotlivých funkcí, které se používají.
FullTextContains
V tomto příkladu chceme získat prvních 10 výsledků, kde klíčové slovo "kolo" je obsaženo ve vlastnosti c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "bicycle")
FullTextContainsAll
V tomto příkladu chceme získat prvních 10 výsledků, kde jsou klíčová slova "červená" a "kolo" obsažena ve vlastnosti c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")
FullTextContainsAny
V tomto příkladu chceme získat prvních 10 výsledků, kde klíčová slova "červená" a buď "kolo" nebo "skateboard" jsou obsaženy ve vlastnosti c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")
FullTextScore
V tomto příkladu chceme získat prvních 10 výsledků, kde jsou zahrnuté "hory" a "kolo" a seřazené podle pořadí relevance. To znamená, že dokumenty, které mají tyto termíny častěji, by se měly v seznamu zobrazovat výš.
SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])
Důležité
FullTextScore lze použít pouze v ORDER BY RANK
klauzuli a ne v SELECT
příkazu nebo v klauzuli WHERE
.