Hızlı Başlangıç: REST kullanarak vektör araması
Azure AI Search'te vektör oluşturmak, yüklemek ve sorgulamak için Arama REST API'lerini kullanmayı öğrenin.
Azure AI Search'te vektör deposu vektör ve nonvector alanlarını tanımlayan bir dizin şemasına, ekleme alanını oluşturan algoritmalar için vektör arama yapılandırmasına ve sorgu zamanında değerlendirilen vektör alanı tanımlarındaki ayarlara sahiptir. Dizin Oluştur REST API'si vektör deposunu oluşturur.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Not
Bu hızlı başlangıç vektörleştirme adımını atlar ve örnek belgelere eklemeler sağlar. Kendi içeriğinizin üzerine yerleşik veri öbekleme ve vektörleştirme eklemek istiyorsanız, uçtan uca izlenecek yol için Verileri içeri aktarma ve vektörleştirme sihirbazını deneyin.
Önkoşullar
REST istemcisi ile Visual Studio Code.
Azure AI Search, herhangi bir bölgede ve herhangi bir katmanda. Geçerli aboneliğinizin altında mevcut bir Azure AI Search kaynağı oluşturun veya bulun.
- Bu hızlı başlangıcın çoğu için Ücretsiz katmanını kullanabilirsiniz, ancak daha büyük veri dosyaları için Temel veya üzeri önerilir.
- Anlamsal yeniden boyutlandırmayı çağıran sorgu örneğini çalıştırmak için, arama hizmetinizin anlam derecesini etkinleştirilmiş temel katman veya üzeri olması gerekir.
Kaynak bilgilerini alma
Arama uç noktasına yönelik isteklerin kimliği doğrulanmış ve yetkilendirilmiş olmalıdır. Bu görev için API anahtarlarını veya rollerini kullanabilirsiniz. Microsoft Entra Id aracılığıyla anahtarsız bağlantı kullanmanızı öneririz.
Tercih ettiğiniz kimlik doğrulama yöntemine karşılık gelen sekmeyi seçin. Bu hızlı başlangıçtaki tüm istekler için aynı yöntemi kullanın.
Azure portalında oturum açın ve arama hizmetinizi bulun.
Genel Bakış giriş sayfasında URL'yi bulun. Örnek uç nokta
https://mydemo.search.windows.net
şeklinde görünebilir.Microsoft Entra belirtecinizi almak için anahtarsız hızlı başlangıçtaki adımları izleyin.
Önceki hızlı başlangıcın 3. adımında komutunu çalıştırdığınızda
az account get-access-token
belirteci alırsınız.az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
Kod dosyasını oluşturma veya indirme
Bu hızlı başlangıçtaki tüm istekleri çalıştırmak için bir .rest
veya .http
dosya kullanırsınız. Bu hızlı başlangıcın kodunu içeren REST dosyasını indirebilir veya Visual Studio Code'da yeni bir dosya oluşturup kodu bu dosyaya kopyalayabilirsiniz.
Visual Studio Code'da veya
.http
dosya uzantısıyla yeni bir.rest
dosya oluşturun. Örneğin,az-search-vector-quickstart.rest
. Azure-Samples/azure-search-rest-samples/blob/main/Quickstart-vectors/az-search-vector-quickstart.rest dosyasının ham içeriğini kopyalayıp bu yeni dosyaya yapıştırın.Dosyanın üst kısmında yer tutucu değerini
@baseUrl
arama hizmeti URL'nizle değiştirin. Arama hizmeti URL'nizi bulma yönergeleri için Kaynak bilgilerini alma bölümüne bakın.@baseUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE
Dosyanın üst kısmında, kimlik doğrulaması için yer tutucu değerini değiştirin. Microsoft Entra belirtecinizi veya API anahtarınızı alma yönergeleri için Kaynak bilgilerini alma bölümüne bakın.
Microsoft Entra Id aracılığıyla önerilen anahtarsız kimlik doğrulaması için değerini değişkeniyle
@token
değiştirmeniz@apiKey
gerekir.@token = PUT-YOUR-MICROSOFT-ENTRA-TOKEN-HERE
API anahtarı kullanmayı tercih ediyorsanız değerini Azure portalından kopyaladığınız anahtarla değiştirin
@apiKey
.@apiKey = PUT-YOUR-ADMIN-KEY-HERE
Microsoft Entra Id aracılığıyla önerilen anahtarsız kimlik doğrulaması için, istek üst bilgilerinde ile
Authorization: Bearer {{token}}
değiştirmenizapi-key: {{apiKey}}
gerekir. Dosyada bulduğunuz tüm örnekleriniapi-key: {{apiKey}}
değiştirin.
Vektör dizini oluşturma
Dizin Oluştur REST API'sini kullanarak bir vektör dizini oluşturur ve arama hizmetinizde fiziksel veri yapılarını ayarlarsınız.
Bu örnekteki dizin şeması otel içeriğine göre düzenlenmiştir. Örnek veriler vektör ve seçici olmayan adlardan ve kurgusal otel açıklamalarından oluşur. Bu şema, vektör dizin oluşturma ve sorgular için yapılandırmaları ve anlamsal derecelendirmeyi içerir.
Visual Studio Code'da daha önce oluşturduğunuz dosyayı açın
az-search-vector-quickstart.rest
.Dosyada
### Create a new index
kod bloğunu bulun. Bu blok, arama hizmetinizde dizin oluşturmahotels-vector-quickstart
isteğini içerir.### 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" } ] } } ] } }
İstek gönder’i seçin. Bir yanıtınız
HTTP/1.1 201 Created
olmalıdır.
Yanıt gövdesi dizin şemasının JSON gösterimini içermelidir.
{
"@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"
}
]
}
}
]
}
}
Dizin Oluşturma REST API'sine ilişkin önemli ayrıntılar:
Koleksiyon,
fields
metin ve vektör araması için gerekli bir anahtar alanı ile metin ve vektör alanları (ve gibiDescription
DescriptionVector
) içerir. Vektör ve nonvector alanlarının aynı dizinde birlikte bulunması karma sorguları etkinleştirir. Örneğin, filtreleri, metin aramasını anlam derecelendirmesiyle ve vektörleri tek bir sorgu işleminde birleştirebilirsiniz.Vektör alanları ve
vectorSearchProfile
özellikleriyledimensions
olmalıdırtype: Collection(Edm.Single)
.vectorSearch
bölümü, yaklaşık en yakın komşu algoritma yapılandırmalarından ve profillerinden oluşan bir dizidir. Desteklenen algoritmalar hiyerarşik gezinilebilir küçük dünya ve en kapsamlı k-en yakın komşu içerir. Daha fazla bilgi için bkz . Vektör aramasında ilgi puanlaması.(isteğe bağlı)
semantic
yapılandırma, arama sonuçlarının yeniden yapılandırılmasını sağlar. Sonuçları, yapılandırmada belirtilen dize alanları için türündesemantic
sorgular halinde yeniden düzenleyebilirsiniz. Daha fazla bilgi edinmek için bkz . Anlam derecelendirmesine genel bakış.
Belgeleri karşıya yükle
Dizini oluşturma ve yükleme ayrı adımlardır. Dizin şemasını önceki adımda oluşturdunuz. Şimdi belgeleri dizine yüklemeniz gerekir.
Azure AI Search'te dizin, arama hizmetinde çalıştırılacak tüm aranabilir verileri ve sorguları içerir. REST çağrıları için veriler JSON belgeleri olarak sağlanır. Bu görev için Belgeler- Dizin REST API'sini kullanın. URI, koleksiyonu ve işlemi içerecek docs
şekilde genişletilir index
.
Visual Studio Code'da daha önce oluşturduğunuz dosyayı açın
az-search-vector-quickstart.rest
.Dosyada
### Upload documents
kod bloğunu bulun. Bu blok, arama hizmetinizdeki dizinehotels-vector-quickstart
belge yükleme isteğini içerir.### 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" ] } ] }
Önemli
Bu örnekteki kod çalıştırılamaz. Kısa olması için birkaç karakter veya çizgi kaldırılır. İsteği çalıştırmak için dosyanızdaki
az-search-vector-quickstart.rest
kodu kullanın.İstek gönder’i seçin. Bir yanıtınız
HTTP/1.1 200 OK
olmalıdır. Yanıt gövdesi, arama belgelerinin JSON gösterimini içermelidir.
Belgeler - Dizin REST API isteği hakkında önemli ayrıntılar:
Yükteki belgeler, dizin şemasında tanımlanan alanlardan oluşur.
Vektör alanları kayan nokta değerleri içerir. Dimensions özniteliğinin her biri en az 2, en fazla 3.072 kayan nokta değeri vardır. Bu hızlı başlangıç, Azure OpenAI text-embedding-ada-002 modeli tarafından oluşturulan eklemelerin boyutu olduğundan dimensions özniteliğini 1.536 olarak ayarlar.
Sorgu çalıştırma
Belgeler artık yüklendiklerine göre Belgeler - Arama Gönderisi (REST) kullanarak bunlara yönelik vektör sorguları gönderebilirsiniz.
Sonraki bölümlerde dizinde sorgular hotels-vector-quickstart
çalıştıracağız. Sorgular şunları içerir:
Örnek vektör sorguları iki dizeyi temel alır:
- Arama dizesi:
historic hotel walk to restaurants and shopping
- Vektör sorgu dizesi (matematiksel bir gösterime vektörleştirilmiş):
classic lodging near running trails, eateries, retail
Vektör sorgu dizesi, arama dizesine benzer, ancak arama dizininde mevcut olmayan terimleri içerir. için classic lodging near running trails, eateries, retail
anahtar sözcük araması yaparsanız sonuçlar sıfır olur. Eşleşen terimler olmasa bile ilgili sonuçları nasıl alabileceğinizi göstermek için bu örneği kullanırız.
Tek vektör arama
Visual Studio Code'da daha önce oluşturduğunuz dosyayı açın
az-search-vector-quickstart.rest
.Dosyada
### Run a single vector query
kod bloğunu bulun. Bu blok, arama dizinini sorgulama isteğini içerir.### 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 } ] }
Bu vektör sorgusu kısaldı. ,
vectorQueries.vector
sorgu girişinin vektörleştirilmiş metnini içerir,fields
hangi vektör alanlarının arandığını belirler vek
döndürülecek en yakın komşu sayısını belirtir.Vektör sorgu dizesi,
classic lodging near running trails, eateries, retail
bu sorgu için 1.536 eklemeye vektörleştirilmiş olan dizesidir.Önemli
Bu örnekteki kod çalıştırılamaz. Kısa olması için birkaç karakter veya çizgi kaldırılır. İsteği çalıştırmak için dosyanızdaki
az-search-vector-quickstart.rest
kodu kullanın.İstek gönder’i seçin. Bir yanıtınız
HTTP/1.1 200 OK
olmalıdır. Yanıt gövdesi, arama sonuçlarının JSON gösterimini içermelidir.
vektör eşdeğeri classic lodging near running trails, eateries, retail
için yanıt yedi sonuç içerir. Her sonuç bir arama puanı ve içinde select
listelenen alanları sağlar. Benzerlik aramasında yanıtta her zaman değer benzerlik puanına göre sıralanmış sonuçlar bulunur 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"
}
]
}
Filtre ile tek vektör araması
Filtreler ekleyebilirsiniz, ancak filtreler dizininizdeki görsel olmayan içeriğe uygulanır. Bu örnekte filtre, ücretsiz Wi-Fi sağlamayan Tags
otelleri filtrelemek için alana uygulanır.
Visual Studio Code'da daha önce oluşturduğunuz dosyayı açın
az-search-vector-quickstart.rest
.Dosyada
### Run a vector query with a filter
kod bloğunu bulun. Bu blok, arama dizinini sorgulama isteğini içerir.### 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 }, ] }
Önemli
Bu örnekteki kod çalıştırılamaz. Kısa olması için birkaç karakter veya çizgi kaldırılır. İsteği çalıştırmak için dosyanızdaki
az-search-vector-quickstart.rest
kodu kullanın.İstek gönder’i seçin. Bir yanıtınız
HTTP/1.1 200 OK
olmalıdır. Yanıt gövdesi, arama sonuçlarının JSON gösterimini içermelidir.
Sorgu önceki tek vektör arama örneğiyle aynıydı, ancak bir işlem sonrası dışlama filtresi içeriyor ve yalnızca ücretsiz Wi-Fi erişimi olan üç oteli döndürüyor.
{
"@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"
]
}
]
}
Karma arama
Karma arama, tek bir arama isteğindeki anahtar sözcük sorgularından ve vektör sorgularından oluşur. Bu örnek vektör sorgusunu ve tam metin aramasını eşzamanlı olarak çalıştırır:
- Arama dizesi:
historic hotel walk to restaurants and shopping
- Vektör sorgu dizesi (matematiksel bir gösterime vektörleştirilmiş):
classic lodging near running trails, eateries, retail
Visual Studio Code'da daha önce oluşturduğunuz dosyayı açın
az-search-vector-quickstart.rest
.Dosyada
### Run a hybrid query
kod bloğunu bulun. Bu blok, arama dizinini sorgulama isteğini içerir.### 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 } ] }
Önemli
Bu örnekteki kod çalıştırılamaz. Kısa olması için birkaç karakter veya çizgi kaldırılır. İsteği çalıştırmak için dosyanızdaki
az-search-vector-quickstart.rest
kodu kullanın.İstek gönder’i seçin. Bir yanıtınız
HTTP/1.1 200 OK
olmalıdır. Yanıt gövdesi, arama sonuçlarının JSON gösterimini içermelidir.
Bu bir karma sorgu olduğundan sonuçlar Reciprocal Rank Fusion (RRF) tarafından derecelenir. RRF, birden çok arama sonucunun arama puanlarını değerlendirir, tersini alır ve ardından birleştirilmiş sonuçları birleştirip sıralar. Sonuç top
sayısı döndürülür.
Yanıtı gözden geçirin:
{
"@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."
}
]
}
RRF sonuçları birleştirdiğinden girişlerin gözden geçirilmesine yardımcı olur. Aşağıdaki sonuçlar yalnızca tam metin sorgusundan alınıyor. En iyi iki sonuç Sublime Palace Hotel ve History Lion Resort oldu. Sublime Palace Hotel daha güçlü bir BM25 ilgi puanına sahiptir.
{
"@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"
},
Eşleşmeleri bulmak için HNSW kullanan yalnızca vektör sorgusunda Sublime Palace Hotel dördüncü konuma düşüyor. Tam metin aramasında ikinci, vektör aramasında üçüncü sırada yer alan Historic Lion aynı dalgalanma aralığını yaşamadığından homojenleştirilmiş sonuç kümesinde üst eşleşme olarak görünür.
"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"
}
]
Filtre ile anlamsal karma arama
Koleksiyondaki son sorgu aşağıdadır. Semantik derecelendirmeye sahip bu karma sorgu, yalnızca Washington D.C'nin 500 kilometre yarıçapındaki otelleri gösterecek şekilde filtrelenmiştir. Varsayılana eşdeğer olan null olarak ayarlayabilirsiniz vectorFilterMode
(preFilter
daha yeni dizinler ve postFilter
eski dizinler için).
Visual Studio Code'da daha önce oluşturduğunuz dosyayı açın
az-search-vector-quickstart.rest
.Dosyada
### Run a hybrid query with semantic reranking
kod bloğunu bulun. Bu blok, arama dizinini sorgulama isteğini içerir.### 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 } ] }
Önemli
Bu örnekteki kod çalıştırılamaz. Kısa olması için birkaç karakter veya çizgi kaldırılır. İsteği çalıştırmak için dosyanızdaki
az-search-vector-quickstart.rest
kodu kullanın.İstek gönder’i seçin. Bir yanıtınız
HTTP/1.1 200 OK
olmalıdır. Yanıt gövdesi, arama sonuçlarının JSON gösterimini içermelidir.
Yanıtı gözden geçirin. Yanıt, konuma göre filtrelenen ve StateProvince
arama dizesi sorgusuna (historic hotel walk to restaurants and shopping
) en yakın sonuçları yükseltmek için modellenen ve görsel olarak yeniden kaydedilen üç oteldir.
The Swirling Currents Hotel artık en üst noktaya taşınıyor. Semantik sıralama olmadan Nordick's Valley Motel bir numaradır. Anlamsal derecelendirme ile, makine kavrama modelleri bunu "otel, yemek (restoranlar) ve alışverişe yürüme mesafesinde" için geçerli olduğunu historic
algılar.
{
"@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
}
}
]
}
Belgeler hakkında önemli ayrıntılar - REST API'sini Ara :
Vektör araması özelliği aracılığıyla
vectors.value
belirtilir. Anahtar sözcük araması özelliği aracılığıylasearch
belirtilir.Karma aramada, vektör arama ile anahtar sözcükler üzerinde tam metin arama tümleştirebilirsiniz. Filtreler, yazım denetimi ve semantik derecelendirme vektörlere değil yalnızca metin içeriğine uygulanır. Bu son sorguda, sistem yeterince güçlü bir tane üretmediğinden anlamsal
answer
bir şey yoktur.Gerçek sonuçlar semantik açıklamalı alt yazılar ve vurgular da dahil olmak üzere daha fazla ayrıntı içerir. Sonuçlar okunabilirlik için değiştirildi. Yanıtın tam yapısını almak için isteği REST istemcisinde çalıştırın.
Temizleme
Kendi aboneliğinizde çalışırken, projenin sonunda oluşturduğunuz kaynaklara hala ihtiyacınız olup olmadığını belirlemek iyi bir fikirdir. Çalışır durumda bırakılan kaynaklar maliyetlerin artmasına neden olabilir. Kaynakları teker teker silebilir veya tüm kaynak grubunu silerek kaynak kümesinin tamamını kaldırabilirsiniz.
En soldaki bölmedeki Tüm kaynaklar veya Kaynak grupları bağlantısını kullanarak Azure portalında kaynakları bulabilir ve yönetebilirsiniz.
Arama hizmetini korumak, ancak dizini ve belgeleri silmek istiyorsanız REST istemcisinde komutunu kullanabilirsiniz DELETE
. Bu komut (dosyanızın az-search-vector-quickstart.rest
sonunda) dizini siler 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}}
Sonraki adımlar
Sonraki adım olarak, API anahtarları olmadan REST API çağrılarını çağırmayı öğrenmenizi öneririz.
Python, C# veya JavaScript için tanıtım kodunu da gözden geçirmek isteyebilirsiniz.