Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Wyszukiwanie AI platformy Azure jest dostępna za pośrednictwem portalu Azure, interfejsów API REST i Azure SDKs. Jest także podstawą Foundry IQ — zarządzanej warstwy wiedzy, która przekształca treści przedsiębiorstwa w bazy wiedzy wielokrotnego użytku z uwzględnieniem uprawnień dla agentów w portalu Microsoft Foundry.
Ważna
Funkcje, możliwości lub właściwości oznaczone (wersja zapoznawcza) nie są objęte umową dotyczącą poziomu usług, nie są zalecane w przypadku obciążeń produkcyjnych i mogą ulec zmianie lub ograniczeniu, zanim staną się one ogólnie dostępne. Warunki Wyszukiwanie AI platformy Azure wersji zapoznawczej mają zastosowanie do wszystkich funkcji w wersji zapoznawczej, niezależnie od tego, czy jest ona autonomiczna, czy częścią ogólnie dostępnej funkcji.
Funkcja obsługi pól wielowektorowych (wersja zapoznawcza) w Wyszukiwanie AI platformy Azure umożliwia indeksowanie wielu wektorów podrzędnych w jednym polu dokumentu. Ta funkcja jest cenna w przypadku przypadków użycia, takich jak dane wielomodalne lub dokumenty długie, w których reprezentowanie zawartości za pomocą pojedynczego wektora doprowadziłoby do utraty ważnych szczegółów.
Ograniczenia
- Klasyfikator semantyczny nie jest obsługiwany w przypadku zagnieżdżonych fragmentów w złożonym polu. W związku z tym semantyczny ranker nie obsługuje zagnieżdżonych wektorów w polach wielowektorowych.
Omówienie obsługi pól wielowektorowych
Tradycyjnie typy wektorów, na przykład Collection(Edm.Single) mogą być używane tylko w polach najwyższego poziomu. Dzięki wprowadzeniu obsługi pól wielowektorowych można teraz używać typów wektorów w zagnieżdżonych polach złożonych kolekcji, co pozwala na skojarzenie wielu wektorów z jednym dokumentem.
Pojedynczy dokument może łącznie zawierać maksymalnie 100 wektorów we wszystkich złożonych polach kolekcji. Pola wektorowe mogą być zagnieżdżone tylko na jednym poziomie głębokości.
Definicja indeksu z polem wielowektorowym
Dla tej funkcji nie są potrzebne żadne nowe właściwości indeksu. Oto przykładowa definicja indeksu:
{
"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
}
]
}
]
}
Przykładowy dokument wczytywania
Oto przykładowy dokument ilustrujący sposób użycia pól wielowektorowych w praktyce:
{
"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"
}
]
}
W tym przykładzie pole scen jest złożoną kolekcją zawierającą wiele wektorów (pól osadzania) wraz z innymi skojarzonymi danymi. Każdy wektor reprezentuje scenę z filmu i może służyć do znajdowania podobnych scen w innych filmach, między innymi potencjalnych przypadków użycia.
Wykonywanie zapytań z obsługą pól wielowektorowych
Funkcja obsługi pól wielowektorowych wprowadza pewne zmiany w mechanizmie zapytań w Wyszukiwanie AI platformy Azure. Jednak główny proces wykonywania zapytań pozostaje w dużej mierze taki sam.
Wcześniej vectorQueries mogło być używane wyłącznie do docelowania wektorowych pól zdefiniowanych jako główne pola indeksu. Dzięki tej funkcji łagodzimy to ograniczenie i umożliwiamy vectorQueries celowanie w pola, które są zagnieżdżone wewnątrz kolekcji złożonych typów (do jednego poziomu).
Ponadto dostępny jest nowy parametr czasu zapytania: perDocumentVectorLimit.
- Ustawienie
perDocumentVectorLimitna1zapewnia, że co najwyżej jeden wektor jest dopasowany na dokument, co gwarantuje, że wyniki pochodzą z odrębnych dokumentów. - Ustawienie
perDocumentVectorLimitna0(nieograniczone) umożliwia dopasowanie wielu odpowiednich wektorów z tego samego dokumentu.
{
"vectorQueries": [
{
"kind": "text",
"text": "whales swimming",
"K": 50,
"fields": "scenes/embedding",
"perDocumentVectorLimit": 0
}
],
"select": "title, scenes/timestamp, scenes/framePath"
}
Ranga między wieloma wektorami w jednym polu
Gdy wiele wektorów jest skojarzonych z jednym dokumentem, Wyszukiwanie AI platformy Azure używa maksymalnego wyniku wśród nich do klasyfikacji. System używa najbardziej odpowiedniego wektora do oceny każdego dokumentu, co zapobiega rozcieńczeniu przez mniej istotne.
Pobieranie odpowiednich elementów w kolekcji
Gdy kolekcja typów złożonych jest uwzględniona w parametrze $select , zwracane są tylko elementy pasujące do zapytania wektorowego. Jest to przydatne w przypadku pobierania skojarzonych metadanych, takich jak znaczniki czasu, opisy tekstu lub ścieżki obrazów.
Uwaga
Aby zmniejszyć rozmiar ładunku, należy unikać dołączania samych wartości wektorów w parametrze $select . Rozważ całkowite pominięcie magazynu wektorów, jeśli nie jest to konieczne.
Debugowanie zapytań wielowektorowych (wersja zapoznawcza)
Gdy dokument zawiera wiele osadzonych wektorów, takich jak osadzanie tekstu i obrazu w różnych polach podrzędnych, system używa najwyższego wyniku wektora we wszystkich elementach do klasyfikacji dokumentu.
Aby debugować, w jaki sposób każdy wektor przyczynił się, użyj trybu debugowania innerHits (dostępnego w najnowszej wersji zapoznawczej interfejsu API REST).
POST /indexes/my-index/docs/search?api-version=2026-08-01-preview
{
"vectorQueries": [
{
"kind": "vector",
"field": "keyframes.imageEmbedding",
"kNearestNeighborsCount": 5,
"vector": [ /* query vector */ ]
}
],
"debug": "innerHits"
}
Przykładowy kształt odpowiedzi
"@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
}
}
]
}
]
}
}
Opisy pól
| Pole | Opis |
|---|---|
ordinal |
Indeks zerowy elementu wewnątrz kolekcji. |
vectors |
Jeden wpis na przeszukiwalne pole wektora zawarte w elemencie. |
searchScore |
Końcowy wynik dla tego pola, po każdym ponownym ocenianiu i zwiększeniach. |
vectorSimilarity |
Nieprzetworzone podobieństwo zwracane przez funkcję distance. |
Uwaga
innerHits obecnie raportuje tylko pola wektorowe.
Relacja z debug=vector
Oto kilka faktów dotyczących tej właściwości:
Istniejący
debug=vectorprzełącznik pozostaje niezmieniony.W przypadku użycia z polami
@search.documentDebugInfo.vector.subscorewielowektorowymi pokazuje maksymalny wynik używany do klasyfikacji dokumentu nadrzędnego, ale nie szczegółów poszczególnych elementów.Służy
innerHitsdo uzyskiwania wglądu w sposób, w jaki poszczególne elementy przyczyniły się do wyniku.