Indexdaten aus Azure Cosmos DB für MongoDB für Abfragen in Azure KI-Suche (Vorschau)

Note

Azure KI-Suche ist über das Azure Portal, REST-APIs und Azure SDKs verfügbar. Es unterstützt auch Foundry IQ, die verwaltete Wissensschicht, die Unternehmensinhalte in wiederverwendbare, berechtigungsfähige Wissensbasen für Agenten im Microsoft Foundry-Portal transformiert.

Note

Diese Funktion steht derzeit als Vorschau zur Verfügung. Diese Vorschau wird ohne Vereinbarung auf Serviceebene bereitgestellt und wird für Produktionsworkloads nicht empfohlen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Supplementale Nutzungsbedingungen für Microsoft Azure Previews.

Wichtig

Diese Features und Funktionen unterstützen Verbindungen mit anderen Microsoft-Dienste und Drittanbieterdiensten. Die Nutzung dieser Dienste unterliegt den jeweiligen Bestimmungen und kann dazu führen, dass Daten außerhalb der Azure-Compliancegrenze verarbeitet oder gespeichert werden und dass Daten in die Azure-Compliancegrenze fließen.

Es liegt in Ihrer Verantwortung, zu verwalten, ob Ihre Daten außerhalb der Compliance- und geografischen Grenzen Ihrer Organisation und alle damit verbundenen Auswirkungen fließen und dass entsprechende Berechtigungen, Grenzen und Genehmigungen bereitgestellt werden.

Sie sind dafür verantwortlich, Anwendungen, die Sie im Kontext Ihrer spezifischen Anwendungsfälle erstellen, sorgfältig zu überprüfen und zu testen und alle geeigneten Entscheidungen und Anpassungen zu treffen. Dazu gehört die Implementierung ihrer eigenen verantwortungsvollen KI-Entschärfungen, wie Metaprompts, Inhaltsfilter oder andere Sicherheitssysteme, und sicherzustellen, dass Ihre Anwendungen angemessene Qualität, Zuverlässigkeit, Sicherheit und Vertrauenswürdigkeitsstandards erfüllen. Weitere Informationen finden Sie im Azure KI-Suche Transparenzhinweis.

In diesem Artikel erfahren Sie, wie Sie einen indexer konfigurieren, der Inhalte aus Azure Cosmos DB für MongoDB importiert und in Azure KI-Suche durchsuchbar macht.

Dieser Artikel ergänzt das Erstellen eines Indexers mit Informationen, die für Cosmos DB spezifisch sind. Es verwendet die REST-APIs, um einen dreiteiligen Workflow zu veranschaulichen, der allen Indexern gemeinsam ist: Erstellen einer Datenquelle, Erstellen eines Indexes, Erstellen eines Indexers. Die Datenextraktion tritt auf, wenn Sie die Anforderung zum Erstellen von Indexer übermitteln.

Da die Terminologie verwirrend sein kann, ist es erwähnenswert, dass Azure Cosmos DB Indizierung und Azure KI-Suche Indizierung unterschiedliche Vorgänge sind. Die Indizierung in Azure KI-Suche erstellt und lädt einen Suchindex in Ihrem Suchdienst.

Voraussetzungen

  • Registrieren Sie sich für die Vorschau , um Szenariofeedback bereitzustellen. Sie können nach der Formularübermittlung automatisch auf das Feature zugreifen.

  • Ein Azure Cosmos DB Konto, Datenbank, Sammlung und Dokumente. Verwenden Sie dieselbe Region sowohl für Azure KI-Suche als auch für Azure Cosmos DB für niedrigere Latenz und um Bandbreitengebühren zu vermeiden.

  • Eine automatische Indizierungsrichtlinie für die Azure Cosmos DB-Auflistung, die auf Konsistent festgelegt ist. Dies ist die Standardkonfiguration. Faules Indexieren wird nicht empfohlen und kann zu fehlenden Daten führen.

  • Leseberechtigungen. Eine Vollzugriff-Verbindungszeichenfolge enthält einen Schlüssel, der Zugriff auf den Inhalt gewährt. Wenn Sie jedoch Azure-Rollen verwenden, stellen Sie sicher, dass die verwaltete Identität des Suchdiensts über die Berechtigungen der Cosmos DB-Rolle „Kontoleser“ verfügt.

  • Ein REST-Client zum Erstellen der Datenquelle, des Indexes und des Indexers.

Einschränkungen

Dies sind die Einschränkungen dieses Features:

  • Benutzerdefinierte Abfragen werden für die Angabe des Datasets nicht unterstützt.

  • Der Spaltenname _ts ist ein reserviertes Wort. Wenn Sie dieses Feld benötigen, sollten Sie alternative Lösungen zum Auffüllen eines Indexes in Betracht ziehen.

  • Das MongoDB-Attribut $ref ist ein reserviertes Wort. Wenn Sie dies in Ihrer MongoDB-Sammlung benötigen, sollten Sie alternative Lösungen zum Auffüllen eines Indexes in Betracht ziehen.

