Freigeben über


Unterstützung für Multi-Vektorfelder in Azure AI Search

Hinweis

Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel (SLA) bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Mit dem Feature zur Unterstützung mehrerer Vektorfelder in Azure AI Search 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 Rangfolger keine geschachtelten Vektoren in mehrdimensionalen Vektorfeldern.

Unterstützung für Multi-Vektorfelder verstehen

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 AI Search ein. Der Hauptabfrageprozess bleibt jedoch weitgehend gleich. Bisher konnte vectorQueries nur auf als oberste Indexfelder definierte Vektorfelder abzielen. Mit diesem Feature entspannen wir diese Einschränkung und ermöglichen vectorQueries das Ziel von Feldern, die in einer Sammlung komplexer Typen geschachtelt sind (bis zu einer Ebene tief). 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 und garantiert, dass 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"
}

Einordnen über mehrere Vektoren in einem einzelnen Feld

Wenn mehrere Vektoren einem einzelnen Dokument zugeordnet sind, verwendet Azure AI Search 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=2025-11-01-preview
{
  "vectorQueries": [
    {
      "kind": "vector",
      "field": "keyframes.imageEmbedding",
      "kNearestNeighborsCount": 5,
      "vector": [ /* query vector */ ]
    }
  ],
  "debug": "innerHits"
}

Beispielantwort-Form

"@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 Korrektur und Verstärkung.
vectorSimilarity Rohähnlichkeit, die von der Abstandsfunktion zurückgegeben wird.

Hinweis

innerHits meldet derzeit nur Vektorfelder.

Beziehung zum Debug=Vektor

Hier sind einige Fakten zu dieser Immobilie:

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

  • Bei Verwendung mit Mehrfachvektorfeldern zeigt @search.documentDebugInfo.vector.subscore die maximale Bewertung an, die zur Bewertung des übergeordneten Dokuments verwendet wird, jedoch nicht die detaillierten Angaben zu einzelnen Elementen.

  • Verwenden Sie innerHits, um Einblick in den Beitrag einzelner Elemente zur Punktzahl zu erhalten.