Freigeben über


Erstellen eines Vektorindexes

In Azure AI Search können Sie create or Update Index (REST API) verwenden, um Vektoren in einem Suchindex zu speichern. Ein Vektorindex wird durch ein Indexschema definiert, das Vektorfelder, Nichtvektorfelder und einen Vektorkonfigurationsabschnitt enthält.

Wenn Sie einen Vektorindex erstellen, erstellen Sie implizit einen Einbettungsraum, der als Korpus für Vektorabfragen dient. Der Einbettungsraum besteht aus allen Vektorfeldern, die mit Einbettungen aus dem gleichen Einbettungsmodell aufgefüllt werden. Zur Abfragezeit vergleicht das System die Vektorabfrage mit den indizierten Vektoren und gibt Ergebnisse basierend auf semantischer Ähnlichkeit zurück.

Führen Sie die folgenden Schritte aus, um Vektoren in Azure AI Search indizieren zu können:

  • Beginnen Sie mit einer einfachen Schemadefinition.
  • Fügen Sie Vektoralgorithmen und optionale Komprimierung hinzu.
  • Fügen Sie Vektorfelddefinitionen hinzu.
  • Laden Sie vorvectorisierte Daten als separaten Schritt , oder verwenden Sie die integrierte Vektorisierung für Datenblöcke und Einbettungen während der Indizierung.

In diesem Artikel wird REST zur Veranschaulichung verwendet. Nachdem Sie den grundlegenden Workflow verstanden haben, fahren Sie mit den Azure SDK-Codebeispielen im Repository azure-search-vector-samples fort, das Anleitungen zur Verwendung von Vektoren im Test- und Produktionscode bietet.

Tipp

Sie können auch das Azure-Portal verwenden, um einen Vektorindex zu erstellen und integrierte Datenblöcke und Vektorisierung auszuprobieren.

Voraussetzungen

  • Ein Azure AI Search-Dienst in jeder Region und auf jeder Ebene. Wenn Sie beabsichtigen, die integrierte Vektorisierung mit Azure AI-Fähigkeiten und -Vektorisierern zu verwenden, muss Sich Azure AI Search in derselben Region befinden wie die in Azure AI Vision gehosteten Einbettungsmodelle.

  • Ihre Quelldokumente müssen Vektoreinbettungen aufweisen, um in den Index hochzuladen. Sie können auch die integrierte Vektorisierung für diesen Schritt verwenden.

  • Sie sollten die Dimensioneninschränkung des Modells kennen, das die Einbettungen erstellt, damit Sie diese Grenze dem Vektorfeld zuweisen können. Für text-embedding-ada-002 werden die Dimensionen auf 1.536 begrenzt. Bei texteinbettung-3-klein oder texteinbettung-3-groß reichen die Abmessungen von 1 bis 1536 bzw. von 1 bis 3072.

  • Sie sollten wissen, welche Ähnlichkeitsmetrik verwendet werden soll. Bei Einbettungsmodelle in Azure OpenAI wird Ähnlichkeit mithilfe von cosine berechnet.

  • Sie sollten wissen, wie Sie einen Index erstellen. Ein Schema enthält immer ein Feld für den Dokumentschlüssel, Felder für Die Suche oder Filter und andere Konfigurationen für Verhaltensweisen, die während der Indizierung und Abfragen erforderlich sind.

Einschränkungen

Einige suchdienste, die vor Januar 2019 erstellt wurden, können keinen Vektorindex erstellen. Wenn dies auf Sie zutrifft, erstellen Sie einen neuen Dienst, um Vektoren zu verwenden.

Vorbereiten von Dokumenten für die Indizierung

Erstellen Sie vor der Indizierung eine Dokumentnutzlast, die Felder von Vektor- und Nichtvektordaten enthält. Die Dokumentstruktur muss der Feldauflistung des Indexschemas entsprechen.

Stellen Sie sicher, dass Ihre Quelldokumente den folgenden Inhalt bereitstellen:

