Schnellstart: Vektorsuche mit REST-APIs
Erfahren Sie, wie Sie die Search-REST-APIs zum Erstellen, Laden und Abfragen von Vektoren in Azure AI Search verwenden.
In der Azure KI-Suche verfügt ein Vektorspeicher über ein Indexschema, das Vektor- und Nichtvektorfelder definiert, eine Vektorkonfiguration für Algorithmen, die den Einbettungsraum erstellen, und Einstellungen für Vektorfelddefinitionen, die in Abfrageanforderungen verwendet werden. Die API zum Erstellen eines Index erstellt den Vektorspeicher.
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Hinweis
In diesem Schnellstart wird der Vektorisierungsschritt weggelassen, und Einbettungen werden in Beispieldokumenten bereitgestellt. Wenn Sie die integrierte Datensegmentierung und Vektorisierung für Ihren eigenen Inhalt hinzufügen möchten, testen Sie den Assistenten zum Importieren und Vektorisieren von Daten für eine exemplarische End-to-End-Vorgehensweise.
Voraussetzungen
Visual Studio Code mit einem REST-Client. Wenn Sie Hilfe bei den ersten Schritten benötigen, lesen Sie Schnellstart: Textsuche mithilfe von REST.
Azure AI Search, in jeder Region und auf jeder Ebene. Sie können den Free-Tarif für diesen Schnellstart verwenden, aber „Basic“ oder höher wird für größere Datendateien empfohlen. Erstellen oder suchen Sie nach einer vorhandenen Ressource für Azure KI Search in Ihrem aktuellen Abonnement.
Die meisten vorhandenen Dienste unterstützen die Vektorsuche. Bei einer kleinen Teilmenge der Dienste, die vor dem Januar 2019 erstellt wurden, schlägt die Erstellung eines Indexes, der Vektorfelder enthält, fehl. In dieser Situation muss ein neuer Dienst erstellt werden.
Um stattdessen das Abfragebeispiel auszuführen, das die semantische Neubewertung aufruft, muss Ihr Suchdienst die Dienstebene „Basic“ oder höher und den semantischen Sortierer aktiviert haben.
Optional eine Azure OpenAI-Ressource mit einer Bereitstellung von
text-embedding-ada-002
Die Quelldatei.rest
enthält einen optionalen Schritt zur Erzeugung neuer Texteinbettungen, aber wir stellen vorab generierte Einbettungen zur Verfügung, so dass Sie diese Abhängigkeit auslassen können.
Herunterladen von Dateien
Laden Sie ein REST-Beispiel von GitHub herunter, um die Anforderungen in dieser Schnellstartanleitung zu senden. Weitere Informationen finden Sie unter Herunterladen von Dateien von GitHub.
Sie können auch eine neue Datei auf Ihrem lokalen System anlegen und die Abfragen manuell anhand der Anleitung in diesem Artikel erstellen.
Abrufen eines Suchdienstendpunkts
Den Suchdienstendpunkt finden Sie im Azure-Portal.
Melden Sie sich beim Azure-Portal an, und finden Sie Ihren Suchdienst.
Sie finden die URL auf der Startseite Übersicht. Ein Beispiel für einen Endpunkt ist
https://mydemo.search.windows.net
.
Sie fügen diesen Endpunkt in einem späteren Schritt in die Datei .rest
oder .http
ein.
Konfigurieren des Zugriffs
Anforderungen an den Suchendpunkt müssen authentifiziert und autorisiert werden. Sie können für diese Aufgabe API-Schlüssel oder Rollen verwenden. Schlüssel sind für ein Einstieg einfacher, Rollen sind jedoch sicherer.
Bei einer rollenbasierten Verbindung können Sie die folgenden Anweisungen verwenden, um eine Verbindung mit Azure KI-Suche unter Ihrer Identität herzustellen, aber nicht unter der Identität einer Client-App.
Option 1: Verwenden von Schlüsseln
Wählen Sie Einstellungen>Schlüssel aus, und kopieren Sie dann einen Administratorschlüssel. Mit einem Administratorschlüssel können Sie Objekte hinzufügen, ändern und löschen. Es gibt zwei austauschbare Administratorschlüssel. Kopieren Sie einen der beiden Schlüssel. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Azure KI-Suche mithilfe der Schlüsselauthentifizierung.
Sie fügen diesen Schlüssel in einem späteren Schritt in die Datei .rest
oder .http
ein.
Option 2: Verwenden von Rollen
Stellen Sie sicher, dass Ihr Suchdienst für den rollenbasierten Zugriff konfiguriert ist. Sie benötigen vorkonfigurierte Rollenzuweisungen für den Entwicklerzugriff. Ihre Rollenzuweisungen müssen die Berechtigungen zum Erstellen, Laden und Abfragen eines Suchindex gewähren.
Rufen Sie in diesem Abschnitt das Token Ihrer persönlichen Identität entweder über die Azure-Befehlszeilenschnittstelle, Azure PowerShell oder das Azure-Portal ab.
Melden Sie sich bei der Azure-Befehlszeilenschnittstelle an.
az login
Rufen Sie das Token Ihrer persönlichen Identität ab.
az account get-access-token --scope https://search.azure.com/.default
Sie fügen das Token Ihrer persönlichen Identität in einem späteren Schritt in die Datei .rest
oder .http
ein.
Hinweis
In diesem Abschnitt wird davon ausgegangen, dass Sie einen lokalen Client verwenden, der in Ihrem Namen eine Verbindung mit Azure KI-Suche herstellt. Ein alternativer Ansatz besteht darin, ein Token für die Client-App abzurufen. Dies ist aber nur möglich, wenn Ihre Anwendung ist bei Microsoft Entra ID registriert ist.
Erstellen eines Vektorindexes
Create Index (REST) erstellt einen Vektorindex und richtet die physischen Datenstrukturen in Ihrem Suchdienst ein.
Das Indexschema ist den Hotelinhalten entsprechend organisiert. Beispieldaten bestehen aus Vektor- und Nichtvektornamen und Beschreibungen von sieben fiktiven Hotels. Dieses Schema enthält Konfigurationen für die Vektorindizierung und Abfragen sowie für die semantische Rangfolge.
Öffnen Sie eine neue Textdatei in Visual Studio Code.
Legen Sie Variablen auf die Werte fest, die Sie zuvor erfasst haben. In diesem Beispiel wird ein Token für eine persönliche Identität verwendet.
@baseUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE @token = PUT-YOUR-PERSONAL-IDENTITY-TOKEN-HERE
Speichern Sie die Datei mit der Erweiterung
.rest
oder.http
.Fügen Sie das folgende Beispiel ein, um den Index
hotels-vector-quickstart
für Ihren Suchdienst zu erstellen.### Create a new index POST {{baseUrl}}/indexes?api-version=2023-11-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}} { "name": "hotels-vector-quickstart", "fields": [ { "name": "HotelId", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": false, "key": true }, { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "sortable": true, "facetable": false }, { "name": "HotelNameVector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "my-vector-profile" }, { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "sortable": false, "facetable": false }, { "name": "DescriptionVector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "my-vector-profile" }, { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": true }, { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "retrievable": true, "sortable": false, "facetable": true }, { "name": "Address", "type": "Edm.ComplexType", "fields": [ { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": true }, { "name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": true } ] }, { "name": "Location", "type": "Edm.GeographyPoint", "searchable": false, "filterable": true, "retrievable": true, "sortable": true, "facetable": false } ], "vectorSearch": { "algorithms": [ { "name": "my-hnsw-vector-config-1", "kind": "hnsw", "hnswParameters": { "m": 4, "efConstruction": 400, "efSearch": 500, "metric": "cosine" } }, { "name": "my-hnsw-vector-config-2", "kind": "hnsw", "hnswParameters": { "m": 4, "metric": "euclidean" } }, { "name": "my-eknn-vector-config", "kind": "exhaustiveKnn", "exhaustiveKnnParameters": { "metric": "cosine" } } ], "profiles": [ { "name": "my-vector-profile", "algorithm": "my-hnsw-vector-config-1" } ] }, "semantic": { "configurations": [ { "name": "my-semantic-config", "prioritizedFields": { "titleField": { "fieldName": "HotelName" }, "prioritizedContentFields": [ { "fieldName": "Description" } ], "prioritizedKeywordsFields": [ { "fieldName": "Tags" } ] } } ] } }
Klicken Sie auf Anforderung senden. Erinnern Sie sich, dass Sie den REST-Client benötigen, um Anforderungen zu senden. Sie sollten eine
HTTP/1.1 201 Created
-Antwort erhalten. Der Antworttext sollte die JSON-Darstellung des Indexschemas enthalten.Die wichtigsten Punkte:
- Die Sammlung
fields
enthält ein erforderliches Schlüsselfeld sowie Text und Vektorfelder (z. B.Description
undDescriptionVector
) für die Text- und Vektorsuche. Die gemeinsame Zuordnung von Vektorfeldern und Nicht-Vektorfeldern in demselben Index ermöglicht Hybridabfragen. Beispielsweise können Sie Filter, Stichwortsuche mit semantischer Rangfolge und Vektoren in einem einzelnen Abfragevorgang kombinieren. - Vektorfelder müssen
type: Collection(Edm.Single)
mit den Eigenschaftendimensions
undvectorSearchProfile
sein. - Der Abschnitt
vectorSearch
umfasst ein Array von ANN-Algorithmuskonfigurationen (Approximate Nearest Neighbors) und Profilen. Zu den unterstützten Algorithmen gehören der HNSW- (Hierarchical Navigable Small World) und der erschöpfende k-nächste-Nachbarn-Algorithmus (k-NN). Weitere Informationen finden Sie unter Relevanzbewertung in der Vektorsuche. - [Optional]: Die
semantic
-Konfiguration ermöglicht die Neubewertung der Rangfolge von Suchergebnissen. Sie können eine Neubewertung der Rangfolge für Ergebnisse in Abfragen vom Typsemantic
für Zeichenfolgenfelder durchführen, die in der Konfiguration angegeben sind. Weitere Informationen finden Sie unter Übersicht über die semantischen Bewertung.
- Die Sammlung
Hochladen von Dokumenten
Das Erstellen und das Laden des Index erfolgt in zwei separaten Schritten. In Azure KI-Suche enthält der Index alle durchsuchbaren Daten und Abfragen, die im Suchdienst ausgeführt werden. Für REST-Aufrufe werden die Daten als JSON-Dokumente bereitgestellt. Verwenden Sie für diese Aufgabe die REST-API Dokumente – Index.
Der URI wird um die docs
-Sammlung und den index
-Vorgang erweitert.
Wichtig
Das folgende Beispiel kann keinen Code ausführen. Zur besseren Lesbarkeit haben wir Vektorwerte ausgeschlossen, da jeder von ihnen 1.536 Einbettungen enthält, was für diesen Artikel zu lang ist. Wenn Sie diesen Schritt ausprobieren möchten, kopieren Sie den ausführbaren Code aus dem Beispiel auf GitHub.
### Upload documents
POST {{baseUrl}}/indexes/hotels-quickstart-vectors/docs/index?api-version=2023-11-01 HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"value": [
{
"@search.action": "mergeOrUpload",
"HotelId": "1",
"HotelName": "Secret Point Motel",
"HotelNameVector": [VECTOR ARRAY OMITTED],
"Description":
"The hotel is ideally located on the main commercial artery of the city
in the heart of New York.",
"DescriptionVector": [VECTOR ARRAY OMITTED],
"Category": "Boutique",
"Tags": [
"pool",
"air conditioning",
"concierge"
],
},
{
"@search.action": "mergeOrUpload",
"HotelId": "2",
"HotelName": "Twin Dome Hotel",
"HotelNameVector": [VECTOR ARRAY OMITTED],
"Description":
"The hotel is situated in a nineteenth century plaza, which has been
expanded and renovated to the highest architectural standards to create a modern,
functional and first-class hotel in which art and unique historical elements
coexist with the most modern comforts.",
"DescriptionVector": [VECTOR ARRAY OMITTED],
"Category": "Boutique",
"Tags": [
"pool",
"air conditioning",
"free wifi",
"concierge"
]
},
{
"@search.action": "mergeOrUpload",
"HotelId": "3",
"HotelName": "Triple Landscape Hotel",
"HotelNameVector": [VECTOR ARRAY OMITTED],
"Description":
"The Hotel stands out for its gastronomic excellence under the management of
William Dough, who advises on and oversees all of the Hotel’s restaurant services.",
"DescriptionVector": [VECTOR ARRAY OMITTED],
"Category": "Resort and Spa",
"Tags": [
"air conditioning",
"bar",
"continental breakfast"
]
}
{
"@search.action": "mergeOrUpload",
"HotelId": "4",
"HotelName": "Sublime Cliff Hotel",
"HotelNameVector": [VECTOR ARRAY OMITTED],
"Description":
"Sublime Cliff Hotel is located in the heart of the historic center of
Sublime in an extremely vibrant and lively area within short walking distance to
the sites and landmarks of the city and is surrounded by the extraordinary beauty
of churches, buildings, shops and monuments.
Sublime Cliff is part of a lovingly restored 1800 palace.",
"DescriptionVector": [VECTOR ARRAY OMITTED],
"Category": "Boutique",
"Tags": [
"concierge",
"view",
"24-hour front desk service"
]
},
{
"@search.action": "mergeOrUpload",
"HotelId": "13",
"HotelName": "Historic Lion Resort",
"HotelNameVector": [VECTOR ARRAY OMITTED],
"Description":
"Unmatched Luxury. Visit our downtown hotel to indulge in luxury
accommodations. Moments from the stadium, we feature the best in comfort",
"DescriptionVector": [VECTOR ARRAY OMITTED],
"Category": "Resort and Spa",
"Tags": [
"view",
"free wifi",
"pool"
]
},
{
"@search.action": "mergeOrUpload",
"HotelId": "48",
"HotelName": "Nordicks Hotel",
"HotelNameVector": [VECTOR ARRAY OMITTED],
"Description":
"Only 90 miles (about 2 hours) from the nation's capital and nearby
most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring
the caverns? It's all nearby and we have specially priced packages to help make
our B&B your home base for fun while visiting the valley.",
"DescriptionVector": [VECTOR ARRAY OMITTED],
"Category": "Boutique",
"Tags": [
"continental breakfast",
"air conditioning",
"free wifi"
],
},
{
"@search.action": "mergeOrUpload",
"HotelId": "49",
"HotelName": "Old Carrabelle Hotel",
"HotelNameVector": [VECTOR ARRAY OMITTED],
"Description":
"Spacious rooms, glamorous suites and residences, rooftop pool, walking
access to shopping, dining, entertainment and the city center.",
"DescriptionVector": [VECTOR ARRAY OMITTED],
"Category": "Luxury",
"Tags": [
"air conditioning",
"laundry service",
"24-hour front desk service"
]
}
]
}
Die wichtigsten Punkte:
- Dokumente in der Nutzlast bestehen aus Feldern, die im Indexschema definiert sind.
- Vektorfelder enthalten Gleitkommawerte. Das dimensions-Attribut weist mindestens 2 und höchstens 3.072 Gleitkommawerte auf. In dieser Schnellstartanleitung wird das Dimensionsattribut auf 1.536 festgelegt, weil dies die Größe der Einbettungen ist, die vom Azure OpenAI-Modell text-embedding-ada-002 generiert werden.
Ausführen von Abfragen
Nachdem Dokumente geladen worden sind, können Sie Vektorabfragen mithilfe von POST-REST-API für die Dokumentsuche ausstellen.
Es gibt eine Reihe von Abfragen zur Veranschaulichung verschiedener Muster:
Die Vektorabfragen in diesem Abschnitt basieren auf zwei Zeichenketten:
- Suchzeichenfolge:
historic hotel walk to restaurants and shopping
- Vektorabfrage-Zeichenfolge (in eine mathematische Darstellung vektorisiert):
classic lodging near running trails, eateries, retail
Die Vektorabfrage-Zeichenfolge ähnelt semantisch der Suchzeichenfolge, enthält jedoch Begriffe, die nicht im Suchindex enthalten sind. Wenn Sie eine Schlüsselwortsuche nach classic lodging near running trails, eateries, retail
durchführen, erhalten Sie das Ergebnis null. Wir verwenden dieses Beispiel, um zu zeigen, wie Sie auch dann relevante Ergebnisse erhalten können, wenn keine übereinstimmenden Begriffe vorhanden sind.
Wichtig
Die folgenden Beispiele sind nicht ausführungsfähiger Code. Zur besseren Lesbarkeit haben wir Vektorwerte ausgeschlossen, weil jedes Array 1.536 Einbettungen enthält, was für diesen Artikel zu lang ist. Wenn Sie diese Abfragen ausprobieren möchten, kopieren Sie den ausführbaren Code aus dem Beispiel auf GitHub.
Einzelvektorsuche
Fügen Sie eine POST-Anforderung ein, um den Suchindex abzufragen. Wählen Sie Anforderung senden aus. Der URI wird erweitert, um den
/docs/search
Operator einzuschließen.### Run a query POST {{baseUrl}}/indexes/hotels-vector-quickstart/docs/search?api-version=2023-11-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}} { "count": true, "select": "HotelId, HotelName, Description, Category", "vectorQueries": [ { "vector"": [0.01944167, 0.0040178085 . . . TRIMMED FOR BREVITY 010858015, -0.017496133], "k": 7, "fields": "DescriptionVector", "kind": "vector", "exhaustive": true } ] }
Diese Vektorabfrage wird aus Platzgründen gekürzt.
vectorQueries.vector
enthält den vektorisierten Text der Abfrageeingabe,fields
bestimmt, welche Vektorfelder durchsucht werden, undk
gibt die Anzahl der nächsten Nachbarelemente an, die zurückgegeben werden sollen.Die Vektorabfragezeichenfolge lautet
classic lodging near running trails, eateries, retail
und wird für diese Abfrage in 1.536 Einbettungen vektorisiert.Überprüfen Sie die Antwort. Die Antwort für das Vektoräquivalent von
classic lodging near running trails, eateries, retail
enthält sieben Ergebnisse. Jedes Ergebnis stellt einen Suchscore und die inselect
aufgeführten Felder bereit. Bei einer Ähnlichkeitssuche enthält die Antwort immerk
Ergebnisse, die nach der Wertähnlichkeitsscore sortiert sind.{ "@odata.context": "https://my-demo-search.search.windows.net/indexes('hotels-vector-quickstart')/$metadata#docs(*)", "@odata.count": 7, "value": [ { "@search.score": 0.857736, "HotelName": "Nordick's Motel", "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley." }, { "@search.score": 0.8399129, "HotelName": "Old Carrabelle Hotel", "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center." }, { "@search.score": 0.8383954, "HotelName": "Historic Lion Resort", "Description": "Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort" }, { "@search.score": 0.8254346, "HotelName": "Sublime Cliff Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace." }, { "@search.score": 0.82380056, "HotelName": "Secret Point Hotel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York." }, { "@search.score": 0.81514084, "HotelName": "Twin Dome Hotel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts." }, { "@search.score": 0.8133763, "HotelName": "Triple Landscape Hotel", "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services." } ] }
Einzelvektorsuche mit Filter
Sie können Filter hinzufügen, aber die Filter werden auf die Nicht-Vektorinhalte in Ihrem Index angewendet. In diesem Beispiel gilt der Filter für das Feld Tags
und filtert alle Hotels heraus, die kein kostenloses WLAN bereitstellen.
Fügen Sie eine POST-Anforderung ein, um den Suchindex abzufragen.
### Run a vector query with a filter POST {{baseUrl}}/indexes/hotels-vector-quickstart/docs/search?api-version=2023-11-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}} { "count": true, "select": "HotelId, HotelName, Category, Tags, Description", "filter": "Tags/any(tag: tag eq 'free wifi')", "vectorFilterMode": "postFilter", "vectorQueries": [ { "vector": [ VECTOR OMITTED ], "k": 7, "fields": "DescriptionVector", "kind": "vector", "exhaustive": true }, ] }
Überprüfen Sie die Antwort. Die Abfrage ist dieselbe wie im vorigen Beispiel, enthält jedoch einen Ausschlussfilter für die Nachbearbeitung und gibt nur die drei Hotels zurück, die über kostenloses WLAN verfügen.
{ "@odata.count": 3, "value": [ { "@search.score": 0.857736, "HotelName": "Nordick's Motel", "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.", "Tags": [ "continental breakfast", "air conditioning", "free wifi" ] }, { "@search.score": 0.8383954, "HotelName": "Historic Lion Resort", "Description": "Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort", "Tags": [ "view", "free wifi", "pool" ] }, { "@search.score": 0.81514084, "HotelName": "Twin Dome Hotel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.", "Tags": [ "pool", "free wifi", "concierge" ] } ] }
Hybridsuche
Die Hybridsuche besteht aus Stichwortabfragen und Vektorabfragen in einer einzelnen Suchanforderung. In diesem Beispiel werden die Vektorabfrage und die Volltextsuche gleichzeitig ausgeführt:
- Suchzeichenfolge:
historic hotel walk to restaurants and shopping
- Vektorabfrage-Zeichenfolge (in eine mathematische Darstellung vektorisiert):
classic lodging near running trails, eateries, retail
Fügen Sie eine POST-Anforderung ein, um den Suchindex abzufragen. Wählen Sie Anforderung senden aus.
### Run a hybrid query POST {{baseUrl}}/indexes/hotels-vector-quickstart/docs/search?api-version=2023-11-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}} { "count": true, "search": "historic hotel walk to restaurants and shopping", "select": "HotelName, Description", "top": 7, "vectorQueries": [ { "vector": [ VECTOR OMITTED], "k": 7, "fields": "DescriptionVector", "kind": "vector", "exhaustive": true } ] }
Da es sich um eine Hybridabfrage handelt, werden die Ergebnisse nach der Methode Reciprocal Rank Fusion (RRF) bewertet. RRF wertet Suchscores aus verschiedenen Suchergebnissen aus, nimmt die Umkehrung vor und führt dann die kombinierten Ergebnisse zusammen und sortiert sie. Die
top
-Anzahl der Ergebnisse wird zurückgegeben.Überprüfen Sie die Antwort.
{ "@odata.count": 7, "value": [ { "@search.score": 0.03279569745063782, "HotelName": "Historic Lion Resort", "Description": "Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort" }, { "@search.score": 0.03226646035909653, "HotelName": "Sublime Cliff Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace." }, { "@search.score": 0.03226646035909653, "HotelName": "Old Carrabelle Hotel", "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center." }, { "@search.score": 0.03205128386616707, "HotelName": "Nordick's Motel", "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley." }, { "@search.score": 0.03128054738044739, "HotelName": "Triple Landscape Hotel", "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services." }, { "@search.score": 0.03100961446762085, "HotelName": "Twin Dome Hotel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts." }, { "@search.score": 0.03077651560306549, "HotelName": "Secret Point Hotel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York." } ] }
Da RRF Ergebnisse zusammenführt, können die Eingaben leichter überprüft werden. Die folgenden Ergebnisse stammen nur aus der Volltextabfrage. Die beiden besten Ergebnisse lauten „Sublime Cliff Hotel“ und „History Lion Resort“. Das Sublime Cliff Hotel hat eine höhere BM25-Relevanzbewertung.
{ "@search.score": 2.2626662, "HotelName": "Sublime Cliff Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace." }, { "@search.score": 0.86421645, "HotelName": "Historic Lion Resort", "Description": "Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort" },
In der reinen Vektorabfrage, in der HNSW für die Suche nach Übereinstimmungen verwendet wird, fällt das Sublime Cliff Hotel auf die vierte Position zurück. Das Historic Lion Resort, das bei der Volltextsuche auf Platz zwei und bei der Vektorsuche auf Platz drei lag, weist nicht dieselbe Schwankungsbreite auf und erscheint daher in einem homogenisierten Resultset als Spitzenreiter.
"value": [ { "@search.score": 0.857736, "HotelId": "48", "HotelName": "Nordick's Motel", "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.", "Category": "Boutique" }, { "@search.score": 0.8399129, "HotelId": "49", "HotelName": "Old Carrabelle Hotel", "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.", "Category": "Luxury" }, { "@search.score": 0.8383954, "HotelId": "13", "HotelName": "Historic Lion Resort", "Description": "Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort", "Category": "Resort and Spa" }, { "@search.score": 0.8254346, "HotelId": "4", "HotelName": "Sublime Cliff Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.", "Category": "Boutique" }, { "@search.score": 0.82380056, "HotelId": "1", "HotelName": "Secret Point Hotel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York.", "Category": "Boutique" }, { "@search.score": 0.81514084, "HotelId": "2", "HotelName": "Twin Dome Hotel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.", "Category": "Boutique" }, { "@search.score": 0.8133763, "HotelId": "3", "HotelName": "Triple Landscape Hotel", "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.", "Category": "Resort and Spa" } ]
Semantische Hybridsuche mit einem Filter
Dies ist die letzte Abfrage in der Sammlung. Diese Hybridabfrage mit semantischer Bewertung wird gefiltert, um nur die Hotels innerhalb eines Radius von 500 Kilometern von Washington D.C anzuzeigen. Sie können vectorFilterMode
auf NULL festlegen, was der Standardeinstellung entspricht (preFilter
für neuere Indizes und postFilter
für ältere).
Fügen Sie eine POST-Anforderung ein, um den Suchindex abzufragen. Wählen Sie Anforderung senden aus.
### Run a hybrid query POST {{baseUrl}}/indexes/hotels-vector-quickstart/docs/search?api-version=2023-11-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}} { "count": true, "search": "historic hotel walk to restaurants and shopping", "select": "HotelId, HotelName, Category, Description,Address/City, Address/StateProvince", "filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 500", "vectorFilterMode": null, "facets": [ "Address/StateProvince"], "top": 7, "queryType": "semantic", "answers": "extractive|count-3", "captions": "extractive|highlight-true", "semanticConfiguration": "my-semantic-config", "vectorQueries": [ { "vector": [ VECTOR OMITTED ], "k": 7, "fields": "DescriptionVector", "kind": "vector", "exhaustive": true } ] }
Überprüfen Sie die Antwort. Die Antwort enthält drei Hotels, die nach Standort gefiltert, nach
StateProvince
facettiert und semantisch neu bewertet werden, um Ergebnisse höherzustufen, die der Suchzeichenfolgenabfrage (historic hotel walk to restaurants and shopping
) am nächsten kommen.Das Old Carabelle Hotel ist jetzt an der Spitze. Ohne semantische Rangfolge ist Nordick‘s Hotel die Nummer eins. Durch die semantische Bewertung erkennen die Maschinenverständnismodelle, dass
historic
für „Hotel, in fußläufiger Entfernung zu Restaurants und Einkaufsmöglichkeiten" gilt.{ "@odata.count": 3, "@search.facets": { "Address/StateProvince": [ { "count": 1, "value": "NY" }, { "count": 1, "value": "VA" } ] }, "@search.answers": [], "value": [ { "@search.score": 0.03306011110544205, "@search.rerankerScore": 2.5094974040985107, "HotelId": "49", "HotelName": "Old Carrabelle Hotel", "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.", "Category": "Luxury", "Address": { "City": "Arlington", "StateProvince": "VA" } }, { "@search.score": 0.03306011110544205, "@search.rerankerScore": 2.0370211601257324, "HotelId": "48", "HotelName": "Nordick's Motel", "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.", "Category": "Boutique", "Address": { "City": "Washington D.C.", "StateProvince": null } }, { "@search.score": 0.032258063554763794, "@search.rerankerScore": 1.6706111431121826, "HotelId": "1", "HotelName": "Secret Point Hotel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York.", "Category": "Boutique", "Address": { "City": "New York", "StateProvince": "NY" } } ] }
Die wichtigsten Punkte:
- Die Vektorsuche wird durch die Eigenschaft
vectors.value
angegeben. Die Schlüsselwortsuche wird durch die Eigenschaftsearch
angegeben. - Bei einer Hybridsuche können Sie die Vektorsuche über Stichwörter in die Volltextsuche integrieren. Filter, Rechtschreibprüfung und semantische Rangfolge betreffen nur Textinhalte, nicht Vektoren. In dieser abschließenden Abfrage gibt es keinen semantischen Wert für
answer
, weil das System keinen ausreichend starken generiert hat. - Die eigentlichen Ergebnisse umfassen weitere Details, einschließlich semantischer Beschriftungen und Hervorhebungen. Die Ergebnisse wurden zur besseren Lesbarkeit abgeändert. Führen Sie die Anforderung im REST-Client aus, um die vollständige Struktur der Antwort zu erhalten.
- Die Vektorsuche wird durch die Eigenschaft
Bereinigen
Wenn Sie in Ihrem eigenen Abonnement arbeiten, sollten Sie sich am Ende eines Projekts überlegen, ob Sie die erstellten Ressourcen noch benötigen. Ressourcen, die weiterhin ausgeführt werden, können Sie Geld kosten. Sie können einzelne Ressourcen oder die gesamte Ressourcengruppe mit allen darin enthaltenen Ressourcen löschen.
Ressourcen können im Portal über den Link Alle Ressourcen oder Ressourcengruppen im linken Navigationsbereich gesucht und verwaltet werden.
Sie können auch diesen DELETE
-Befehl ausprobieren:
### Delete an index
DELETE {{baseUrl}}/indexes/hotels-vector-quickstart?api-version=2023-11-01 HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
Nächste Schritte
Als nächster Schritt empfiehlt sich, den Democode für Python, C# oder JavaScript zu überprüfen.