Rychlý start: Vektorové vyhledávání pomocí REST
Naučte se používat rozhraní REST API služby Search k vytváření, načítání a dotazování vektorů ve službě Azure AI Search.
Ve službě Azure AI Search má úložiště vektorů schéma indexu, které definuje vektorová a nevectorová pole, konfiguraci vektorového vyhledávání algoritmů, které vytvářejí vložený prostor a nastavení definic vektorových polí, které se vyhodnocují v době dotazu. Rozhraní REST API pro vytvoření indexu vytvoří vektorové úložiště.
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Poznámka:
Tento rychlý start vynechá krok vektorizace a poskytuje vkládání do ukázkových dokumentů. Pokud chcete přidat předdefinované bloky dat a vektorizaci nad vlastním obsahem, vyzkoušejte průvodce importem a vektorizací dat pro kompletní návod.
Požadavky
Visual Studio Code s klientem REST
Azure AI Search, v libovolné oblasti a na libovolné úrovni. Vytvořte nebo najděte existující prostředek služby Azure AI Search v rámci vašeho aktuálního předplatného.
- Pro většinu tohoto rychlého startu můžete použít úroveň Free , ale pro větší datové soubory se doporučuje Basic nebo vyšší.
- Pokud chcete spustit příklad dotazu, který vyvolá sémantické reranking, musí být vyhledávací služba úroveň Basic nebo vyšší s povoleným sémantickým rankerem.
Načtení informací o prostředcích
Požadavky na koncový bod vyhledávání musí být ověřeny a autorizované. Pro tuto úlohu můžete použít klíče rozhraní API nebo role. Doporučujeme použít bezklíčové připojení prostřednictvím ID Microsoft Entra.
Vyberte kartu odpovídající preferované metodě ověřování. Stejnou metodu použijte pro všechny požadavky v tomto rychlém startu.
Přihlaste se k webu Azure Portal a vyhledejte vyhledávací službu.
Na domovské stránce Přehled vyhledejte adresu URL. Příkladem koncového bodu může být
https://mydemo.search.windows.net
.Pomocí kroků v rychlém startu bez klíčů získejte token Microsoft Entra.
Token získáte při spuštění
az account get-access-token
příkazu v kroku 3 předchozího rychlého startu.az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
Vytvoření nebo stažení souboru kódu
Ke spuštění všech požadavků v tomto rychlém startu použijete jeden .rest
nebo .http
soubor. Můžete si stáhnout soubor REST, který obsahuje kód pro tento rychlý start, nebo můžete vytvořit nový soubor v editoru Visual Studio Code a zkopírovat do něj kód.
V editoru Visual Studio Code vytvořte nový soubor s příponou nebo
.http
příponou.rest
. Napříkladaz-search-vector-quickstart.rest
. Zkopírujte a vložte nezpracovaný obsah souboru Azure-Samples/azure-search-rest-samples/blob/main/Quickstart-vectors/az-search-vector-quickstart.rest do tohoto nového souboru.V horní části souboru nahraďte zástupnou hodnotu adresou
@baseUrl
URL vyhledávací služby. Pokyny k vyhledání adresy URL vyhledávací služby najdete v části Načíst informace o prostředcích.@baseUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE
V horní části souboru nahraďte zástupnou hodnotu pro ověřování. Pokyny k získání tokenu Microsoft Entra nebo klíče rozhraní API najdete v části Načtení informací o prostředcích.
Pro doporučené ověřování bez klíčů prostřednictvím ID Microsoft Entra je nutné nahradit
@apiKey
proměnnou@token
.@token = PUT-YOUR-MICROSOFT-ENTRA-TOKEN-HERE
Pokud raději používáte klíč rozhraní API, nahraďte
@apiKey
ho klíčem, který jste zkopírovali z webu Azure Portal.@apiKey = PUT-YOUR-ADMIN-KEY-HERE
Pro doporučené ověřování bez klíčů prostřednictvím ID Microsoft Entra je nutné nahradit
api-key: {{apiKey}}
Authorization: Bearer {{token}}
v hlavičce požadavku. Nahraďte všechny nalezenéapi-key: {{apiKey}}
instance v souboru.
Vytvoření vektorového indexu
Pomocí rozhraní REST API pro vytvoření indexu vytvoříte vektorový index a nastavíte fyzické datové struktury ve vyhledávací službě.
Schéma indexu v tomto příkladu je uspořádané kolem obsahu hotelu. Ukázková data se skládají z vektorových a nevectorových názvů a popisů fiktivních hotelů. Toto schéma zahrnuje konfigurace pro indexování vektorů a dotazy a sémantické řazení.
V editoru
az-search-vector-quickstart.rest
Visual Studio Code otevřete soubor, který jste vytvořili dříve.### Create a new index
Vyhledejte blok kódu v souboru. Tento blok obsahuje požadavek na vytvoření indexuhotels-vector-quickstart
ve vyhledávací službě.### 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": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "sortable": false, "facetable": false, "analyzer": "en.microsoft" }, { "name": "Description_frvector", "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": "ParkingIncluded", "type": "Edm.Boolean", "searchable": false, "filterable": true, "retrievable": true, "sortable": true, "facetable": true }, { "name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "searchable": false, "filterable": true, "retrievable": true, "sortable": true, "facetable": true }, { "name": "Rating", "type": "Edm.Double", "searchable": false, "filterable": true, "retrievable": true, "sortable": true, "facetable": true }, { "name": "Address", "type": "Edm.ComplexType", "fields": [ { "name": "StreetAddress", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "sortable": false, "facetable": false }, { "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": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": true }, { "name": "Country", "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": "Category" } ] } } ] } }
Vyberte Odeslat žádost. Měli byste mít
HTTP/1.1 201 Created
odpověď.
Text odpovědi by měl obsahovat reprezentaci schématu indexu JSON.
{
"@odata.context": "https://my-demo-search.search.windows.net/$metadata#indexes/$entity",
"@odata.etag": "\"0x8DD2E70E6C36D8E\"",
"name": "hotels-vector-quickstart",
"defaultScoringProfile": null,
"fields": [
{
"name": "HotelId",
"type": "Edm.String",
"searchable": false,
"filterable": true,
"retrievable": true,
"sortable": false,
"facetable": false,
"key": true,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": null,
"dimensions": null,
"vectorSearchProfile": null,
"synonymMaps": []
},
[MORE FIELD DEFINITIONS OMITTED FOR BREVITY]
],
"scoringProfiles": [],
"corsOptions": null,
"suggesters": [],
"analyzers": [],
"tokenizers": [],
"tokenFilters": [],
"charFilters": [],
"encryptionKey": null,
"similarity": {
"@odata.type": "#Microsoft.Azure.Search.BM25Similarity",
"k1": null,
"b": null
},
"vectorSearch": {
"algorithms": [
{
"name": "my-hnsw-vector-config-1",
"kind": "hnsw",
"hnswParameters": {
"metric": "cosine",
"m": 4,
"efConstruction": 400,
"efSearch": 500
},
"exhaustiveKnnParameters": null
},
{
"name": "my-hnsw-vector-config-2",
"kind": "hnsw",
"hnswParameters": {
"metric": "euclidean",
"m": 4,
"efConstruction": 400,
"efSearch": 500
},
"exhaustiveKnnParameters": null
},
{
"name": "my-eknn-vector-config",
"kind": "exhaustiveKnn",
"hnswParameters": null,
"exhaustiveKnnParameters": {
"metric": "cosine"
}
}
],
"profiles": [
{
"name": "my-vector-profile",
"algorithm": "my-hnsw-vector-config-1"
}
]
},
"semantic": {
"defaultConfiguration": null,
"configurations": [
{
"name": "my-semantic-config",
"prioritizedFields": {
"titleField": {
"fieldName": "HotelName"
},
"prioritizedContentFields": [
{
"fieldName": "Description"
}
],
"prioritizedKeywordsFields": [
{
"fieldName": "Category"
}
]
}
}
]
}
}
Klíčové poznatky o rozhraní REST API pro vytvoření indexu:
Kolekce
fields
obsahuje povinné klíčové pole a textová a vektorová pole (napříkladDescription
aDescriptionVector
) pro textové a vektorové vyhledávání. Společné přidělení vektorových a nevectorových polí ve stejném indexu umožňuje hybridní dotazy. Můžete například zkombinovat filtry, vyhledávání textu pomocí sémantického řazení a vektorů do jedné operace dotazu.Vektorová pole musí obsahovat
type: Collection(Edm.Single)
dimensions
vlastnosti avectorSearchProfile
vlastnosti.Oddíl
vectorSearch
je pole přibližných konfigurací a profilů algoritmů nejbližšího souseda. Mezi podporované algoritmy patří hierarchická navigace v malém světě a vyčerpávající k-nejbližší soused. Další informace najdete v tématu Bodování relevance při hledání vektorů.Konfigurace (volitelné)
semantic
umožňuje přeřadit výsledky hledání. Výsledky můžete přeřadit v dotazech typusemantic
pro pole řetězců, která jsou zadaná v konfiguraci. Další informace najdete v přehledu sémantického řazení.
Nahrát dokumenty
Vytvoření a načtení indexu jsou samostatné kroky. Schéma indexu jste vytvořili v předchozím kroku. Teď potřebujete načíst dokumenty do indexu.
Index ve službě Azure AI Search obsahuje všechna prohledávatelná data a dotazy spuštěné ve vyhledávací službě. Pro volání REST jsou data poskytována jako dokumenty JSON. Pro tuto úlohu použijte rozhraní REST API indexu dokumentů. Identifikátor URI je rozšířen tak, aby zahrnoval kolekci docs
index
a operaci.
V editoru
az-search-vector-quickstart.rest
Visual Studio Code otevřete soubor, který jste vytvořili dříve.### Upload documents
Vyhledejte blok kódu v souboru. Tento blok obsahuje požadavek na nahrání dokumentů do indexuhotels-vector-quickstart
ve vyhledávací službě.### 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" ] } ] }
Důležité
Kód v tomto příkladu nejde spustit. Kvůli stručnosti se odebere několik znaků nebo řádků. Ke spuštění požadavku použijte kód v
az-search-vector-quickstart.rest
souboru.Vyberte Odeslat žádost. Měli byste mít
HTTP/1.1 200 OK
odpověď. Text odpovědi by měl obsahovat reprezentaci JSON vyhledávacích dokumentů.
Key takeaways about the Documents - Index REST API request:
Dokumenty v datové části se skládají z polí definovaných ve schématu indexu.
Vektorová pole obsahují hodnoty s plovoucí desetinou čárkou. Atribut dimenzí má minimálně 2 a maximálně 3 072 hodnot s plovoucí desetinou čárkou. Tento rychlý start nastaví atribut dimenzí na 1 536, protože to je velikost vkládání vygenerovaných modelem Azure OpenAI pro vkládání textu-ada-002 .
Spouštění dotazů
Teď, když jsou dokumenty načtené, můžete vůči nim vydávat vektorové dotazy pomocí funkce Documents – Search Post (REST).
V dalších částech spustíme dotazy na hotels-vector-quickstart
index. Mezi dotazy patří:
- Jednoúčelové vyhledávání vektorů
- Jednoduché vektorové vyhledávání s filtrem
- Hybridní vyhledávání
- Sémantické hybridní vyhledávání s využitím filtru
Ukázkové vektorové dotazy jsou založené na dvou řetězcích:
- Hledaný řetězec:
historic hotel walk to restaurants and shopping
- Vektorový řetězec dotazu (vektorizovaný do matematické reprezentace):
classic lodging near running trails, eateries, retail
Řetězec vektorového dotazu je sémanticky podobný hledanému řetězci, ale obsahuje výrazy, které v indexu vyhledávání neexistují. Pokud hledáte classic lodging near running trails, eateries, retail
klíčové slovo, výsledky jsou nulové. Tento příklad používáme k zobrazení toho, jak můžete získat relevantní výsledky, i když neexistují žádné odpovídající termíny.
Jednoúčelové vyhledávání vektorů
V editoru
az-search-vector-quickstart.rest
Visual Studio Code otevřete soubor, který jste vytvořili dříve.### Run a single vector query
Vyhledejte blok kódu v souboru. Tento blok obsahuje požadavek na dotazování indexu vyhledávání.### Run a single vector 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 } ] }
Tento vektorový dotaz je zkrácen pro stručnost. Obsahuje
vectorQueries.vector
vektorizovaný text vstupu dotazu, určuje,fields
která vektorová pole se prohledávají, ak
určuje počet nejbližších sousedů, které se mají vrátit.Řetězec vektorového dotazu je
classic lodging near running trails, eateries, retail
, který je vektorizován do 1 536 vkládání pro tento dotaz.Důležité
Kód v tomto příkladu nejde spustit. Kvůli stručnosti se odebere několik znaků nebo řádků. Ke spuštění požadavku použijte kód v
az-search-vector-quickstart.rest
souboru.Vyberte Odeslat žádost. Měli byste mít
HTTP/1.1 200 OK
odpověď. Text odpovědi by měl obsahovat reprezentaci výsledků hledání ve formátu JSON.
Odpověď pro vektorový classic lodging near running trails, eateries, retail
ekvivalent zahrnuje sedm výsledků. Každý výsledek poskytuje skóre hledání a pole uvedená v select
seznamu . Ve vyhledávání podobnosti odpověď vždy obsahuje k
výsledky seřazené podle skóre podobnosti hodnoty.
{
"@odata.context": "https://my-demo-search.search.windows.net/indexes('hotels-vector-quickstart')/$metadata#docs(*)",
"@odata.count": 7,
"value": [
{
"@search.score": 0.85773647,
"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.8399132,
"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.83839583,
"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.82543474,
"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.82380104,
"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.8151413,
"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.8133767,
"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\u2019s restaurant services.",
"Category": "Resort and Spa"
}
]
}
Jednoduché vektorové vyhledávání s filtrem
Můžete přidat filtry, ale filtry se použijí na obsah nevectoru ve vašem indexu. V tomto příkladu Tags
se filtr vztahuje na pole a vyfiltruje všechny hotely, které neposkytují bezplatné Wi-Fi.
V editoru
az-search-vector-quickstart.rest
Visual Studio Code otevřete soubor, který jste vytvořili dříve.### Run a vector query with a filter
Vyhledejte blok kódu v souboru. Tento blok obsahuje požadavek na dotazování indexu vyhledávání.### 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 }, ] }
Důležité
Kód v tomto příkladu nejde spustit. Kvůli stručnosti se odebere několik znaků nebo řádků. Ke spuštění požadavku použijte kód v
az-search-vector-quickstart.rest
souboru.Vyberte Odeslat žádost. Měli byste mít
HTTP/1.1 200 OK
odpověď. Text odpovědi by měl obsahovat reprezentaci výsledků hledání ve formátu JSON.
Dotaz byl stejný jako předchozí příklad jednoúčelového vyhledávání, ale obsahuje filtr vyloučení po zpracování a vrátí pouze tři hotely, které mají bezplatné Wi-Fi.
{
"@odata.context": "https://my-demo-search.search.windows.net/indexes('hotels-vector-quickstart')/$metadata#docs(*)",
"@odata.count": 3,
"value": [
{
"@search.score": 0.85773647,
"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",
"Tags": [
"continental breakfast",
"air conditioning",
"free wifi"
]
},
{
"@search.score": 0.83839583,
"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",
"Tags": [
"view",
"free wifi",
"pool"
]
},
{
"@search.score": 0.8151413,
"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",
"Tags": [
"pool",
"free wifi",
"air conditioning",
"concierge"
]
}
]
}
Hybridní vyhledávání
Hybridní vyhledávání se skládá z dotazů klíčových slov a vektorových dotazů v jediné žádosti o vyhledávání. Tento příklad spustí vektorový dotaz a fulltextové vyhledávání souběžně:
- Hledaný řetězec:
historic hotel walk to restaurants and shopping
- Vektorový řetězec dotazu (vektorizovaný do matematické reprezentace):
classic lodging near running trails, eateries, retail
V editoru
az-search-vector-quickstart.rest
Visual Studio Code otevřete soubor, který jste vytvořili dříve.### Run a hybrid query
Vyhledejte blok kódu v souboru. Tento blok obsahuje požadavek na dotazování indexu vyhledávání.### 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 } ] }
Důležité
Kód v tomto příkladu nejde spustit. Kvůli stručnosti se odebere několik znaků nebo řádků. Ke spuštění požadavku použijte kód v
az-search-vector-quickstart.rest
souboru.Vyberte Odeslat žádost. Měli byste mít
HTTP/1.1 200 OK
odpověď. Text odpovědi by měl obsahovat reprezentaci výsledků hledání ve formátu JSON.
Vzhledem k tomu, že se jedná o hybridní dotaz, výsledky jsou seřazené podle reciproční Rank Fusion (RRF). RRF vyhodnocuje skóre hledání více výsledků hledání, vezme inverzní funkci a pak sloučí a seřadí kombinované výsledky. Vrátí top
se počet výsledků.
Zkontrolujte odpověď:
{
"@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."
}
]
}
Vzhledem k tomu, že RRF sloučí výsledky, pomáhá kontrolovat vstupy. Následující výsledky pocházejí pouze z fulltextového dotazu. Nejlepšími dvěma výsledky jsou Sublime Palace Hotel a History Lion Resort. Sublime Palace Hotel má silnější skóre relevance 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"
},
V dotazu pouze vektoru, který používá HNSW k hledání shody, Sublime Palace Hotel klesne na čtvrtou pozici. Historický Lion, který byl druhý v fulltextovém vyhledávání a třetí ve vektorovém vyhledávání, nemá stejný rozsah kolísání, takže se zobrazuje jako nejlepší shoda v homogenizované sadě výsledků.
"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"
}
]
Sémantické hybridní vyhledávání s filtrem
Tady je poslední dotaz v kolekci. Tento hybridní dotaz s sémantickým řazením je filtrovaný tak, aby zobrazoval pouze hotely v okruhu 500 kilometrů od WashingtonU D.C. Můžete nastavit vectorFilterMode
hodnotu null, která je ekvivalentní výchozímu nastavení (preFilter
pro novější indexy a postFilter
pro starší indexy).
V editoru
az-search-vector-quickstart.rest
Visual Studio Code otevřete soubor, který jste vytvořili dříve.### Run a hybrid query with semantic reranking
Vyhledejte blok kódu v souboru. Tento blok obsahuje požadavek na dotazování indexu vyhledávání.### Run a hybrid query with semantic reranking 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 } ] }
Důležité
Kód v tomto příkladu nejde spustit. Kvůli stručnosti se odebere několik znaků nebo řádků. Ke spuštění požadavku použijte kód v
az-search-vector-quickstart.rest
souboru.Vyberte Odeslat žádost. Měli byste mít
HTTP/1.1 200 OK
odpověď. Text odpovědi by měl obsahovat reprezentaci výsledků hledání ve formátu JSON.
Prohlédněte si odpověď. Odpověď je tři hotely, které jsou filtrované podle umístění a omezující StateProvince
vlastnosti a sémanticky se přeřadí tak, aby podporovaly výsledky, které jsou nejblíže dotazu vyhledávacího řetězce (historic hotel walk to restaurants and shopping
).
Swirling Currents Hotel se nyní přesune do horního místa. Bez sémantického hodnocení je Nordick's Valley Motel číslo jedna. Díky sémantickému řazení modely strojového porozumění rozpoznávají, že historic
se vztahuje na "hotel, v pěší vzdálenosti od restaurace a nakupování".
{
"@odata.context": "https://my-demo-search.search.windows.net/indexes('hotels-vector-quickstart')/$metadata#docs(*)",
"@odata.count": 2,
"@search.facets": {
"Address/StateProvince": [
{
"count": 1,
"value": "VA"
}
]
},
"@search.answers": [],
"value": [
{
"@search.score": 0.03306011110544205,
"@search.rerankerScore": 2.8773112297058105,
"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.1703834533691406,
"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
}
}
]
}
Klíčové poznatky o dokumentech – Rozhraní REST API pro vyhledávání v postu :
Vektorové vyhledávání je určeno prostřednictvím
vectors.value
vlastnosti. Vyhledávání klíčových slov je určeno prostřednictvímsearch
vlastnosti.V hybridním vyhledávání můžete integrovat vektorové vyhledávání s fulltextovým vyhledáváním pomocí klíčových slov. Filtry, kontrola pravopisu a sémantické řazení se vztahují pouze na textový obsah, nikoli na vektory. V tomto posledním dotazu není žádný sémantický
answer
, protože systém nevytvořil takový, který by byl dostatečně silný.Skutečné výsledky obsahují více podrobností, včetně sémantických titulků a zvýraznění. Výsledky byly upraveny tak, aby byly čitelné. Pokud chcete získat úplnou strukturu odpovědi, spusťte požadavek v klientovi REST.
Vyčištění
Pokud pracujete s vlastním předplatným, je vhodné vždy na konci projektu zkontrolovat, jestli budete vytvořené prostředky ještě potřebovat. Prostředky, které necháte spuštěné, vás stojí peníze. Prostředky můžete odstraňovat jednotlivě nebo můžete odstranit skupinu prostředků, a odstranit tak celou sadu prostředků najednou.
Prostředky můžete najít a spravovat na webu Azure Portal pomocí odkazu Všechny prostředky nebo skupiny prostředků v levém podokně.
Pokud chcete vyhledávací službu zachovat, ale odstranit index a dokumenty, můžete použít DELETE
příkaz v klientovi REST. Tento příkaz (na konci az-search-vector-quickstart.rest
souboru) odstraní hotels-vector-quickstart
index:
### Delete an index
DELETE {{baseUrl}}/indexes/hotels-vector-quickstart?api-version=2023-11-01 HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
Další kroky
V dalším kroku doporučujeme zjistit, jak volat volání rozhraní REST API bez klíčů rozhraní API.
Můžete si také projít ukázkový kód pro Python, C# nebo JavaScript.