Inhalt BESCHREIBUNG
Eindeutiger Bezeichner Ein Feld oder eine Metadateneigenschaft, die jedes Dokument eindeutig identifiziert. Für alle Suchindizes ist ein Dokumentschlüssel erforderlich. Um die Anforderungen des Dokumentschlüssels zu erfüllen, muss ein Quelldokument über ein Feld oder eine Eigenschaft verfügen, die es im Index eindeutig identifiziert. Wenn Sie Blobs indizieren, könnte es möglicherweise der "metadata_storage_path" sein, der die einzelnen Blobs eindeutig identifiziert. Wenn Sie aus einer Datenbank indizieren, ist diese möglicherweise der Primärschlüssel. Dieses Quellfeld muss einem Indexfeld vom Typ Edm.String und key=true im Suchindex zugeordnet werden.
Nicht Vektorinhalt Stellen Sie andere Felder mit lesbaren Inhalten bereit. Lesbarer Inhalt ist nützlich für die Abfrageantwort und für Hybridabfragen , die Volltextsuche oder semantische Rangfolge in derselben Anforderung enthalten. Wenn Sie ein Chatabschlussmodell verwenden, erwarten die meisten Modelle wie ChatGPT lesbaren Text und akzeptieren keine unformatierten Vektoren als Eingabe.
Vektorinhalt Eine vektorisierte Darstellung Ihres nicht vektorisierten Inhalts zur Verwendung zur Abfragezeit. Ein Vektor ist ein Array von Gleitkommazahlen mit einfacher Genauigkeit, die von einem Einbettungsmodell generiert werden. Jedes Vektorfeld enthält ein modellgeneriertes Array. Es gibt eine Einbettung pro Feld, wobei das Feld ein Feld auf oberster Ebene ist (nicht Teil eines geschachtelten oder komplexen Typs). Für eine einfache Integration empfehlen wir das Einbetten von Modellen in Azure OpenAI, z. B. text-embedding-3 für Textdokumente oder die Bildabruf-REST-API für Bilder und multimodale Einbettungen.

Wenn Sie Indexer und Skillsets verwenden können, sollten Sie die integrierte Vektorisierung in Betracht ziehen, die Bilder und Text während der Indizierung codiert. Ihre Felddefinitionen gelten für Vektorfelder. Bei eingehenden Quelldaten kann es sich jedoch um Text oder Bilder handeln, die während der Indizierung in Vektorarrays konvertiert werden.

Ihr Suchindex sollte Felder und Inhalte für alle Abfrageszenarien enthalten, die Sie unterstützen möchten. Angenommen, Sie möchten nach Produktnamen, Versionen, Metadaten oder Adressen suchen oder filtern. In diesem Fall ist die Vektorgleichheitssuche nicht besonders hilfreich. Schlüsselwortsuche, Geosuche oder Filter, die wortwörtliche Inhalte durchlaufen, wären eine bessere Wahl. Ein Suchindex, der sowohl Vektor- als auch Nichtvektorfelder umfasst, bietet maximale Flexibilität für die Erstellung und Reaktionskomposition von Abfragen.

Ein kurzes Beispiel für eine Dokumentnutzlast, die Vektor- und Nichtvektorfelder enthält, finden Sie im Abschnitt zum Laden von Vektordaten in diesem Artikel.

Beginnen mit einem Basisindex

Beginnen Sie mit einem Mindestschema, damit Sie eine Definition verwenden können, bevor Sie eine Vektorkonfiguration und Vektorfelder hinzufügen. Ein einfacher Index könnte im folgenden Beispiel aussehen. Weitere Informationen zu einem Indexschema finden Sie unter Erstellen eines Suchindexes.

Beachten Sie, dass der Index über einen erforderlichen Namen, einen erforderlichen Dokumentschlüssel ("key": true) und Felder für lesbaren Inhalt im Nur-Text verfügt. Es ist üblich, eine lesbare Version von inhalten zu haben, die Sie vektorisieren möchten. Wenn Sie z. B. über einen Textabschnitt aus einer PDF-Datei verfügen, sollte Ihr Indexschema ein Feld für Nur-Text-Blöcke und ein zweites Feld für vektorisierte Blöcke aufweisen.

