Megosztás a következőn keresztül:


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

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.

  1. Jelentkezzen be az Azure Portalra , és keresse meg a keresési szolgáltatást.

  2. 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.

    Képernyőkép az áttekintési oldalon található URL-tulajdonságról.

  3. 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.

  1. 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.

  2. 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
    
  3. 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
    
  4. 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 a api-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.

  1. A Visual Studio Code-ban nyissa meg a az-search-vector-quickstart.rest korábban létrehozott fájlt.

  2. 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ára hotels-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" }
                        ]
                    }
                }
            ]
        }
    }
    
  3. 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ául Description és ) a szöveg- és DescriptionVectorvektorkeresé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 és vectorSearchProfile a dimensions 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 .

  1. A Visual Studio Code-ban nyissa meg a az-search-vector-quickstart.rest korábban létrehozott fájlt.

  2. 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 a hotels-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.

  3. 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, retailvé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.

  1. A Visual Studio Code-ban nyissa meg a az-search-vector-quickstart.rest korábban létrehozott fájlt.

  2. 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, és k megadja a legközelebbi visszaadandó szomszédok számát.

    A vektoros lekérdezési classic lodging near running trails, eateries, retailsztring 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.

  3. 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 selectmező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.

  1. A Visual Studio Code-ban nyissa meg a az-search-vector-quickstart.rest korábban létrehozott fájlt.

  2. 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.

  3. 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"
      ]
    }
  ]
}

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
  1. A Visual Studio Code-ban nyissa meg a az-search-vector-quickstart.rest korábban létrehozott fájlt.

  2. 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.

  3. 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).

  1. A Visual Studio Code-ban nyissa meg a az-search-vector-quickstart.rest korábban létrehozott fájlt.

  2. 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.

  3. 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 a search 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.