Als Alternative zu diesem Konnektor könnten Sie, wenn Ihr Szenario eine dieser Anforderungen erfüllt, die Push API/SDK verwenden oder Azure Data Factory mit einem Azure KI-Suche Index als Senke in Betracht ziehen.

Definieren der Datenquelle

Die Datenquellendefinition gibt die Daten an, die indiziert werden sollen, Anmeldeinformationen und Richtlinien zum Identifizieren von Änderungen in den Daten. Eine Datenquelle wird als unabhängige Ressource definiert, sodass sie von mehreren Indexern verwendet werden kann.

Geben Sie für diesen Aufruf eine Vorschau-REST-API-Version an. Sie können 2020-06-30-preview oder höher verwenden, um eine Datenquelle zu erstellen, die über die MongoDB-API eine Verbindung herstellt. Wir empfehlen die neueste Vorschau-REST-API.

  1. Erstellen oder Aktualisieren einer Datenquelle zum Festlegen der Definition:

    POST https://[service name].search.windows.net/datasources?api-version=2026-05-01-preview
    Content-Type: application/json
    api-key: [Search service admin key]
    {
      "name": "[my-cosmosdb-mongodb-ds]",
      "type": "cosmosdb",
      "credentials": {
        "connectionString": "AccountEndpoint=https://[cosmos-account-name].documents.azure.com;AccountKey=[cosmos-account-key];Database=[cosmos-database-name];ApiKind=MongoDb;"
      },
      "container": {
        "name": "[cosmos-db-collection]",
        "query": null
      },
      "dataChangeDetectionPolicy": {
        "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName": "_ts"
      },
      "dataDeletionDetectionPolicy": null,
      "encryptionKey": null,
      "identity": null
    }
    
  2. Legen Sie "Type" auf "cosmosdb" (erforderlich) fest.

  3. Legen Sie „credentials“ auf eine Verbindungszeichenfolge fest. Im nächsten Abschnitt werden die unterstützten Formate beschrieben.

  4. Legen Sie „container“ auf die Auflistung fest. Die Eigenschaft "name" ist erforderlich und gibt die ID der Datenbankauflistung an, die indiziert werden soll. Für Azure Cosmos DB für MongoDB wird "query" nicht unterstützt.

  5. Legen Sie "dataChangeDetectionPolicy" fest, wenn Daten veränderlich sind und der Indexer nur die neuen und aktualisierten Elemente bei nachfolgenden Ausführungen aufnehmen soll.

  6. Legen Sie "dataDeletionDetectionPolicy" fest, wenn Sie Suchdokumente aus einem Suchindex entfernen möchten, wenn das Quellelement gelöscht wird.

Unterstützte Anmeldeinformationen und Verbindungszeichenfolgen

Indexer können mithilfe der folgenden Verbindungen eine Verbindung mit einer Auflistung herstellen. Achten Sie darauf, bei Verbindungen, die auf die MongoDB-API abzielen, unbedingt "ApiKind" in die Verbindungszeichenfolge einzuschließen.

Vermeiden Sie Portnummern in der Endpunkt-URL. Wenn Sie die Portnummer einschließen, schlägt die Verbindung fehl.

Vollzugriffs-Verbindungszeichenfolge
{ "connectionString" : "AccountEndpoint=https://<Cosmos DB account name>.documents.azure.com;AccountKey=<Cosmos DB auth key>;Database=<Cosmos DB database id>;ApiKind=MongoDb" }
Sie können den Cosmos DB-Authentifizierungsschlüssel über die seite Azure Cosmos DB Konto im Azure Portal abrufen, indem Sie im linken Bereich Verbindenzeichenfolge auswählen. Kopieren Sie das primäre Kennwort , und ersetzen Sie den Wert des Cosmos DB-Authentifizierungsschlüssels durch ihn.
Verwaltete Identitäts-Verbindungszeichenfolge
{ "connectionString" : "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.DocumentDB/databaseAccounts/<your cosmos db account name>/;(ApiKind=[api-kind];)" }
Diese Verbindungszeichenfolge erfordert keinen Kontoschlüssel, aber Sie müssen zuvor einen Suchdienst für die Verbindungsherstellung mithilfe einer verwalteten Identität konfiguriert und eine Rollenzuweisung erstellt haben, die Berechtigungen der Cosmos DB-Rolle „Kontoleser“ gewährt. Weitere Informationen finden Sie unter Einrichten einer Indexerverbindung zu einer Azure Cosmos DB-Datenbank mit einer verwalteten Identität.