Hier ist ein grundlegender Index mit einer "name", einer "fields" Auflistung und einigen anderen Konstrukten für eine zusätzliche Konfiguration:

POST https://[servicename].search.windows.net/indexes?api-version=[api-version] 
{
  "name": "example-index",
  "fields": [
    { "name": "documentId", "type": "Edm.String", "key": true, "retrievable": true, "searchable": true, "filterable": true },
    { "name": "myHumanReadableNameField", "type": "Edm.String", "retrievable": true, "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "myHumanReadableContentField", "type": "Edm.String", "retrievable": true, "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
  ],
  "analyzers": [ ],
  "scoringProfiles": [ ],
  "suggesters": [ ],
  "vectorSearch": [ ]
}

Hinzufügen einer Vektorsuchkonfiguration

Fügen Sie als Nächstes ihrem Schema eine "vectorSearch" Konfiguration hinzu. Es ist hilfreich, eine Konfiguration vor Felddefinitionen anzugeben, da die hier definierten Profile Teil der Definition des Vektorfelds werden. Im Schema wird die Vektorkonfiguration in der Regel nach der Feldauflistung eingefügt, vielleicht nach "analyzers", "scoringProfiles"und "suggesters". Die Reihenfolge spielt jedoch keine Rolle.

Eine Vektorkonfiguration umfasst:

  • vectorSearch.algorithms wird während der Indizierung verwendet, um „Nächste-Nachbarn“-Informationen zwischen den Vektorknoten zu erstellen.
  • vectorSearch.compressions für skalare oder binäre Quantisierung, Übersampling und Reranking mit originalen Vektoren.
  • vectorSearch.profiles zum Angeben mehrerer Kombinationen von Algorithmus- und Komprimierungskonfigurationen.

2024-07-01 ist allgemein verfügbar. Sie unterstützt eine Vektorkonfiguration mit:

  • Hierarchischer Navigable Small World (HNSW)-Algorithmus.
  • Erschöpfender K-Nearest Neighbor (KNN)-Algorithmus.
  • Skalare Komprimierung.
  • Binäre Komprimierung, die nur in 2024-07-01 und in neueren Azure SDK-Paketen verfügbar ist.
  • Überquotierung.
  • Neusortierung mit originalen Vektoren.

Wenn Sie HNSW für ein Feld auswählen, können Sie sich zur Abfragezeit für umfassende KNN entscheiden. Das Gegenteil funktioniert jedoch nicht. Wenn Sie sich für die Indizierung erschöpfend entscheiden, können Sie später keine HNSW-Suche anfordern, da die zusätzlichen Datenstrukturen, die die ungefähre Suche ermöglichen, nicht vorhanden sind.

Stellen Sie sicher, dass Sie eine Strategie für die Vektorisierung Ihrer Inhalte haben. Es wird empfohlen, integrierte Vektorisierung und Abfragezeitvektorisierung für integrierte Codierung zu verwenden.

  1. Verwenden Sie die REST-API zum Erstellen oder Aktualisieren des Indexes , um den Index zu erstellen.

  2. Fügen Sie den Abschnitt vectorSearch im Index hinzu, der die Suchalgorithmen angibt, mit denen der Einbettungsraum erstellt wird.

     "vectorSearch": {
         "compressions": [
             {
                 "name": "scalar-quantization",
                 "kind": "scalarQuantization",
                 "rerankWithOriginalVectors": true,
                 "defaultOversampling": 10.0,
                     "scalarQuantizationParameters": {
                         "quantizedDataType": "int8"
                     }
             },
             {
                 "name": "binary-quantization",
                 "kind": "binaryQuantization",
                 "rerankWithOriginalVectors": true,
                 "defaultOversampling": 10.0
             }
         ],
         "algorithms": [
             {
                 "name": "hnsw-1",
                 "kind": "hnsw",
                 "hnswParameters": {
                     "m": 4,
                     "efConstruction": 400,
                     "efSearch": 500,
                     "metric": "cosine"
                 }
             },
             {
                 "name": "hnsw-2",
                 "kind": "hnsw",
                 "hnswParameters": {
                     "m": 8,
                     "efConstruction": 800,
                     "efSearch": 800,
                     "metric": "hamming"
                 }
             },
             {
                 "name": "eknn",
                 "kind": "exhaustiveKnn",
                 "exhaustiveKnnParameters": {
                     "metric": "euclidean"
                 }
             }
    
         ],
         "profiles": [
           {
             "name": "vector-profile-hnsw-scalar",
             "compression": "scalar-quantization",
             "algorithm": "hnsw-1"
           }
         ]
     }
    

    Die wichtigsten Punkte:

    • Namen für die einzelnen Komprimierungs-, Algorithmus- und Profilkonfigurationen müssen für den zugehörigen Typ innerhalb des Indexes eindeutig sein.

    • vectorSearch.compressions kann scalarQuantization oder binaryQuantization sein. Die skalare Quantisierung komprimiert Float-Werte in schmalere Datentypen. Die binäre Quantisierung konvertiert Floats in binäre 1-Bit-Werte.

    • vectorSearch.compressions.rerankWithOriginalVectors verwendet die ursprünglichen, nicht komprimierten Vektoren, um Die Ähnlichkeit neu zu berechnen und die top-Ergebnisse zu reranken, die von der ursprünglichen Suchabfrage zurückgegeben werden. Die nicht komprimierten Vektoren sind im Suchindex vorhanden, auch wenn stored "false" ist. Diese Eigenschaft ist optional. Der Standardwert ist "true".

    • vectorSearch.compressions.defaultOversampling berücksichtigt eine breitere Reihe potenzieller Ergebnisse, um den Informationsverlust durch die Quantisierung auszugleichen. Die Formel für potenzielle Ergebnisse besteht aus der k Abfrage mit einem Oversampling-Multiplikator. Wenn die Abfrage beispielsweise einen k Wert von 5 angibt und die Überstempelung 20 ist, fordert die Abfrage effektiv 100 Dokumente für die Verwendung in reranking an, wobei der ursprüngliche nicht komprimierte Vektor zu diesem Zweck verwendet wird. Es werden nur die top rerangierten k Ergebnisse zurückgegeben. Diese Eigenschaft ist optional. Der Standardwert ist 4.

    • vectorSearch.compressions.scalarQuantizationParameters.quantizedDataType muss auf int8 festgelegt werden. Dies ist der einzige primitive Datentyp, der derzeit unterstützt wird. Diese Eigenschaft ist optional. Der Standardwert ist int8.

    • vectorSearch.algorithms ist entweder hnsw oder exhaustiveKnn. Dies sind die ANN-Algorithmen (Approximate Nearest Neighbors, ungefähre nächste Nachbarn), die zum Organisieren von Vektorinhalten während der Indizierung verwendet werden.

    • vectorSearch.algorithms.m ist die Anzahl bidirektionaler Verknüpfungen. Der Standardwert ist 4. Der Bereich liegt zwischen 4 und 10. Niedrigere Werte sollten zu einer geringeren Anzahl falscher Ergebnisse führen.

    • vectorSearch.algorithms.efConstruction ist die Anzahl der nächsten Nachbarn, die während der Indizierung verwendet werden. Der Standardwert ist 400. Der Bereich liegt zwischen 100 und 1.000.

    • "vectorSearch.algorithms.efSearch ist die Anzahl der nächsten Nachbarn, die während der Suche verwendet werden. Der Standardwert ist 500. Der Bereich liegt zwischen 100 und 1.000.

    • vectorSearch.algorithms.metric sollte cosine sein, wenn Sie Azure OpenAI verwenden; andernfalls verwenden Sie die Ähnlichkeitsmetrik, die dem von Ihnen verwendeten Einbettungsmodell zugeordnet ist. Unterstützte Werte sind cosine, dotProduct, euclideanund hamming (für die Indizierung von Binärdaten verwendet).

    • vectorSearch.profiles fügt eine Abstraktionsebene für umfangreichere Definitionen hinzu. Ein Profil wird in vectorSearch definiert und in jedem Vektorfeld anhand seines Namens referenziert. Es handelt sich um eine Kombination aus Komprimierungs- und Algorithmuskonfigurationen. Sie weisen diese Eigenschaft einem Vektorfeld zu und bestimmt den Algorithmus und die Komprimierung der Felder.

Hinzufügen eines Vektorfelds zur Felderauflistung

Sobald Sie über eine Vektorkonfiguration verfügen, können Sie der Feldauflistung ein Vektorfeld hinzufügen. Erinnern Sie sich daran, dass die Feldsammlung ein Feld für den Dokumentschlüssel, Vektorfelder und alle anderen Nichtvektorfelder enthalten muss, die Sie für hybride Suchszenarien oder chatmodellabschluss in RAG-Workloads benötigen.

Vektorfelder zeichnen sich durch ihren Datentyp, eine dimensions Eigenschaft basierend auf dem Einbettungsmodell aus, das zum Ausgeben der Vektoren verwendet wird, und ein Vektorprofil, das Sie in einem vorherigen Schritt erstellt haben.

2024-07-01 ist allgemein verfügbar.

  1. Verwenden Sie die REST-API zum Erstellen oder Aktualisieren des Indexes , um den Index zu erstellen und der Feldauflistung ein Vektorfeld hinzuzufügen.

    {
      "name": "example-index",
      "fields": [
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": false,
            "stored": false,
            "dimensions": 1536,
            "vectorSearchProfile": "vector-profile-1"
        }
      ]
    }
    
  2. Geben Sie ein Vektorfeld mit den folgenden Attributen an. Sie können eine generierte Einbettung pro Feld speichern. Für jedes Vektorfeld:

    • type muss ein Vektordatentyp sein. Collection(Edm.Single) ist für Einbettungsmodelle am gängigsten.
    • dimensions ist die Anzahl der Dimensionen, die vom Einbettungsmodell generiert werden. Für „text-embedding-ada-002“ ist dieser Wert auf 1536 festgelegt. Für die Modellreihe „text-embedding-3“ gibt es einen Wertebereich. Wenn Sie die integrierte Vektorisierung und einen Einbettungsskill zum Generieren von Vektoren verwenden, stellen Sie sicher, dass diese Eigenschaft auf denselben Dimensionswert festgelegt ist, der auch vom Einbettungsskill verwendet wird.
    • vectorSearchProfile ist der Name eines Profils, das an anderer Stelle im Index definiert ist.
    • searchable muss den Wert „true“ haben.
    • retrievable kann true oder false sein. True gibt die rohen Vektoren (1.536 davon) als Nur-Text zurück und verbraucht Speicherplatz. Legen Sie diese Einstellung auf „true“ fest, wenn Sie ein Vektorergebnis an eine nachgeschaltete App übergeben.
    • stored kann true oder false sein. Die Option bestimmt, ob eine zusätzliche Kopie von Vektoren zum Abrufen gespeichert wird. Weitere Informationen finden Sie unter Reduzieren der Vektorgröße.
    • filterable, facetableund sortable muss falsch sein.
  3. Fügen Sie der Auflistung filterbare Nicht-Vektorfelder hinzu, z. B. title und legen Sie dabei filterable auf TRUE fest, wenn Sie Vorfilterung oder Nachfilterung für die Vektorabfrage aufrufen möchten.

  4. Fügen Sie weitere Felder hinzu, die den Inhalt und die Struktur des Textinhalts definieren, den Sie indizieren. Sie benötigen mindestens einen Dokumentschlüssel.

    Sie sollten auch Felder hinzufügen, die in der Abfrage oder in ihrer Antwort nützlich sind. Das folgende Beispiel zeigt Vektorfelder für Titel und Inhalt (titleVector und contentVector) die Vektoren entsprechen. Außerdem werden Felder für gleichwertige Textinhalte (title und content) bereitgestellt, die zum Sortieren, Filtern und Lesen in einem Suchergebnis nützlich sind.

    Das folgende Beispiel zeigt die Felderauflistung:

    PUT https://my-search-service.search.windows.net/indexes/my-index?api-version=2024-07-01&allowIndexDowntime=true
    Content-Type: application/json
    api-key: {{admin-api-key}}
    {
        "name": "{{index-name}}",
        "fields": [
            {
                "name": "id",
                "type": "Edm.String",
                "key": true,
                "filterable": true
            },
            {
                "name": "title",
                "type": "Edm.String",
                "searchable": true,
                "filterable": true,
                "sortable": true,
                "retrievable": true
            },
            {
                "name": "titleVector",
                "type": "Collection(Edm.Single)",
                "searchable": true,
                "retrievable": true,
                "stored": true,
                "dimensions": 1536,
                "vectorSearchProfile": "vector-profile-1"
            },
            {
                "name": "content",
                "type": "Edm.String",
                "searchable": true,
                "retrievable": true
            },
            {
                "name": "contentVector",
                "type": "Collection(Edm.Single)",
                "searchable": true,
                "retrievable": false,
                "stored": false,
                "dimensions": 1536,
                "vectorSearchProfile": "vector-profile-1"
            }
        ],
        "vectorSearch": {
            "algorithms": [
                {
                    "name": "hnsw-1",
                    "kind": "hnsw",
                    "hnswParameters": {
                        "m": 4,
                        "efConstruction": 400,
                        "efSearch": 500,
                        "metric": "cosine"
                    }
                }
            ],
            "profiles": [
                {
                    "name": "vector-profile-1",
                    "algorithm": "hnsw-1"
                }
            ]
        }
    }
    

