Freigeben über


Volltextsuche in Azure Cosmos DB for NoSQL (Vorschau)

Azure Cosmos DB for NoSQL bietet jetzt ein leistungsfähiges Feature für die Volltextsuche in der Vorschauversion, das die Suchfunktionen Ihrer Anwendungen verbessern soll.

Hinweis

Die Volltext- und Hybridsuche befindet sich in der frühen Vorschau und ist derzeit möglicherweise nicht in allen Regionen verfügbar.

Azure Cosmos DB for NoSQL bietet jetzt ein leistungsfähiges Feature für die Volltextsuche in der Vorschauversion, das die Datenabfragefunktionen Ihrer Anwendungen verbessern soll. Dieses Feature umfasst erweiterte Textverarbeitungstechniken wie Wortstammerkennung, Stoppwortentfernung und Tokenisierung, wodurch effiziente und effektive Textsuchen über einen speziellen Textindex ermöglicht werden. Die Volltextsuche umfasst außerdem die Volltextbewertung mit einer Funktion, die die Relevanz von Dokumenten für eine bestimmte Suchabfrage auswertet. BM25 (Best Matching 25) berücksichtigt Faktoren wie Begriffshäufigkeit, umgekehrte Dokumenthäufigkeit und Dokumentlänge für die Bewertung von Dokumenten. Dadurch wird sichergestellt, dass die relevantesten Dokumente oben in den Suchergebnissen angezeigt werden, um die Genauigkeit und Nützlichkeit von Textsuchen zu verbessern.

Die Volltextsuche eignet sich ideal für eine Vielzahl von Szenarien, darunter:

  • E-Commerce: Schnelle Suche nach Produkten basierend auf Beschreibungen, Bewertungen und anderen Textattributen.
  • Content Management: Effizientes Durchsuchen von Artikeln, Blogs und Dokumenten.
  • Kundendienst: Abrufen relevanter Supporttickets, FAQs und Knowledge Base-Artikel.
  • Benutzerinhalte: Analysieren und Durchsuchen von benutzergenerierten Inhalten wie Beiträgen und Kommentaren.
  • RAG für Chatbots: Verbessern der Chatbot-Antworten durch Abrufen relevanter Informationen aus großen Textkorpora, wodurch die Genauigkeit und Relevanz von Antworten verbessert wird.
  • Multi-Agent-KI-Apps: Aktivieren mehrerer KI-Agents zum gemeinsamen Durchsuchen und Analysieren großer Textdatenmengen, um umfassende und differenzierte Erkenntnisse bereitzustellen.

Hinweis

Die Volltext- und Hybridsuche (Vorschau) ist derzeit möglicherweise nicht in allen Regionen verfügbar.

  1. Aktivieren Sie die Previewfunktion „Volltext- und Hybridsuche für NoSQL“.
  2. Konfigurieren Sie einen Container mit einer Volltextrichtlinie und einem Volltextindex.
  3. Fügen Sie Ihre Daten mit Texteigenschaften ein.
  4. Führen Sie Hybridabfragen für die Daten aus.

Aktivieren des Vorschaufeatures für die Volltext- und Hybridsuche für NoSQL

Für die Volltextsuche, Volltextbewertung und Hybridsuche muss das Vorschaufeature in Ihrem Azure Cosmos DB for NoSQL-Konto aktiviert werden, bevor sie verwendet werden können. Führen Sie die folgenden Schritte aus, um sich zu registrieren:

  1. Navigieren Sie zu Ihrer Azure Cosmos DB for NoSQL-Ressourcenseite.
  2. Wählen Sie den Bereich "Features" unter dem Menüelement "Einstellungen" aus.
  3. Wählen Sie das Feature „Full-Text & Hybrid Search for NoSQL API (preview)“ aus.
  4. Lesen Sie die Beschreibung des Features, und bestätigen Sie danach, dass Sie es aktivieren möchten.
  5. Wählen Sie „Aktivieren“ aus, um die Vektorindizierungs- und -suchfunktion zu aktivieren.

Screenshot: Vorschaufeature der Volltext- und Hybridsuche im Azure-Portal

Um die Funktionen für die Volltextsuche zu verwenden, müssen Sie zunächst zwei Richtlinien definieren:

  • Eine Volltextrichtlinie auf Containerebene, die definiert, welche Pfade Text für die neuen Systemfunktionen der Volltextabfrage enthalten.
  • Ein der Indizierungsrichtlinie hinzugefügter Volltextindex, der eine effiziente Suche ermöglicht.

Volltextrichtlinie

Für jede Texteigenschaft, die Sie für die Volltextsuche konfigurieren möchten, müssen Sie sowohl path der Eigenschaft mit Text als auch language des Texts deklarieren. Eine einfache Volltextrichtlinie kann wie folgt aussehen:

{
   "defaultLanguage": "en-US",
   "fullTextPaths": [
       {
           "path": "/text",
           "language": "en-US"
       }
   ]
}

Das Definieren mehrerer Textpfade erfolgt ganz einfach durch Hinzufügen eines weiteren Elements zum fullTextPolicy-Array:

{
   "defaultLanguage": "en-US",
   "fullTextPaths": [
       {
           "path": "/text1",
           "language": "en-US"
       },
       {
           "path": "/text2",
           "language": "en-US"
       }
   ]
}

Hinweis

Derzeit wird nu Englisch („en-us“) als Sprache unterstützt.

Wichtig

Platzhalterzeichen (*, []) werden derzeit in der Volltextrichtlinie oder im Volltextindex nicht unterstützt.

Volltextindex

Alle Volltextsuchvorgänge sollten einen Volltextindex verwenden. Ein Volltextindex kann ganz einfach in jeder Azure Cosmos DB for NoSQL-Indexrichtlinie gemäß dem folgenden Beispiel definiert werden.

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*"
        }
    ],
    "excludedPaths": [
        {
            "path": "/\"_etag\"/?"
        },
    ],
    "fullTextIndexes": [
        {
            "path": "/text"
        }
    ]
}

Genau wie bei den Volltextrichtlinien können Volltextindizes für mehrere Pfade definiert werden.

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*"
        }
    ],
    "excludedPaths": [
        {
            "path": "/\"_etag\"/?"
        },
    ],
    "fullTextIndexes": [
        {
            "path": "/text"
        },
        {
            "path": "/text2"
        }
    ]
}

Volltextsuchabfragen

Volltextsuch- und -bewertungsvorgänge werden mithilfe der folgenden Systemfunktionen in der Azure Cosmos DB for NoSQL-Abfragesprache ausgeführt:

  • FullTextContains: Gibt true zurück, wenn eine angegebene Zeichenfolge in der angegebenen Eigenschaft eines Dokuments enthalten ist. Dies ist in einer WHERE-Klausel hilfreich, wenn Sie sicherstellen möchten, dass bestimmte Schlüsselwörter in den von Ihrer Abfrage zurückgegebenen Dokumenten enthalten sind.
  • FullTextContainsAll: Gibt true zurück, wenn alle der angegebenen Zeichenfolgen in der angegebenen Eigenschaft eines Dokuments enthalten sind. Dies ist in einer WHERE-Klausel hilfreich, wenn Sie sicherstellen möchten, dass mehrere Schlüsselwörter in den von Ihrer Abfrage zurückgegebenen Dokumenten enthalten sind.
  • FullTextContainsAny: Gibt true zurück, wenn eine der angegebenen Zeichenfolgen in der angegebenen Eigenschaft eines Dokuments enthalten ist. Dies ist in einer WHERE-Klausel hilfreich, wenn Sie sicherstellen möchten, dass mindestens ein Schlüsselwort in den von Ihrer Abfrage zurückgegebenen Dokumenten enthalten ist.
  • FullTextScore: Gibt eine Bewertung zurück. Dies kann nur in einer ORDER BY RANK-Klausel verwendet werden, in der die zurückgegebenen Dokumente nach dem Rang der Volltextbewertung sortiert werden, wobei die relevantesten Dokumente (höchste Bewertung) oben und die Dokumente mit der geringsten Relevanz (niedrigste Bewertung) unten aufgeführt sind.

Im Folgenden finden Sie einige Beispiele für die einzelnen Funktionen.

FullTextContains

In diesem Beispiel möchten wir die ersten 10 Ergebnisse abrufen, bei denen das Schlüsselwort „bicycle“ in der Eigenschaft c.text enthalten ist.

SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "bicycle")

FullTextContainsAll

In diesem Beispiel möchten wir die ersten 10 Ergebnisse abrufen, bei denen die Schlüsselwörter „red“ und „bicycle“ in der Eigenschaft c.text enthalten sind.

SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")

FullTextContainsAny

In diesem Beispiel möchten wir die ersten 10 Ergebnisse abrufen, bei denen die Schlüsselwörter „red“ und entweder „bicycle“ oder „skateboard“ in der Eigenschaft c.text enthalten sind.

SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")

FullTextScore

In diesem Beispiel möchten wir die ersten 10 Ergebnisse abrufen, in denen „mountain“ und „bicycle“ enthalten sind. Die Ergebnisse sollen nach Relevanz sortiert werden. Das heißt, Dokumente, in denen diese Begriffe häufiger vorkommen, sollten weiter oben in der Liste angezeigt werden.

SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])

Wichtig

FullTextScore kann nur in der ORDER BY RANK-Klausel verwendet und nicht in der SELECT-Anweisung oder in einer WHERE-Klausel projiziert werden.