Wyszukiwanie pełnotekstowe w usłudze Azure Cosmos DB dla NoSQL (wersja zapoznawcza)
Usługa Azure Cosmos DB for NoSQL oferuje teraz zaawansowaną funkcję wyszukiwania pełnotekstowego w wersji zapoznawczej, zaprojektowaną w celu zwiększenia możliwości wyszukiwania aplikacji.
Co to jest wyszukiwanie pełnotekstowe?
Usługa Azure Cosmos DB for NoSQL oferuje teraz zaawansowaną funkcję wyszukiwania pełnotekstowego w wersji zapoznawczej, zaprojektowaną w celu zwiększenia możliwości wykonywania zapytań dotyczących danych. Ta funkcja obejmuje zaawansowane techniki przetwarzania tekstu, takie jak stemming, zatrzymywanie usuwania wyrazów i tokenizacja, umożliwiając wydajne i skuteczne wyszukiwanie tekstu za pośrednictwem wyspecjalizowanego indeksu tekstowego. Wyszukiwanie pełnotekstowe obejmuje również ocenianie pełnotekstowe z funkcją, która ocenia istotność dokumentów dla danego zapytania wyszukiwania. BM25 lub Best Matching 25 uwzględnia czynniki takie jak częstotliwość terminów, odwrotna częstotliwość dokumentów i długość dokumentu w celu oceny i klasyfikacji dokumentów. Dzięki temu w górnej części wyników wyszukiwania są wyświetlane najbardziej odpowiednie dokumenty, co zwiększa dokładność i użyteczność wyszukiwań tekstowych.
Wyszukiwanie pełnotekstowe jest idealne dla różnych scenariuszy, w tym:
- Handel elektroniczny: szybkie znajdowanie produktów na podstawie opisów, przeglądów i innych atrybutów tekstowych.
- Zarządzanie zawartością: efektywne wyszukiwanie artykułów, blogów i dokumentów.
- Obsługa klienta: pobieranie odpowiednich biletów pomocy technicznej, często zadawanych pytań i baza wiedzy artykułów.
- Zawartość użytkownika: analizowanie i wyszukiwanie zawartości wygenerowanej przez użytkownika, takiej jak wpisy i komentarze.
- RAG dla czatbotów: ulepsz odpowiedzi czatbota, pobierając odpowiednie informacje z dużego korpusu tekstu, poprawiając dokładność i znaczenie odpowiedzi.
- Aplikacje sztucznej inteligencji dla wielu agentów: umożliwia wielu agentom sztucznej inteligencji wspólne wyszukiwanie i analizowanie ogromnych ilości danych tekstowych, zapewniając kompleksowe i zniuansowane szczegółowe informacje.
Jak używać wyszukiwania pełnotekstowego
- Włącz funkcję pełnotekstowego i hybrydowego wyszukiwania noSQL w wersji zapoznawczej.
- Skonfiguruj kontener przy użyciu zasad pełnotekstowych i indeksu pełnotekstowego.
- Wstaw dane z właściwościami tekstowymi.
- Uruchamianie zapytań hybrydowych względem danych.
Włączanie pełnotekstowej i hybrydowej funkcji wyszukiwania noSQL w wersji zapoznawczej
Wyszukiwanie pełnotekstowe, ocenianie pełnotekstowe i wyszukiwanie hybrydowe wymagają włączenia funkcji w wersji zapoznawczej na koncie usługi Azure Cosmos DB for NoSQL przed użyciem. Wykonaj poniższe kroki, aby się zarejestrować:
- Przejdź do strony zasobów usługi Azure Cosmos DB for NoSQL.
- Wybierz okienko "Funkcje" w elemencie menu "Ustawienia".
- Wybierz funkcję "Pełnotekstowe i hybrydowe wyszukiwanie interfejsu API NoSQL (wersja zapoznawcza)".
- Przeczytaj opis funkcji, aby potwierdzić, że chcesz ją włączyć.
- Wybierz pozycję "Włącz", aby włączyć możliwość indeksowania wektorów i wyszukiwania.
Konfigurowanie zasad kontenera i indeksów na potrzeby wyszukiwania hybrydowego
Aby użyć funkcji wyszukiwania pełnotekstowego, najpierw należy zdefiniować dwie zasady:
- Zasady pełnotekstowe na poziomie kontenera definiujące, jakie ścieżki będą zawierać tekst dla nowych funkcji systemu zapytań pełnotekstowych.
- Indeks pełnotekstowy dodany do zasad indeksowania, który umożliwia wydajne wyszukiwanie.
Zasady pełnotekstowe
Dla każdej właściwości tekstowej, którą chcesz skonfigurować do wyszukiwania pełnotekstowego, należy zadeklarować zarówno path
właściwość z tekstem, jak language
i tekstem. Proste zasady pełnotekstowe mogą być następujące:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
Definiowanie wielu ścieżek tekstowych jest łatwe przez dodanie innego elementu do tablicy fullTextPolicy
:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Uwaga
Angielski ("en-us" jako język) jest obecnie jedynym obsługiwanym językiem.
Ważne
Symbole wieloznaczne (*, []) nie są obecnie obsługiwane w zasadach pełnotekstowych ani w indeksie pełnotekstowym.
Indeks pełnotekstowy
Wszystkie operacje wyszukiwania pełnotekstowego powinny korzystać z indeksu pełnotekstowego. Indeks pełnotekstowy można łatwo zdefiniować w dowolnych zasadach indeksu usługi Azure Cosmos DB for NoSQL zgodnie z poniższym przykładem.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
Podobnie jak w przypadku zasad pełnotekstowych indeksy pełnotekstowe można definiować na wielu ścieżkach.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
},
{
"path": "/text2"
}
]
}
Zapytania wyszukiwania pełnotekstowego
Operacje wyszukiwania pełnotekstowego i oceniania są wykonywane przy użyciu następujących funkcji systemowych w języku zapytań usługi Azure Cosmos DB for NoSQL:
FullTextContains
: zwracatrue
wartość , jeśli dany ciąg jest zawarty we określonej właściwości dokumentu. Jest to przydatne w klauzuliWHERE
, gdy chcesz upewnić się, że określone słowa kluczowe są zawarte w dokumentach zwracanych przez zapytanie.FullTextContainsAll
: zwraca wartośćtrue
, jeśli wszystkie podane ciągi znajdują się we określonej właściwości dokumentu. Jest to przydatne w klauzuliWHERE
, gdy chcesz upewnić się, że wiele słów kluczowych jest uwzględnionych w dokumentach zwracanych przez zapytanie.FullTextContainsAny
: zwracatrue
, jeśli którykolwiek z podanych ciągów znajduje się we określonej właściwości dokumentu. Jest to przydatne w klauzuliWHERE
, gdy chcesz upewnić się, że co najmniej jeden z kluczowych słów jest uwzględniony w dokumentach zwracanych przez zapytanie.FullTextScore
: zwraca wynik. Może to być używane tylko wORDER BY RANK
klauzuli, w której zwracane dokumenty są uporządkowane według rangi pełnego wyniku tekstowego, z najbardziej odpowiednimi (najwyższą oceną) dokumentów u góry i najmniej odpowiednimi (najniższymi ocenami) dokumentów u dołu
Oto kilka przykładów każdej używanej funkcji.
FullTextContains
W tym przykładzie chcemy uzyskać pierwsze 10 wyników, w których słowo kluczowe "rower" znajduje się we właściwości c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "bicycle")
FullTextContainsAll
W tym przykładzie chcemy uzyskać pierwsze 10 wyników, w których słowa kluczowe "czerwony" i "rower" znajdują się we właściwości c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")
FullTextContainsAny
W tym przykładzie chcemy uzyskać pierwsze 10 wyników, w których słowa kluczowe "czerwony" i "rower" lub "deskorolka" znajdują się we właściwości c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")
FullTextScore
W tym przykładzie chcemy uzyskać pierwsze 10 wyników, w których uwzględniono "góry" i "rower" oraz posortowane według kolejności istotności. Oznacza to, że dokumenty, które mają te terminy częściej, powinny pojawiać się wyżej na liście.
SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])
Ważne
Funkcja FullTextScore może być używana tylko w klauzuli ORDER BY RANK
, a nie projektowana w instrukcji SELECT
lub klauzuli WHERE
.