Unterstützung für Multi-Vektorfelder in Azure KI-Suche

Hinweis

Dieses Feature befindet sich derzeit in der Vorschau. Diese Vorschau wird ohne Vereinbarung auf Serviceebene bereitgestellt und wird für Produktionsworkloads nicht empfohlen. Bestimmte Features werden möglicherweise nicht unterstützt oder weisen eingeschränkte Funktionen auf. Weitere Informationen finden Sie unter Supplementale Nutzungsbedingungen für Microsoft Azure Previews.

Mit dem Feature zur Unterstützung mehrerer Vektorfelder in Azure KI-Suche können Sie mehrere untergeordnete Vektoren in einem einzelnen Dokumentfeld indizieren. Diese Funktion ist nützlich für Anwendungsfälle wie multimodale Daten oder langformige Dokumente, bei denen die Darstellung des Inhalts mit einem einzelnen Vektor zu einem Verlust wichtiger Details führen würde.

Einschränkungen

  • Der semantische Rangierer wird für geschachtelte Blöcke innerhalb eines komplexen Felds nicht unterstützt. Daher unterstützt der semantische Ranker keine geschachtelten Vektoren in Multivektorfeldern.

Verständnis für die Unterstützung von Multi-Vektor-Feldern

Traditionell können Vektortypen beispielsweise Collection(Edm.Single) nur in Feldern der obersten Ebene verwendet werden. Mit der Einführung der Multivektorfeldunterstützung können Sie jetzt Vektortypen in geschachtelten Feldern komplexer Auflistungen verwenden, wodurch mehrere Vektoren einem einzelnen Dokument zugeordnet werden können.

Ein einzelnes Dokument kann bis zu 100 Vektoren insgesamt in allen komplexen Sammlungsfeldern enthalten. Vektorfelder können nur eine Ebene tief geschachtelt werden.

Indexdefinition mit Multivektorfeld

Für dieses Feature sind keine neuen Indexeigenschaften erforderlich. Hier ist eine Beispielindexdefinition:

{
  "name": "multivector-index",
  "fields": [
    {
      "name": "id",
      "type": "Edm.String",
      "key": true,
      "searchable": true
    },
    {
      "name": "title",
      "type": "Edm.String",
      "searchable": true
    },
    {
      "name": "description",
      "type": "Edm.String",
      "searchable": true
    },
    {
      "name": "descriptionEmbedding",
      "type": "Collection(Edm.Single)",
      "dimensions": 3,
      "searchable": true,
      "retrievable": true,
      "vectorSearchProfile": "hnsw"
    },
    {
      "name": "scenes",
      "type": "Collection(Edm.ComplexType)",
      "fields": [
        {
          "name": "embedding",
          "type": "Collection(Edm.Single)",
          "dimensions": 3,
          "searchable": true,
          "retrievable": true,
          "vectorSearchProfile": "hnsw"
        },
        {
          "name": "timestamp",
          "type": "Edm.Int32",
          "retrievable": true
        },
        {
          "name": "description",
          "type": "Edm.String",
          "searchable": true,
          "retrievable": true
        },
        {
          "name": "framePath",
          "type": "Edm.String",
          "retrievable": true
        }
      ]
    }
  ]
}

Beispiel für ein Erfassungsdokument

Im Folgenden finden Sie ein Beispieldokument, in dem veranschaulicht wird, wie Sie Vektorfelder in der Praxis verwenden können:

{
  "id": "123",
  "title": "Non-Existent Movie",
  "description": "A fictional movie for demonstration purposes.",
  "descriptionEmbedding": [1, 2, 3],
  "releaseDate": "2025-08-01",
  "scenes": [
    {
      "embedding": [4, 5, 6],
      "timestamp": 120,
      "description": "A character is introduced.",
      "framePath": "nonexistentmovie\\scenes\\scene120.png"
    },
    {
      "embedding": [7, 8, 9],
      "timestamp": 2400,
      "description": "The climax of the movie.",
      "framePath": "nonexistentmovie\\scenes\\scene2400.png"
    }
  ]
}

In diesem Beispiel ist das Szenenfeld eine komplexe Auflistung, die mehrere Vektoren (die Einbettungsfelder) sowie andere zugeordnete Daten enthält. Jeder Vektor stellt eine Szene aus dem Film dar und kann verwendet werden, um ähnliche Szenen in anderen Filmen zu finden, unter anderem potenzielle Anwendungsfälle.

Abfrage mit Unterstützung für mehrvektorbasierte Felder