Hinzufügen von Suchfeldern zu einem Index

Fügen Sie in einem Suchindex Felder hinzu, um die JSON-Quelldokumente oder die Ausgabe Ihrer benutzerdefinierten Abfrageprojektion zu akzeptieren. Stellen Sie sicher, dass das Suchindexschema mit Quelldaten kompatibel ist. Für Inhalte in Azure Cosmos DB sollte Ihr Suchindexschema den Azure Cosmos DB Items in Der Datenquelle entsprechen.

  1. Erstellen oder Aktualisieren Sie einen Index, um Suchfelder zu definieren, die Daten speichern werden:

    POST https://[service name].search.windows.net/indexes?api-version=2026-05-01-preview
    Content-Type: application/json
    api-key: [Search service admin key]
    
    {
        "name": "mysearchindex",
        "fields": [{
            "name": "doc_id",
            "type": "Edm.String",
            "key": true,
            "retrievable": true,
            "searchable": false
        }, {
            "name": "description",
            "type": "Edm.String",
            "filterable": false,
            "searchable": true,
            "sortable": false,
            "facetable": false,
            "suggestions": true
        }]
    }
    
  2. Erstellen Sie ein Dokumentschlüsselfeld ("Schlüssel": true). Bei einem Suchindex, der auf einer MongoDB-Auflistung basiert, kann der Dokumentschlüssel "doc_id", "rid" oder ein anderes Zeichenfolgenfeld sein, das eindeutige Werte enthält. Solange Feldnamen und Datentypen auf beiden Seiten gleich sind, sind keine Feldzuordnungen erforderlich.

    • "doc_id" stellt "_id" für den Objektbezeichner dar. Wenn Sie ein Feld von "doc_id" im Index angeben, füllt der Indexer es mit den Werten des Objektbezeichners auf.

    • "rid" ist eine Systemeigenschaft in Azure Cosmos DB. Wenn Sie ein Feld "rid" im Index angeben, füllt der Indexer es mit dem base64-codierten Wert der "rid"-Eigenschaft auf.

    • Für jedes andere Feld sollte Ihr Suchfeld denselben Namen wie in der Sammlung definiert haben.

  3. Erstellen Sie zusätzliche Felder für mehr durchsuchbare Inhalte. Details finden Sie unter Erstellen eines Indexes .

Zuordnen von Datentypen

JSON-Datentyp Azure KI-Suche Feldtypen
Bool Edm.Boolean, Edm.String
Zahlen, die wie ganze Zahlen aussehen Edm.Int32, Edm.Int64, Edm.String
Zahlen, die wie Gleitkommapunkte aussehen Edm.Double, Edm.String
Schnur Edm.String
Arrays von Grundtypen wie ["a", "b", "c"] Collection(Edm.String)
Zeichenfolgen, die wie Datumsangaben aussehen Edm.DateTimeOffset, Edm.String
GeoJSON-Objekte wie { "type": "Point", "coordinates": [long, lat] } Edm.GeographyPoint
Andere JSON-Objekte N/A

Konfigurieren und Ausführen der Azure Cosmos DB für den MongoDB-Indexer

Nachdem der Index und die Datenquelle erstellt wurden, können Sie den Indexer erstellen. Die Indexerkonfiguration gibt die Eingaben, Parameter und Eigenschaften an, die das Laufzeitverhalten steuern.

  1. Erstellen oder aktualisieren Sie einen Indexer , indem Sie ihm einen Namen geben und auf die Datenquelle und den Zielindex verweisen:

    POST https://[service name].search.windows.net/indexers?api-version=2026-05-01-preview
    Content-Type: application/json
    api-key: [search service admin key]
    {
        "name" : "[my-cosmosdb-indexer]",
        "dataSourceName" : "[my-cosmosdb-mongodb-ds]",
        "targetIndexName" : "[my-search-index]",
        "disabled": null,
        "schedule": null,
        "parameters": {
            "batchSize": null,
            "maxFailedItems": 0,
            "maxFailedItemsPerBatch": 0,
            "base64EncodeKeys": false,
            "configuration": {}
            },
        "fieldMappings": [],
        "encryptionKey": null
    }
    
  2. Geben Sie Feldzuordnungen an, wenn Es Unterschiede im Feldnamen oder Typ gibt oder wenn Sie mehrere Versionen eines Quellfelds im Suchindex benötigen.

  3. Weitere Informationen zu anderen Eigenschaften finden Sie unter Erstellen eines Indexers .

Ein Indexer wird automatisch ausgeführt, wenn er erstellt wird. Sie können dies verhindern, indem Sie "deaktiviert" auf "true" festlegen. Um die Indexerausführung zu steuern, führen Sie einen Indexer bei Bedarf aus, oder setzen Sie ihn in einen Zeitplan.

