Szybki start: wyszukiwanie wektorów przy użyciu interfejsu REST
Dowiedz się, jak używać interfejsów API REST wyszukiwania do tworzenia, ładowania i wektorów zapytań w usłudze Azure AI Search.
W usłudze Azure AI Search magazyn wektorów ma schemat indeksu, który definiuje pola wektorów i niewektorów, konfigurację wektorów dla algorytmów tworzących miejsce osadzania i ustawienia definicji pól wektorów używanych w żądaniach zapytań. Interfejs API tworzenia indeksu tworzy magazyn wektorów.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Uwaga
Ten przewodnik Szybki start pomija krok wektoryzacji i udostępnia osadzanie w przykładowych dokumentach. Jeśli chcesz dodać wbudowane fragmentowanie i wektoryzację danych na własną zawartość, wypróbuj kreatora Importowanie i wektoryzowanie danych w celu uzyskania kompleksowego przewodnika.
Wymagania wstępne
Program Visual Studio Code z klientem REST. Jeśli potrzebujesz pomocy dotyczącej rozpoczynania pracy, zobacz Szybki start: wyszukiwanie tekstu przy użyciu interfejsu REST.
Usługa Azure AI Search w dowolnym regionie i w dowolnej warstwie. W tym przewodniku Szybki start możesz użyć warstwy Bezpłatna, ale w przypadku większych plików danych zalecane jest użycie warstwy Podstawowa lub nowsza. Utwórz lub znajdź istniejący zasób usługi Azure AI Search w ramach bieżącej subskrypcji.
Większość istniejących usług obsługuje wyszukiwanie wektorów. W przypadku małego podzestawu usług utworzonych przed styczniem 2019 r. indeks zawierający pola wektorowe kończy się niepowodzeniem podczas tworzenia. W takiej sytuacji należy utworzyć nową usługę.
Opcjonalnie, aby uruchomić przykład zapytania, który wywołuje semantyczne ponowne korbowanie, usługa wyszukiwania musi być warstwą Podstawowa lub nowszą z włączonym semantycznym rankerem.
Opcjonalnie zasób usługi Azure OpenAI z wdrożeniem programu
text-embedding-ada-002
. Plik źródłowy.rest
zawiera opcjonalny krok generowania nowych osadzania tekstu, ale udostępniamy wstępnie wygenerowane osadzanie, aby można było pominąć tę zależność.
Pobieranie plików
Pobierz przykład REST z usługi GitHub, aby wysłać żądania w tym przewodniku Szybki start. Aby uzyskać więcej informacji, zobacz Pobieranie plików z usługi GitHub.
Możesz również uruchomić nowy plik w systemie lokalnym i ręcznie utworzyć żądania, korzystając z instrukcji w tym artykule.
Pobieranie punktu końcowego usługi wyszukiwania
Punkt końcowy usługi wyszukiwania można znaleźć w witrynie Azure Portal.
Zaloguj się do witryny Azure Portal i znajdź usługę wyszukiwania.
Na stronie głównej Przegląd znajdź adres URL. Przykładowy punkt końcowy może wyglądać podobnie jak
https://mydemo.search.windows.net
.
Wklejasz ten punkt końcowy do .rest
pliku lub .http
w późniejszym kroku.
Konfigurowanie dostępu
Żądania do punktu końcowego wyszukiwania muszą być uwierzytelnione i autoryzowane. W tym zadaniu można użyć kluczy interfejsu API lub ról. Klucze są łatwiejsze do rozpoczęcia od, ale role są bezpieczniejsze.
W przypadku połączenia opartego na rolach poniższe instrukcje zawierają połączenie z usługą Azure AI Search w ramach tożsamości, a nie tożsamością aplikacji klienckiej.
Opcja 1. Używanie kluczy
Wybierz pozycję Klucze ustawień>, a następnie skopiuj klucz administratora. Klucze administracyjne służą do dodawania, modyfikowania i usuwania obiektów. Istnieją dwa zamienne klucze administratora. Skopiuj jedną z nich. Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia z usługą Azure AI Search przy użyciu uwierzytelniania klucza.
Wklejasz ten klucz do .rest
pliku lub .http
w późniejszym kroku.
Opcja 2. Używanie ról
Upewnij się, że usługa wyszukiwania jest skonfigurowana pod kątem dostępu opartego na rolach. Aby uzyskać dostęp dewelopera, musisz mieć wstępnie skonfigurowane przypisania ról. Przypisania ról muszą udzielać uprawnień do tworzenia, ładowania i wykonywania zapytań względem indeksu wyszukiwania.
W tej sekcji uzyskaj osobisty token tożsamości przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.
Zaloguj się do interfejsu wiersza polecenia platformy Azure.
az login
Pobierz osobisty token tożsamości.
az account get-access-token --scope https://search.azure.com/.default
Wklejasz osobisty token tożsamości do .rest
pliku lub .http
w późniejszym kroku.
Uwaga
W tej sekcji założono, że używasz klienta lokalnego, który łączy się z usługą Azure AI Search w Twoim imieniu. Alternatywną metodą jest uzyskanie tokenu dla aplikacji klienckiej, przy założeniu, że aplikacja jest zarejestrowana w identyfikatorze Microsoft Entra.
Tworzenie indeksu wektorowego
Tworzenie indeksu (REST) tworzy indeks wektorowy i konfiguruje fizyczne struktury danych w usłudze wyszukiwania.
Schemat indeksu jest zorganizowany wokół zawartości hotelowej. Przykładowe dane składają się z nazw wektorów i niewektorów oraz opisów siedmiu fikcyjnych hoteli. Ten schemat obejmuje konfiguracje indeksowania wektorów i zapytań oraz klasyfikacji semantycznej.
Otwórz nowy plik tekstowy w programie Visual Studio Code.
Ustaw zmienne na zebrane wcześniej wartości. W tym przykładzie użyto osobistego tokenu tożsamości.
@baseUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE @token = PUT-YOUR-PERSONAL-IDENTITY-TOKEN-HERE
Zapisz plik za pomocą
.rest
rozszerzenia lub.http
.Wklej poniższy przykład, aby utworzyć
hotels-vector-quickstart
indeks w usłudze wyszukiwania.### 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" } ] } } ] } }
Wybierz pozycję Wyślij wniosek. Pamiętaj, że do wysyłania żądań potrzebny jest klient REST. Powinna zostać wyświetlona
HTTP/1.1 201 Created
odpowiedź. Treść odpowiedzi powinna zawierać reprezentację JSON schematu indeksu.Najważniejsze kwestie:
- Kolekcja
fields
zawiera wymagane pole klucza oraz pola tekstowe i wektorowe (takie jakDescription
iDescriptionVector
) do wyszukiwania tekstu i wektora. Kolokowanie wektorów i pól niewektorów w tym samym indeksie umożliwia wykonywanie zapytań hybrydowych. Na przykład można połączyć filtry, wyszukiwanie tekstu z semantycznym rankingiem i wektorami w jedną operację zapytania. - Pola wektorowe muszą mieć
type: Collection(Edm.Single)
dimensions
właściwości i .vectorSearchProfile
- Sekcja
vectorSearch
jest tablicą przybliżonych konfiguracji i profilów algorytmu najbliższego sąsiada. Obsługiwane algorytmy obejmują hierarchiczny mały świat i wyczerpujący k najbliższy sąsiad. Aby uzyskać więcej informacji, zobacz Ocenianie istotności w wyszukiwaniu wektorów. - [Opcjonalnie]:
semantic
Konfiguracja umożliwia ponowne korbowanie wyników wyszukiwania. Wyniki można ponowić w zapytaniach typusemantic
dla pól ciągów określonych w konfiguracji. Aby dowiedzieć się więcej, zobacz Semantic ranking overview (Omówienie klasyfikacji semantycznej).
- Kolekcja
Przekaż dokumenty
Tworzenie i ładowanie indeksu to oddzielne kroki. W usłudze Azure AI Search indeks zawiera wszystkie dane z możliwością wyszukiwania i zapytania uruchamiane w usłudze wyszukiwania. W przypadku wywołań REST dane są udostępniane jako dokumenty JSON. Użyj interfejsu API REST indeksu dokumentów dla tego zadania.
Identyfikator URI został rozszerzony w celu uwzględnienia docs
kolekcji i index
operacji.
Ważne
W poniższym przykładzie nie można uruchomić kodu. W celu zapewnienia czytelności wykluczyliśmy wartości wektorów, ponieważ każdy z nich zawiera 1536 osadzania, co jest zbyt długie dla tego artykułu. Jeśli chcesz wypróbować ten krok, skopiuj kod możliwy do uruchomienia z przykładu w witrynie 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": "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"
]
}
]
}
Najważniejsze kwestie:
- Dokumenty w ładunku składają się z pól zdefiniowanych w schemacie indeksu.
- Pola wektorowe zawierają wartości zmiennoprzecinkowe. Atrybut wymiarów ma co najmniej 2 i maksymalnie 3072 wartości zmiennoprzecinkowe każdy. Ten przewodnik Szybki start ustawia atrybut wymiarów na 1536, ponieważ jest to rozmiar osadzania wygenerowany przez model osadzania w usłudze Azure OpenAI text-embedding-ada-002 .
Uruchamianie zapytań
Teraz, gdy dokumenty są ładowane, można wysyłać zapytania wektorowe względem nich przy użyciu funkcji Dokumenty — wyszukiwanie w wpisie (REST).
Istnieje kilka zapytań do zademonstrowania różnych wzorców:
- Wyszukiwanie jednowektorowe
- Wyszukiwanie jednowektorowe z filtrem
- Wyszukiwanie hybrydowe
- Wyszukiwanie hybrydowe semantyczne z filtrem
Zapytania wektorowe w tej sekcji są oparte na dwóch ciągach:
- Ciąg wyszukiwania:
historic hotel walk to restaurants and shopping
- Ciąg zapytania wektorowego (wektoryzowany do reprezentacji matematycznej):
classic lodging near running trails, eateries, retail
Ciąg zapytania wektorowego jest semantycznie podobny do ciągu wyszukiwania, ale zawiera terminy, które nie istnieją w indeksie wyszukiwania. Jeśli wyszukujesz classic lodging near running trails, eateries, retail
słowo kluczowe , wyniki są zerowe. W tym przykładzie pokazano, jak można uzyskać odpowiednie wyniki, nawet jeśli nie ma pasujących terminów.
Ważne
Poniższe przykłady nie są uruchamialnym kodem. W celu zapewnienia czytelności wykluczyliśmy wartości wektorów, ponieważ każda tablica zawiera 1536 osadzania, co jest zbyt długie dla tego artykułu. Jeśli chcesz wypróbować te zapytania, skopiuj kod uruchamiany z przykładu w usłudze GitHub.
Wyszukiwanie jednowektorowe
Wklej żądanie POST, aby wysłać zapytanie do indeksu wyszukiwania. Następnie wybierz pozycję Wyślij żądanie. Identyfikator URI został rozszerzony w celu uwzględnienia
/docs/search
operatora.### 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 } ] }
To zapytanie wektorowe jest skracane w celu zwięzłości. Zawiera
vectorQueries.vector
wektoryzowany tekst danych wejściowych zapytania,fields
określa, które pola wektorowe są przeszukiwane ik
określa liczbę najbliższych sąsiadów do zwrócenia.Ciąg zapytania wektorowego to
classic lodging near running trails, eateries, retail
, który jest wektoryzowany do 1536 osadzania dla tego zapytania.Przejrzyj odpowiedź. Odpowiedź dla wektora równoważnego
classic lodging near running trails, eateries, retail
zawiera siedem wyników. Każdy wynik zawiera wynik wyszukiwania i pola wymienione wselect
pliku . W wyszukiwaniu podobieństwa odpowiedź zawsze zawierak
wyniki uporządkowane według wyniku podobieństwa wartości.{ "@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." } ] }
Wyszukiwanie jednowektorowe z filtrem
Filtry można dodawać, ale filtry są stosowane do zawartości niewektorowej w indeksie. W tym przykładzie filtr dotyczy Tags
pola, aby odfiltrować wszystkie hotele, które nie zapewniają bezpłatnej sieci Wi-Fi.
Wklej żądanie POST, aby wysłać zapytanie do indeksu wyszukiwania.
### 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 }, ] }
Przejrzyj odpowiedź. Zapytanie jest takie samo jak w poprzednim przykładzie, ale zawiera filtr wykluczenia po przetworzeniu i zwraca tylko trzy hotele, które mają bezpłatne Wi-Fi.
{ "@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" ] } ] }
Wyszukiwanie hybrydowe
Wyszukiwanie hybrydowe składa się z zapytań słów kluczowych i zapytań wektorowych w jednym żądaniu wyszukiwania. W tym przykładzie zapytanie wektorowe i wyszukiwanie pełnotekstowe są uruchamiane współbieżnie:
- Ciąg wyszukiwania:
historic hotel walk to restaurants and shopping
- Ciąg zapytania wektorowego (wektoryzowany do reprezentacji matematycznej):
classic lodging near running trails, eateries, retail
Wklej żądanie POST, aby wysłać zapytanie do indeksu wyszukiwania. Następnie wybierz pozycję Wyślij żądanie.
### 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 } ] }
Ponieważ jest to zapytanie hybrydowe, wyniki są klasyfikowane przez wzajemne łączenie rangi (RRF). Funkcja RRF ocenia wyniki wyszukiwania wielu wyników wyszukiwania, przyjmuje odwrotność, a następnie scala i sortuje połączone wyniki. Zwracana
top
jest liczba wyników.Przejrzyj odpowiedź.
{ "@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." } ] }
Ponieważ funkcja RRF scala wyniki, pomaga przejrzeć dane wejściowe. Poniższe wyniki pochodzą tylko z zapytania pełnotekstowego. Dwa najlepsze wyniki to Sublime Palace Hotel and History Lion Resort. Hotel Sublime Palace ma silniejszy wynik istotności BM25.
{ "@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" },
W zapytaniu tylko wektorów, które używa HNSW do znajdowania dopasowań, Hotel Sublime Palace spada na czwartą pozycję. Historyczny Lew, który był drugi w wyszukiwaniu pełnotekstowym i trzecim w wyszukiwaniu wektorowym, nie doświadcza tego samego zakresu wahań, więc wydaje się być najlepszym dopasowaniem w zestawie wyników homogenizowanych.
"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" } ]
Semantyczne wyszukiwanie hybrydowe z filtrem
Oto ostatnie zapytanie w kolekcji. To zapytanie hybrydowe z klasyfikacją semantyczną jest filtrowane, aby pokazać tylko hotele w promieniu 500 kilometrów od Waszyngtonu. Można ustawić vectorFilterMode
wartość null, która jest równoważna wartości domyślnej (preFilter
dla nowszych indeksów i postFilter
starszych).
Wklej żądanie POST, aby wysłać zapytanie do indeksu wyszukiwania. Następnie wybierz pozycję Wyślij żądanie.
### 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 } ] }
Przejrzyj odpowiedź. Odpowiedź to trzy hotele, które są filtrowane według lokalizacji i semantycznie
StateProvince
ponownie sklasyfikowane w celu podwyższenia poziomu wyników znajdujących się najbliżej zapytania ciągu wyszukiwania (historic hotel walk to restaurants and shopping
).Swirling Currents Hotel przenosi się teraz na pierwsze miejsce. Bez semantycznego rankingu, Nordick's Valley Motel jest numerem jeden. Dzięki semantycznemu rankingowi modele zrozumienia maszyn rozpoznają, że
historic
dotyczy "hotelu, w odległości spaceru od restauracji i zakupów".{ "@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" } } ] }
Najważniejsze kwestie:
- Wyszukiwanie wektorowe
vectors.value
jest określane za pośrednictwem właściwości . Wyszukiwanie słów kluczowych jest określane za pośrednictwemsearch
właściwości . - W wyszukiwaniu hybrydowym można zintegrować wyszukiwanie wektorów z wyszukiwaniem pełnotekstowym za pomocą słów kluczowych. Filtry, sprawdzanie pisowni i klasyfikacja semantyczna mają zastosowanie tylko do zawartości tekstowej, a nie do wektorów. W tym ostatnim zapytaniu nie ma semantyki
answer
, ponieważ system nie wyprodukował takiego, który był wystarczająco silny. - Rzeczywiste wyniki zawierają więcej szczegółów, w tym semantyczne podpisy i wyróżnienia. Wyniki zostały zmodyfikowane pod kątem czytelności. Aby uzyskać pełną strukturę odpowiedzi, uruchom żądanie w kliencie REST.
- Wyszukiwanie wektorowe
Czyszczenie
Jeśli pracujesz w ramach własnej subskrypcji, dobrym pomysłem po zakończeniu projektu jest sprawdzenie, czy dalej potrzebujesz utworzonych zasobów. Uruchomione zasoby mogą generować koszty. Zasoby możesz usuwać pojedynczo lub jako grupę zasobów, usuwając cały zestaw zasobów.
Zasoby można znaleźć w portalu i zarządzać nimi, korzystając z linku Wszystkie zasoby lub Grupy zasobów w okienku po lewej stronie.
Możesz również wypróbować następujące DELETE
polecenie:
### Delete an index
DELETE {{baseUrl}}/indexes/hotels-vector-quickstart?api-version=2023-11-01 HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
Następne kroki
W następnym kroku zalecamy przejrzenie kodu demonstracyjnego dla języka Python, C# lub JavaScript.