Die Unterstützungsfunktion für multivektorbasierte Felder führt einige Änderungen am Abfragemechanismus in Azure KI-Suche ein. Der Hauptabfrageprozess bleibt jedoch weitgehend gleich. Bisher konnte vectorQueries nur Vektorfelder ansprechen, die als Indexfelder auf der obersten Ebene definiert sind. Mit diesem Feature lockern wir diese Einschränkung und ermöglichen es VectorQueries, Felder anzuvisieren, die in einer Sammlung komplexer Typen geschachtelt sind (bis zu einer Ebene). Darüber hinaus ist ein neuer Abfragezeitparameter verfügbar: perDocumentVectorLimit.

  • Die Einstellung von perDocumentVectorLimit auf 1 stellt sicher, dass höchstens ein Vektor pro Dokument übereinstimmt, wodurch garantiert wird, dass die Ergebnisse aus unterschiedlichen Dokumenten stammen.
  • Durch Festlegen perDocumentVectorLimit auf 0 (unbegrenzt) können mehrere relevante Vektoren aus demselben Dokument abgeglichen werden.
{
  "vectorQueries": [
    {
      "kind": "text",
      "text": "whales swimming",
      "K": 50,
      "fields": "scenes/embedding",
      "perDocumentVectorLimit": 0
    }
  ],
  "select": "title, scenes/timestamp, scenes/framePath"
}

Rangieren über mehrere Vektoren in einem einzelnen Feld

Wenn mehrere Vektoren einem einzelnen Dokument zugeordnet sind, verwendet Azure KI-Suche die maximale Bewertung unter ihnen für die Rangfolge. Das System verwendet den relevantesten Vektor, um jedes Dokument zu ermitteln, wodurch die Verdünnung durch weniger relevante verhindert wird.

Abrufen relevanter Elemente in einer Auflistung

Wenn eine Auflistung komplexer Typen im $select Parameter enthalten ist, werden nur die Elemente zurückgegeben, die der Vektorabfrage entsprechen. Dies ist nützlich, um zugeordnete Metadaten wie Zeitstempel, Textbeschreibungen oder Bildpfade abzurufen.

Hinweis

Um die Nutzlastgröße zu verringern, vermeiden Sie die Einbeziehung der Vektorwerte selbst in den $select Parameter. Erwägen Sie, Vektorspeicher vollständig auszulassen, wenn sie nicht erforderlich sind.

Debuggen von Mehrvektorabfragen (Vorschau)

Wenn ein Dokument mehrere eingebettete Vektoren enthält, z. B. Text- und Bildeinbettungen in verschiedene Unterfelder, verwendet das System die höchste Vektorbewertung für alle Elemente, um das Dokument zu bewerten.

Um zu debuggen, wie jeder Vektor beigetragen hat, verwenden Sie den innerHits Debugmodus (verfügbar in der neuesten Vorschau-REST-API).

POST /indexes/my-index/docs/search?api-version=2026-05-01-preview
{
  "vectorQueries": [
    {
      "kind": "vector",
      "field": "keyframes.imageEmbedding",
      "kNearestNeighborsCount": 5,
      "vector": [ /* query vector */ ]
    }
  ],
  "debug": "innerHits"
}

Beispielantwortstruktur

"@search.documentDebugInfo": {
  "innerHits": {
    "keyframes": [
      {
        "ordinal": 0,
        "vectors": [
          {
            "imageEmbedding": {
              "searchScore": 0.958,
              "vectorSimilarity": 0.956
            },
            "textEmbedding": {
              "searchScore": 0.958,
              "vectorSimilarity": 0.956
            }
          }
        ]
      },
      {
        "ordinal": 1,
        "vectors": [
          {
            "imageEmbedding": null,
            "textEmbedding": {
              "searchScore": 0.872,
              "vectorSimilarity": 0.869
            }
          }
        ]
      }
    ]
  }
}

Feldbeschreibungen

Feld Beschreibung
ordinal Nullbasierter Index des Elements innerhalb der Auflistung.
vectors Ein Eintrag pro durchsuchbarem Vektorfeld, das im Element enthalten ist.
searchScore Endergebnis für dieses Feld nach jeder Erneuerung und Optimierung.
vectorSimilarity Rohe Ähnlichkeit, die von der Abstandsfunktion zurückgegeben wird.

Hinweis

innerHits meldet derzeit nur Vektorfelder.

Beziehung zum Debug=Vektor

Hier sind einige Fakten zu diesem Merkmal:

  • Der vorhandene debug=vector Switch bleibt unverändert.

  • Bei der Verwendung mit Multivektorfeldern zeigt @search.documentDebugInfo.vector.subscore den maximalen Score an, der zur Einstufung des übergeordneten Dokuments herangezogen wurde, jedoch keine Details zu den einzelnen Elementen.

  • Verwenden Sie innerHits, um Einblicke zu erhalten, wie einzelne Elemente zur Bewertung beigetragen haben.