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 Vektorsuchkonfiguration für Algorithmen, die den Einbettungsraum erstellen, und Einstellungen für Vektorfelddefinitionen, die in Abfrageanforderungen verwendet werden. Die REST-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.
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.
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.
Suchendpunkt und API-Schlüssel abrufen
Den Suchdienstendpunkt und die API-Schlüssel finden Sie im Azure-Portal. Diese Werte fügen Sie im nächsten Schritt in eine .rest
- oder .http
-Datei ein.
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. Wir verwenden zwar API-Schlüssel für diesen Schnellstart, empfehlen jedoch, zu einer schlüssellosen Verbindung zu wechseln.
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
.Wählen Sie Einstellungen>Schlüssel aus. Es müssen entweder API-Schlüssel oder Beide aktiviert sein. Administrator-API-Schlüsselwerden verwendet, um Objekte hinzuzufügen, zu ändern und zu löschen. Es gibt zwei austauschbare Administratorschlüssel. Kopieren Sie einen der beiden Schlüssel.
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.
Erstellen Sie eine neue Textdatei in Visual Studio Code.
Fügen Sie oben in der Datei Variablen für die Werte hinzu, die Sie zuvor erfasst haben.
@baseUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE @apiKey = PUT-YOUR-ADMIN-KEY-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 api-key: {{apiKey}} { "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" } } ], "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" } ] } } ] } }
Speichern Sie die Datei erneut und wählen Sie Anforderung senden aus. Sie sollten eine
HTTP/1.1 201 Created
-Antwort erhalten. Der Antworttext sollte die JSON-Darstellung des Indexschemas enthalten.Wesentliche Punkte zu dieser REST-API:
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.
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.
Fügen Sie eine gültige Anforderung ein, die Dokumente hochlädt, ähnlich wie im folgenden Beispiel.
Speichern Sie die Datei und wählen Sie Anforderung senden aus. Sie sollten eine
HTTP/1.1 201 Created
-Antwort erhalten. Der Antworttext sollte die JSON-Darstellung der Suchdokumente enthalten.
### Upload documents
POST {{baseUrl}}/indexes/hotels-quickstart-vectors/docs/index?api-version=2023-11-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
{
"value": [
{
"@search.action": "mergeOrUpload",
"HotelId": "1",
"HotelName": "Stay-Kay City Hotel",
"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": "Old Century 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": "Gastronomic 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 Palace Hotel",
"HotelNameVector": [VECTOR ARRAY OMITTED],
"Description":
"Sublime Palace 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 Palace 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": "Luxury 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": "Nordick's Valley Motel",
"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": "Swirling Currents 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"
]
}
]
}
Wesentliche Punkte zu dieser REST-API:
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. Speichern Sie die Datei. 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 api-key: {{apiKey}} { "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 Valley 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": "Swirling Currents 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": "Luxury 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 Palace Hotel", "Description": "Sublime Palace 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 Palace is part of a lovingly restored 1800 palace." }, { "@search.score": 0.82380056, "HotelName": "Stay-Kay City 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": "Old Century 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": "Gastronomic 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 api-key: {{apiKey}} { "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 Valley 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": "Luxury 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": "Old Century 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 api-key: {{apiKey}} { "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": "Luxury 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 Palace Hotel", "Description": "Sublime Palace 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 Palace is part of a lovingly restored 1800 palace." }, { "@search.score": 0.03226646035909653, "HotelName": "Swirling Currents 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 Valley 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": "Gastronomic 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": "Old Century 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": "Stay-Kay City 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 Palace Hotel“ und „History Lion Resort“. Das Sublime Palace Hotel hat eine höhere BM25-Relevanzbewertung.
{ "@search.score": 2.2626662, "HotelName": "Sublime Palace Hotel", "Description": "Sublime Palace 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 Palace is part of a lovingly restored 1800 palace." }, { "@search.score": 0.86421645, "HotelName": "Luxury 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 Palace 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 Valley 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": "Swirling Currents 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": "Luxury 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 Palace Hotel", "Description": "Sublime Palace 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 Palace is part of a lovingly restored 1800 palace.", "Category": "Boutique" }, { "@search.score": 0.82380056, "HotelId": "1", "HotelName": "Stay-Kay City 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": "Old Century 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": "Gastronomic 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 api-key: {{apiKey}} { "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 Swirling Currents Hotel ist jetzt an der Spitze. Ohne semantische Rangfolge ist Nordick‘s Valley Motel 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": "Swirling Currents 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 Valley 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": "Stay-Kay City 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" } } ] }
Wesentliche Punkte zu dieser REST-API:
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.
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 Azure-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
api-key: {{apiKey}}
Nächste Schritte
Als nächsten Schritt empfehlen wir Ihnen, sich mit dem Aufrufen von REST-API-Aufrufen ohne API-Schlüssel vertraut zu machen.
Sie sollten sich auch den Democode für Python, C# oder JavaScript genauer ansehen.