Rövid útmutató: Vektorkeresés REST használatával
Megtudhatja, hogyan hozhat létre, tölthet be és kérdezhet le vektorokat a Search REST API-kkal az Azure AI Searchben.
Az Azure AI Searchben a vektortároló indexsémával rendelkezik, amely vektor- és nemvektormezőket határoz meg, vektorkeresési konfigurációt a beágyazási területet létrehozó algoritmusokhoz, valamint a vektormező-definíciók lekérdezéskor kiértékelt beállításaihoz. Az Index létrehozása REST API létrehozza a vektortárolót.
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Feljegyzés
Ez a rövid útmutató kihagyja a vektorizálási lépést, és beágyazást biztosít a mintadokumentumokban. Ha beépített adatrészletezést és vektorizálást szeretne hozzáadni a saját tartalmaihoz, próbálja ki az Adatok importálása és vektorizálása varázslót egy részletes útmutatóhoz.
Előfeltételek
Visual Studio Code REST-ügyféllel.
Azure AI Search, bármely régióban és bármilyen szinten. Hozzon létre vagy keressen egy meglévő Azure AI Search-erőforrást az aktuális előfizetése alatt.
- A rövid útmutatók többségéhez használhatja az ingyenes szintet, de a nagyobb adatfájlok esetében alapszintű vagy magasabb szint használata ajánlott.
- A szemantikai újraküldést meghívó lekérdezési példa futtatásához a keresési szolgáltatásnak alapszintűnek vagy magasabbnak kell lennie, és engedélyezve van a szemantikai rangsoroló.
Erőforrásadatok lekérése
A keresési végpontra irányuló kéréseket hitelesíteni és engedélyezni kell. Ehhez a feladathoz API-kulcsokat vagy szerepköröket használhat. Azt javasoljuk, hogy a Microsoft Entra-azonosítón keresztül használjon kulcs nélküli kapcsolatot.
Válassza ki az előnyben részesített hitelesítési módszernek megfelelő lapot. Használja ugyanazt a módszert a rövid útmutatóban szereplő összes kéréshez.
Jelentkezzen be az Azure Portalra , és keresse meg a keresési szolgáltatást.
Az Áttekintés kezdőlapon keresse meg az URL-címet. A végpontok például a következőképpen nézhetnek ki:
https://mydemo.search.windows.net
.A Microsoft Entra-jogkivonat beszerzéséhez kövesse a kulcs nélküli gyorsútmutató lépéseit.
A jogkivonatot akkor kapja meg, ha az
az account get-access-token
előző rövid útmutató 3. lépésében futtatja a parancsot.az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
A kódfájl létrehozása vagy letöltése
Ebben a rövid útmutatóban egy .rest
vagy .http
fájl használatával futtathatja az összes kérést. Letöltheti a rövid útmutató kódját tartalmazó REST-fájlt, vagy létrehozhat egy új fájlt a Visual Studio Code-ban, és bemásolhatja a kódot.
A Visual Studio Code-ban hozzon létre egy új fájlt egy vagy
.http
egy.rest
fájlkiterjesztéssel. Például:az-search-vector-quickstart.rest
. Másolja és illessze be az Azure-Samples/azure-search-rest-samples/blob/main/Quickstart-vectors/az-search-vector-quickstart.rest fájl nyers tartalmát ebbe az új fájlba.A fájl tetején cserélje le a helyőrző értékét a keresési szolgáltatás URL-címére
@baseUrl
. A keresési szolgáltatás URL-címének megkeresésére vonatkozó útmutatásért tekintse meg az erőforrás-információk lekérése szakaszt.@baseUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE
A fájl tetején cserélje le a helyőrző értékét a hitelesítéshez. A Microsoft Entra-jogkivonat vagy API-kulcs beszerzésére vonatkozó útmutatásért tekintse meg az erőforrás-információk lekérése szakaszt.
A Microsoft Entra-azonosítón keresztül javasolt kulcs nélküli hitelesítéshez cserélje le
@apiKey
a@token
változót.@token = PUT-YOUR-MICROSOFT-ENTRA-TOKEN-HERE
Ha inkább API-kulcsot szeretne használni, cserélje le
@apiKey
az Azure Portalról másolt kulcsra.@apiKey = PUT-YOUR-ADMIN-KEY-HERE
A Microsoft Entra-azonosítón keresztül javasolt kulcs nélküli hitelesítéshez a kérés fejléceiben kell lecserélni
api-key: {{apiKey}}
Authorization: Bearer {{token}}
. Cserélje le aapi-key: {{apiKey}}
fájlban található összes példányt.
Vektorindex létrehozása
Az Index létrehozása REST API-val vektorindexet hozhat létre, és beállíthatja a fizikai adatstruktúrákat a keresési szolgáltatásban.
A példában szereplő indexséma a szállodai tartalom köré van rendezve. A mintaadatok a fiktív szállodák vektor- és nemvektornevéből és leírásából állnak. Ez a séma tartalmazza a vektorindexelés és a lekérdezések konfigurációit, valamint a szemantikai rangsorolást.
A Visual Studio Code-ban nyissa meg a
az-search-vector-quickstart.rest
korábban létrehozott fájlt.Keresse meg a
### Create a new index
kódblokkot a fájlban. Ez a blokk tartalmazza az index keresési szolgáltatásban való létrehozásárahotels-vector-quickstart
irányuló kérést.### 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" } ] } } ] } }
Válassza a Kérés elküldése elemet. Válaszra van szüksége
HTTP/1.1 201 Created
.
A válasz törzsének tartalmaznia kell az indexséma JSON-ábrázolását.
{
"@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"
}
]
}
}
]
}
}
Az Index rest API-val kapcsolatos legfontosabb tudnivalók:
A
fields
gyűjtemény tartalmaz egy kötelező kulcsmezőt, valamint szöveg- és vektormezőket (példáulDescription
és ) a szöveg- ésDescriptionVector
vektorkereséshez. Az ugyanabban az indexben lévő vektor- és nemvektormezők együttes áthelyezése hibrid lekérdezéseket tesz lehetővé. Egyesítheti például a szűrőket, a szövegkeresést a szemantikai rangsorolással, a vektorokat pedig egyetlen lekérdezési műveletben.A vektormezőknek tartalmazniuk
type: Collection(Edm.Single)
kell a tulajdonságokat ésvectorSearchProfile
adimensions
tulajdonságokat.A
vectorSearch
szakasz a legközelebbi szomszéd algoritmus konfigurációinak és profiljainak tömbje. A támogatott algoritmusok közé tartozik a hierarchikus navigálható kis világ és a teljes k-legközelebbi szomszéd. További információ: Relevanciapontozás a vektorkeresésben.A (nem kötelező)
semantic
konfiguráció lehetővé teszi a keresési eredmények újraküldését. A konfigurációban megadott sztringmezőkhöz tartozó típusúsemantic
lekérdezéseket újrakonfigurálhatja. További információkért tekintse meg a szemantikai rangsor áttekintését.
Dokumentumok feltöltése
Az index létrehozása és betöltése külön lépések. Az indexsémát az előző lépésben hozta létre. Most be kell töltenie a dokumentumokat az indexbe.
Az Azure AI Searchben az index tartalmazza a keresési szolgáltatásban futtatott összes kereshető adatot és lekérdezést. REST-hívások esetén az adatok JSON-dokumentumokként vannak megadva. Dokumentumok – Indexelje a REST API-t ehhez a feladathoz. Az URI ki van terjesztve a docs
gyűjteményre és a műveletre index
.
A Visual Studio Code-ban nyissa meg a
az-search-vector-quickstart.rest
korábban létrehozott fájlt.Keresse meg a
### Upload documents
kódblokkot a fájlban. Ez a blokk azt a kérést tartalmazza, hogy dokumentumokat töltsön fel ahotels-vector-quickstart
keresési szolgáltatás indexére.### 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" ] } ] }
Fontos
A példában szereplő kód nem futtatható. A rendszer több karaktert vagy sort is eltávolít a rövidség kedvéért. A kérés futtatásához használja a
az-search-vector-quickstart.rest
fájlban található kódot.Válassza a Kérés elküldése elemet. Válaszra van szüksége
HTTP/1.1 200 OK
. A válasz törzsének tartalmaznia kell a keresési dokumentumok JSON-ábrázolását.
Fontos tudnivalók a Dokumentumok – Index REST API-kérésről :
A hasznos adatok dokumentumai az indexsémában meghatározott mezőkből állnak.
A vektormezők lebegőpontos értékeket tartalmaznak. A dimenziókattribútum legalább 2 és legfeljebb 3072 lebegőpontos értékkel rendelkezik. Ez a rövid útmutató 1536-ra állítja a dimenzióattribútumot, mert ez az Azure OpenAI text-embedding-ada-002 modell által létrehozott beágyazások mérete.
Lekérdezések futtatása
A dokumentumok betöltése után vektoros lekérdezéseket állíthat ki ellenük a Dokumentumok – Keresési bejegyzés (REST) használatával.
A következő szakaszokban lekérdezéseket futtatunk az hotels-vector-quickstart
indexen. A lekérdezések a következők:
A példavektor-lekérdezések két sztringen alapulnak:
-
Keresési sztring:
historic hotel walk to restaurants and shopping
-
Vektoros lekérdezési sztring (vektorizált matematikai ábrázolásba):
classic lodging near running trails, eateries, retail
A vektoros lekérdezési sztring szemantikailag hasonló a keresési sztringhez, de olyan kifejezéseket is tartalmaz, amelyek nem léteznek a keresési indexben. Ha kulcsszókeresést classic lodging near running trails, eateries, retail
végez, az eredmények nullák. Ebben a példában bemutatjuk, hogyan kaphat releváns eredményeket akkor is, ha nincsenek egyező kifejezések.
Egyvektoros keresés
A Visual Studio Code-ban nyissa meg a
az-search-vector-quickstart.rest
korábban létrehozott fájlt.Keresse meg a
### Run a single vector query
kódblokkot a fájlban. Ez a blokk a keresési index lekérdezésére irányuló kérést tartalmazza.### 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 } ] }
Ez a vektoros lekérdezés rövidítve van a rövidítéshez. A
vectorQueries.vector
lekérdezési bemenet vektorizált szövegét tartalmazza, meghatározza,fields
hogy mely vektormezőkben keresnek, ésk
megadja a legközelebbi visszaadandó szomszédok számát.A vektoros lekérdezési
classic lodging near running trails, eateries, retail
sztring 1536 beágyazásba van vektorizálva ehhez a lekérdezéshez.Fontos
A példában szereplő kód nem futtatható. A rendszer több karaktert vagy sort is eltávolít a rövidség kedvéért. A kérés futtatásához használja a
az-search-vector-quickstart.rest
fájlban található kódot.Válassza a Kérés elküldése elemet. Válaszra van szüksége
HTTP/1.1 200 OK
. A válasz törzsének tartalmaznia kell a keresési eredmények JSON-ábrázolását.
A vektor megfelelőjének válasza classic lodging near running trails, eateries, retail
hét eredményt tartalmaz. Minden eredmény egy keresési pontszámot és a felsorolt select
mezőket tartalmazza. A hasonlósági keresésben a válasz mindig az érték-hasonlósági pontszám által rendezett eredményeket tartalmazza k
.
{
"@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"
}
]
}
Egyvektoros keresés szűrővel
Szűrőket is hozzáadhat, de a szűrők az index nem meg nem felelő tartalmára lesznek alkalmazva. Ebben a példában a szűrő a mezőre vonatkozik, hogy kiszűrje azokat a Tags
szállodákat, amelyek nem biztosítanak ingyenes Wi-Fi-t.
A Visual Studio Code-ban nyissa meg a
az-search-vector-quickstart.rest
korábban létrehozott fájlt.Keresse meg a
### Run a vector query with a filter
kódblokkot a fájlban. Ez a blokk a keresési index lekérdezésére irányuló kérést tartalmazza.### 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 }, ] }
Fontos
A példában szereplő kód nem futtatható. A rendszer több karaktert vagy sort is eltávolít a rövidség kedvéért. A kérés futtatásához használja a
az-search-vector-quickstart.rest
fájlban található kódot.Válassza a Kérés elküldése elemet. Válaszra van szüksége
HTTP/1.1 200 OK
. A válasz törzsének tartalmaznia kell a keresési eredmények JSON-ábrázolását.
A lekérdezés megegyezik az előző egyetlen vektoros keresési példával, de tartalmaz egy feldolgozás utáni kizárási szűrőt, és csak azt a három szállodát adja vissza, amelyek ingyenes Wi-Fi-vel rendelkeznek.
{
"@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"
]
}
]
}
Hibrid keresés
A hibrid keresés kulcsszó-lekérdezésekből és vektoros lekérdezésekből áll egyetlen keresési kérelemben. Ez a példa egyszerre futtatja a vektoros lekérdezést és a teljes szöveges keresést:
-
Keresési sztring:
historic hotel walk to restaurants and shopping
-
Vektoros lekérdezési sztring (vektorizált matematikai ábrázolásba):
classic lodging near running trails, eateries, retail
A Visual Studio Code-ban nyissa meg a
az-search-vector-quickstart.rest
korábban létrehozott fájlt.Keresse meg a
### Run a hybrid query
kódblokkot a fájlban. Ez a blokk a keresési index lekérdezésére irányuló kérést tartalmazza.### 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 } ] }
Fontos
A példában szereplő kód nem futtatható. A rendszer több karaktert vagy sort is eltávolít a rövidség kedvéért. A kérés futtatásához használja a
az-search-vector-quickstart.rest
fájlban található kódot.Válassza a Kérés elküldése elemet. Válaszra van szüksége
HTTP/1.1 200 OK
. A válasz törzsének tartalmaznia kell a keresési eredmények JSON-ábrázolását.
Mivel ez egy hibrid lekérdezés, az eredményeket a kölcsönös rangsor fúzió (RRF) rangsorolja. Az RRF több keresési találat keresési pontszámait értékeli ki, az inverzet veszi, majd egyesít és rendezi az egyesített találatokat. A top
visszaadott eredmények száma.
Tekintse át a választ:
{
"@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."
}
]
}
Mivel az RRF egyesíti az eredményeket, segít áttekinteni a bemeneteket. Az alábbi eredmények csak a teljes szöveges lekérdezésből származnak. Az első két találat a Sublime Palace Hotel és a History Lion Resort. A Sublime Palace Hotel nagyobb BM25 relevancia pontszámmal rendelkezik.
{
"@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"
},
A csak vektoros lekérdezésben, amely a HNSW-t használja a találatok kereséséhez, a Sublime Palace Hotel a negyedik helyre csökken. A történelmi oroszlán, amely második volt a teljes szöveges keresésben, és harmadik a vektorkeresésben, nem ugyanazt a ingadozási tartományt tapasztalja, így egy homogenizált eredményhalmazban a legjobb egyezésként jelenik meg.
"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"
}
]
Szemantikus hibrid keresés szűrővel
Ez a gyűjtemény utolsó lekérdezése. Ez a szemantikai rangsorolású hibrid lekérdezés szűrve van, hogy csak a Washington D.C. 500 km-es körzetében lévő szállodák jelenjenek meg. vectorFilterMode
Beállíthatja null értékre, amely az alapértelmezett értéknek felel meg (preFilter
újabb és régebbi indexek postFilter
esetén).
A Visual Studio Code-ban nyissa meg a
az-search-vector-quickstart.rest
korábban létrehozott fájlt.Keresse meg a
### Run a hybrid query with semantic reranking
kódblokkot a fájlban. Ez a blokk a keresési index lekérdezésére irányuló kérést tartalmazza.### 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 } ] }
Fontos
A példában szereplő kód nem futtatható. A rendszer több karaktert vagy sort is eltávolít a rövidség kedvéért. A kérés futtatásához használja a
az-search-vector-quickstart.rest
fájlban található kódot.Válassza a Kérés elküldése elemet. Válaszra van szüksége
HTTP/1.1 200 OK
. A válasz törzsének tartalmaznia kell a keresési eredmények JSON-ábrázolását.
Tekintse meg a választ. A válasz három szálloda, amelyek hely szerint vannak szűrve, és szemantikailag át vannak adva a keresési sztring StateProvince
lekérdezéséhez (historic hotel walk to restaurants and shopping
) legközelebbi találatok előléptetéséhez.
A Swirling Currents Hotel most a legfelső helyre költözik. Szemantikai rangsor nélkül a Nordick's Valley Motel az első számú. A szemantikai rangsorolással a gépi megértési modellek felismerik, hogy historic
a "szálloda, sétára az étkezéshez (éttermekhez) és a vásárláshoz".
{
"@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
}
}
]
}
Fontos tudnivalók a dokumentumokról – Search Post REST API:
A vektorkeresés a
vectors.value
tulajdonságon keresztül van megadva. A kulcsszókeresés asearch
tulajdonságon keresztül van megadva.Hibrid keresés esetén a vektoros keresést teljes szöveges kereséssel integrálhatja kulcsszavakon keresztül. A szűrők, a helyesírás-ellenőrzés és a szemantikai rangsorolás csak a szöveges tartalmakra vonatkozik, a vektorokra nem. Ebben a végső lekérdezésben nincs szemantika
answer
, mert a rendszer nem hozott létre elég erőset.A tényleges eredmények további részleteket tartalmaznak, beleértve a szemantikai feliratokat és a kiemeléseket. Az eredmények az olvashatóság érdekében módosultak. A válasz teljes szerkezetének lekéréséhez futtassa a kérést a REST-ügyfélben.
A fölöslegessé vált elemek eltávolítása
Ha a saját előfizetésében dolgozik, érdemes az egyes projektek végén eldöntenie, hogy szüksége lesz-e még a létrehozott erőforrásokra. A továbbra is futó erőforrások költségekkel járhatnak. Az erőforrásokat törölheti egyesével, vagy az erőforráscsoport törlésével eltávolíthatja a benne lévő összes erőforrást is.
Az Erőforrások keresése és kezelése az Azure Portalon a bal szélső panel Minden erőforrás vagy Erőforráscsoport hivatkozásával érhető el.
Ha meg szeretné tartani a keresési szolgáltatást, de törölni szeretné az indexet és a dokumentumokat, használhatja a DELETE
parancsot a REST-ügyfélben. Ez a parancs (a az-search-vector-quickstart.rest
fájl végén) törli az indexet hotels-vector-quickstart
:
### Delete an index
DELETE {{baseUrl}}/indexes/hotels-vector-quickstart?api-version=2023-11-01 HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
Következő lépések
A következő lépésben azt javasoljuk, hogy megtanulja, hogyan hívhat meg REST API-hívásokat API-kulcsok nélkül.
Érdemes lehet áttekinteni a Python, C# vagy JavaScript demo kódját is.