Laden von Vektordaten für die Indizierung

Inhalte, die Sie für die Indizierung bereitstellen, müssen dem Indexschema entsprechen und einen eindeutigen Zeichenfolgenwert für den Dokumentschlüssel enthalten. Vorab vektorisierte Daten werden in Vektorfelder geladen, die neben anderen Feldern vorhanden sein können, die nicht vektorisierte Inhalte enthalten.

Für die Datenaufnahme können Sie Push- oder Pullmethoden verwenden.

Verwenden Sie Dokumente – Index, um Vektor- und Nichtvektordaten in einen Index zu laden. Die Push-APIs für die Indizierung sind in allen stabilen und Vorschauversionen identisch. Verwenden Sie eine der folgenden APIs zum Laden von Dokumenten:

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/index?api-version=2024-07-01

{
    "value": [
        {
            "id": "1",
            "title": "Azure App Service",
            "content": "Azure App Service is a fully managed platform for building, deploying, and scaling web apps. You can host web apps, mobile app backends, and RESTful APIs. It supports a variety of programming languages and frameworks, such as .NET, Java, Node.js, Python, and PHP. The service offers built-in auto-scaling and load balancing capabilities. It also provides integration with other Azure services, such as Azure DevOps, GitHub, and Bitbucket.",
            "category": "Web",
            "titleVector": [
                -0.02250031754374504,
                 . . . 
                        ],
            "contentVector": [
                -0.024740582332015038,
                 . . .
            ],
            "@search.action": "upload"
        },
        {
            "id": "2",
            "title": "Azure Functions",
            "content": "Azure Functions is a serverless compute service that enables you to run code on-demand without having to manage infrastructure. It allows you to build and deploy event-driven applications that automatically scale with your workload. Functions support various languages, including C#, F#, Node.js, Python, and Java. It offers a variety of triggers and bindings to integrate with other Azure services and external services. You only pay for the compute time you consume.",
            "category": "Compute",
            "titleVector": [
                -0.020159931853413582,
                . . .
            ],
            "contentVector": [
                -0.02780858241021633,
                 . . .
            ],
            "@search.action": "upload"
        }
        . . .
    ]
}