Indexerstatus überprüfen

Um den Indexerstatus und den Ausführungsverlauf zu überwachen, senden Sie eine Get Indexer Status-Anforderung :

GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2026-05-01-preview
  Content-Type: application/json  
  api-key: [admin key]

Die Antwort enthält den Status und die Anzahl der verarbeiteten Elemente. Es sollte ähnlich wie im folgenden Beispiel aussehen:

    {
        "status":"running",
        "lastResult": {
            "status":"success",
            "errorMessage":null,
            "startTime":"2022-02-21T00:23:24.957Z",
            "endTime":"2022-02-21T00:36:47.752Z",
            "errors":[],
            "itemsProcessed":1599501,
            "itemsFailed":0,
            "initialTrackingState":null,
            "finalTrackingState":null
        },
        "executionHistory":
        [
            {
                "status":"success",
                "errorMessage":null,
                "startTime":"2022-02-21T00:23:24.957Z",
                "endTime":"2022-02-21T00:36:47.752Z",
                "errors":[],
                "itemsProcessed":1599501,
                "itemsFailed":0,
                "initialTrackingState":null,
                "finalTrackingState":null
            },
            ... earlier history items
        ]
    }

Der Ausführungsverlauf enthält bis zu 50 der zuletzt abgeschlossenen Ausführungen, die in umgekehrter chronologischer Reihenfolge sortiert sind, sodass die neueste Ausführung zuerst erfolgt.

Indizieren neuer und geänderter Dokumente

Nachdem ein Indexer einen Suchindex vollständig aufgefüllt hat, möchten Sie möglicherweise, dass nachfolgende Indexerläufe nur die neuen und geänderten Dokumente in Ihrer Datenbank schrittweise indizieren.

Um die inkrementelle Indizierung zu aktivieren, legen Sie die Eigenschaft "dataChangeDetectionPolicy" in Ihrer Datenquellendefinition fest. Diese Eigenschaft teilt dem Indexer mit, welcher Änderungsnachverfolgungsmechanismus für Ihre Daten verwendet wird.

Für Azure Cosmos DB Indexer ist die einzige unterstützte Richtlinie die HighWaterMarkChangeDetectionPolicy unter Verwendung der _ts -Eigenschaft (Timestamp), die von Azure Cosmos DB bereitgestellt wird.

Das folgende Beispiel zeigt eine Datenquellendefinition mit einer Änderungserkennungsrichtlinie:

"dataChangeDetectionPolicy": {
    "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
"  highWaterMarkColumnName": "_ts"
},

Indizieren gelöschter Dokumente

Wenn Zeilen aus der Auflistung gelöscht werden, möchten Sie diese Zeilen normalerweise auch aus dem Suchindex löschen. Der Zweck einer Datenlöscherkennungsrichtlinie besteht darin, gelöschte Datenelemente effizient zu identifizieren. Derzeit ist die einzige unterstützte Richtlinie die Soft Delete-Richtlinie (Löschvorgang wird mit einer Art Kennzeichnung versehen), die in der Datenquellendefinition wie folgt angegeben wird:

"dataDeletionDetectionPolicy"": {
    "@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
    "softDeleteColumnName" : "the property that specifies whether a document was deleted",
    "softDeleteMarkerValue" : "the value that identifies a document as deleted"
}

Wenn Sie eine benutzerdefinierte Abfrage verwenden, stellen Sie sicher, dass die Eigenschaft, auf die softDeleteColumnName verweist, in der Abfrage projiziert wird.

Im folgenden Beispiel wird eine Datenquelle mit einer Richtlinie für das vorläufige Löschen erstellt:

POST https://[service name].search.windows.net/datasources?api-version=2026-05-01-preview
Content-Type: application/json
api-key: [Search service admin key]

{
    "name": ["my-cosmosdb-mongodb-ds]",
    "type": "cosmosdb",
    "credentials": {
        "connectionString": "AccountEndpoint=https://[cosmos-account-name].documents.azure.com;AccountKey=[cosmos-account-key];Database=[cosmos-database-name];ApiKind=MongoDB"
    },
    "container": { "name": "[my-cosmos-collection]" },
    "dataChangeDetectionPolicy": {
        "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName": "_ts"
    },
    "dataDeletionDetectionPolicy": {
        "@odata.type": "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
        "softDeleteColumnName": "isDeleted",
        "softDeleteMarkerValue": "true"
    }
}

Nächste Schritte

Sie können nun steuern, wie Sie den Indexer ausführen, den Status überwachen oder die Ausführung des Indexers planen. Die folgenden Artikel gelten für Indexer, die Inhalte aus Azure Cosmos DB abrufen: