Delen via


Zoeken in volledige tekst in Azure Cosmos DB voor NoSQL (preview)

Azure Cosmos DB voor NoSQL biedt nu een krachtige functie voor zoeken in volledige tekst in preview, ontworpen om de zoekmogelijkheden van uw toepassingen te verbeteren.

Notitie

Full Text & Hybrid Search is in een vroeg voorbeeld en is op dit moment mogelijk niet beschikbaar in alle regio's.

Azure Cosmos DB for NoSQL biedt nu een krachtige functie voor zoeken in volledige tekst in preview, ontworpen om uw mogelijkheden voor gegevensquery's te verbeteren. Deze functie omvat geavanceerde technieken voor tekstverwerking, zoals stemming, stoppen met het verwijderen van woorden en tokenisatie, waardoor efficiënte en effectieve tekstzoekopdrachten mogelijk zijn via een gespecialiseerde tekstindex. Zoeken in volledige tekst bevat ook een score voor volledige tekst met een functie waarmee de relevantie van documenten voor een bepaalde zoekquery wordt geëvalueerd. BM25, of Best Matching 25, houdt rekening met factoren zoals termfrequentie, inverse documentfrequentie en documentlengte om documenten te scoren en rangschikken. Dit helpt ervoor te zorgen dat de meest relevante documenten boven aan de zoekresultaten worden weergegeven, waardoor de nauwkeurigheid en bruikbaarheid van zoekopdrachten in tekst worden verbeterd.

Zoeken in volledige tekst is ideaal voor verschillende scenario's, waaronder:

  • E-commerce: Vind snel producten op basis van beschrijvingen, beoordelingen en andere tekstkenmerken.
  • Inhoudsbeheer: Efficiënt zoeken in artikelen, blogs en documenten.
  • Klantondersteuning: Haal relevante ondersteuningstickets, veelgestelde vragen en knowledge base-artikelen op.
  • Gebruikersinhoud: analyseren en doorzoeken door gebruikers gegenereerde inhoud, zoals berichten en opmerkingen.
  • RAG voor chatbots: Verbeter chatbotreacties door relevante informatie op te halen uit grote tekst corpora, waardoor de nauwkeurigheid en relevantie van antwoorden worden verbeterd.
  • AI-apps met meerdere agents met meerdere agents voor meerdere agents: hiermee kunnen grote hoeveelheden tekstgegevens worden gezocht en geanalyseerd, waardoor uitgebreide en genuanceerde inzichten worden geboden.

Notitie

Full Text & Hybrid Search (preview) is momenteel mogelijk niet beschikbaar in alle regio's.

  1. Schakel de preview-functie 'Full Text & Hybrid Search for NoSQL' in.
  2. Configureer een container met een beleid voor volledige tekst en een index voor volledige tekst.
  3. Voeg uw gegevens in met teksteigenschappen.
  4. Voer hybride query's uit op de gegevens.

De volledige tekst en hybride zoekopdracht inschakelen voor noSQL-preview-functie

Zoeken in volledige tekst, scoren van volledige tekst en hybride zoeken vereisen dat u de preview-functie inschakelt in uw Azure Cosmos DB for NoSQL-account voordat u deze gebruikt. Volg de onderstaande stappen om u te registreren:

  1. Navigeer naar de resourcepagina van Azure Cosmos DB for NoSQL.
  2. Selecteer het deelvenster Functies onder het menu-item Instellingen.
  3. Selecteer de functie 'Full Text & Hybrid Search for NoSQL API (preview)'.
  4. Lees de beschrijving van de functie om te bevestigen dat u deze wilt inschakelen.
  5. Selecteer Inschakelen om de vectorindexering en zoekfunctie in te schakelen.

Schermopname van de preview-functie voor volledige tekst en hybride zoekopdrachten in Azure Portal.

Als u zoekmogelijkheden voor volledige tekst wilt gebruiken, moet u eerst twee beleidsregels definiëren:

  • Een beleid voor volledige tekst op containerniveau waarmee wordt gedefinieerd welke paden tekst bevatten voor de nieuwe functies van het querysysteem voor volledige tekst.
  • Een volledige-tekstindex die is toegevoegd aan het indexeringsbeleid waarmee efficiënt kan worden gezocht.

Beleid voor volledige tekst

Voor elke teksteigenschap die u wilt configureren voor zoeken in volledige tekst, moet u zowel de path eigenschap met tekst als de language tekst van de tekst declareren. Een eenvoudig beleid voor volledige tekst kan zijn:

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

U kunt eenvoudig meerdere tekstpaden definiëren door een ander element toe te voegen aan de fullTextPolicy matrix:

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

Notitie

Engels ('en-us' als taal) is de enige ondersteunde taal op dit moment.

Belangrijk

Jokertekens (*, []) worden momenteel niet ondersteund in het volledige tekstbeleid of de volledige-tekstindex.

Index voor volledige tekst

Alle zoekbewerkingen voor volledige tekst moeten gebruikmaken van een volledige tekstindex. Een volledige-tekstindex kan eenvoudig worden gedefinieerd in elk Azure Cosmos DB for NoSQL-indexbeleid volgens het onderstaande voorbeeld.

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

Net als bij het volledige tekstbeleid kunnen indexen voor volledige tekst op meerdere paden worden gedefinieerd.

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

Query's voor zoeken in volledige tekst

Zoek- en scorebewerkingen voor volledige tekst worden uitgevoerd met behulp van de volgende systeemfuncties in de Querytaal van Azure Cosmos DB voor NoSQL:

  • FullTextContains: retourneert true als een bepaalde tekenreeks is opgenomen in de opgegeven eigenschap van een document. Dit is handig in een WHERE component als u ervoor wilt zorgen dat specifieke sleutelwoorden worden opgenomen in de documenten die door uw query worden geretourneerd.
  • FullTextContainsAll: retourneert true als alle opgegeven tekenreeksen zijn opgenomen in de opgegeven eigenschap van een document. Dit is handig in een WHERE component als u ervoor wilt zorgen dat meerdere sleutelwoorden worden opgenomen in de documenten die door uw query worden geretourneerd.
  • FullTextContainsAny: retourneert true als een van de opgegeven tekenreeksen is opgenomen in de opgegeven eigenschap van een document. Dit is handig in een WHERE component als u ervoor wilt zorgen dat ten minste één van de sleutelwoorden wordt opgenomen in de documenten die door uw query worden geretourneerd.
  • FullTextScore: retourneert een score. Dit kan alleen worden gebruikt in een ORDER BY RANK component, waarbij de geretourneerde documenten worden gerangschikt op basis van de positie van de volledige tekstscore, met de meeste relevante (hoogste score) documenten bovenaan en minst relevante (laagste score) documenten onderaan.

Hier volgen enkele voorbeelden van elke functie die wordt gebruikt.

FullTextContains

In dit voorbeeld willen we de eerste 10 resultaten verkrijgen waarbij het trefwoord 'fiets' in de eigenschap c.textstaat.

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

FullTextContainsAll

In dit voorbeeld willen we de eerste 10 resultaten verkrijgen waarbij de trefwoorden 'rood' en 'fiets' zijn opgenomen in de eigenschap c.text.

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

FullTextContainsAny

In dit voorbeeld willen we de eerste 10 resultaten verkrijgen waarbij de trefwoorden 'rood' en 'fiets' of 'skateboard' zijn opgenomen in de eigenschap c.text.

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

FullTextScore

In dit voorbeeld willen we de eerste 10 resultaten verkrijgen waarbij 'berg' en 'fiets' zijn opgenomen en gesorteerd op volgorde van relevantie. Documenten met deze termen moeten dus vaker hoger worden weergegeven in de lijst.

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

Belangrijk

FullTextScore kan alleen worden gebruikt in de ORDER BY RANK component en niet worden geprojecteerd in de SELECT instructie of in een WHERE component.