Fragen Sie den Index nach Vektorinhalten ab.

Zu Überprüfungszwecken können Sie den Index mithilfe des Suchexplorers im Azure-Portal oder eines REST-API-Aufrufs abfragen. Da Azure KI Search einen Vektor nicht in lesbaren Text konvertieren kann, versuchen Sie, Felder aus demselben Dokument zurückzugeben, die Nachweise für die Übereinstimmung liefern. Wenn die Vektorabfrage beispielsweise auf das titleVector Feld ausgerichtet ist, können Sie title für die Suchergebnisse auswählen.

Felder müssen als retrievable gekennzeichnet sein, um in die Ergebnisse einbezogen zu werden.

  • Überprüfen Sie die Indizes unter Suchverwaltung>Indizes, um die Indexgröße insgesamt und die Vektorindexgröße anzuzeigen. Eine positive Vektorindexgröße gibt an, dass Vektoren vorhanden sind.

  • Verwenden Sie den Suchexplorer, um einen Index abzufragen. Der Suchexplorer verfügt über zwei Ansichten: Abfrageansicht (Standard) und JSON-Ansicht.

    • Legen Sie Abfrageoptionen>Vektorwerte in Suchergebnissen ausblenden fest, um besser lesbare Ergebnisse zu erhalten.

    • Verwenden Sie die JSON-Ansicht für Vektorabfragen. Sie können eine JSON-Definition der Vektorabfrage einfügen, die Sie ausführen möchten. Wenn Ihr Index über eine Vektorizerzuweisung verfügt, können Sie auch die integrierte Text-zu-Vektor- oder Bild-zu-Vektor-Konvertierung verwenden. Weitere Informationen zur Bildsuche finden Sie unter Schnellstart: Suchen nach Bildern im Suchexplorer.

    • Verwenden Sie die Standardabfrageansicht, um schnell zu bestätigen, dass der Index Vektoren enthält. Die Abfrageansicht dient der Volltextsuche. Obwohl Sie sie nicht für Vektorabfragen verwenden können, können Sie eine leere Suche (search=*) senden, um nach Inhalten zu suchen. Die Inhalte aller Felder, einschließlich Vektorfeldern, werden als Nur-Text zurückgegeben.

