Udostępnij za pośrednictwem


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.

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.
  1. Włącz funkcję pełnotekstowego i hybrydowego wyszukiwania noSQL w wersji zapoznawczej.
  2. Skonfiguruj kontener przy użyciu zasad pełnotekstowych i indeksu pełnotekstowego.
  3. Wstaw dane z właściwościami tekstowymi.
  4. 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ć:

  1. Przejdź do strony zasobów usługi Azure Cosmos DB for NoSQL.
  2. Wybierz okienko "Funkcje" w elemencie menu "Ustawienia".
  3. Wybierz funkcję "Pełnotekstowe i hybrydowe wyszukiwanie interfejsu API NoSQL (wersja zapoznawcza)".
  4. Przeczytaj opis funkcji, aby potwierdzić, że chcesz ją włączyć.
  5. Wybierz pozycję "Włącz", aby włączyć możliwość indeksowania wektorów i wyszukiwania.

Zrzut ekranu przedstawiający funkcję pełnotekstowego i hybrydowego wyszukiwania w wersji zapoznawczej w witrynie Azure Portal.

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: zwraca true wartość , jeśli dany ciąg jest zawarty we określonej właściwości dokumentu. Jest to przydatne w klauzuli WHERE , 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 klauzuli WHERE , gdy chcesz upewnić się, że wiele słów kluczowych jest uwzględnionych w dokumentach zwracanych przez zapytanie.
  • FullTextContainsAny: zwraca true , jeśli którykolwiek z podanych ciągów znajduje się we określonej właściwości dokumentu. Jest to przydatne w klauzuli WHERE , 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 w ORDER 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 .