Weitere Informationen finden Sie unter Erstellen einer Vektorabfrage.

Aktualisieren eines Vektorindexes

Um einen Vektorindex zu aktualisieren, ändern Sie das Schema, und laden Sie Dokumente neu, um neue Felder aufzufüllen. APIs für das Aktualisieren eines Schemas umfassen Create or Update Index (REST), CreateOrUpdateIndex im Azure SDK für .NET, create_or_update_index im Azure SDK für Python und ähnliche Methoden in anderen Azure SDKs.

Standardanleitungen zum Aktualisieren eines Indexes finden Sie unter Aktualisieren oder Neuerstellen eines Indexes.

Wichtige Punkte sind:

  • Das Verwerfen und vollständige Neuerstellen eines Indexes ist häufig für Aktualisierungen und das Löschen bestehender Felder erforderlich.

  • Sie können die folgenden Änderungen ohne Neuerstellungsanforderung vornehmen:

    • Fügen Sie neue Felder zu einer Feldsammlung hinzu.
    • Fügen Sie neue Vektorkonfigurationen hinzu, die neuen Feldern zugewiesen sind, aber keine vorhandenen Felder, die bereits vektorisiert sind.
    • Ändern Sie die Option retrievable (Werte sind TRUE oder FALSE) für ein bestehendes Feld. Vektorfelder müssen durchsuchbar und abrufbar sein. Wenn Sie jedoch den Zugriff auf ein Vektorfeld in Situationen deaktivieren möchten, in denen das Ablegen und Wiederherstellen nicht möglich ist, können Sie „abrufbar“ auf „false“ setzen.

Nächste Schritte

Als nächster Schritt empfehlen wir das Erstellen einer Vektorabfrage.

Codebeispiele im Repository azure-search-vector-samples veranschaulichen End-to-End-Workflows, die Schemadefinition, Vektorisierung, Indizierung und Abfragen enthalten.

Es gibt Beispielcode für Python, C#und JavaScript.