Delen via


Quickstart: Vector search by using REST

Meer informatie over het gebruik van de SEARCH REST API's voor het maken, laden en opvragen van vectoren in Azure AI Search.

In Azure AI Search heeft een vectorarchief een indexschema dat vectorvelden en niet-vectorvelden definieert, een vectorconfiguratie voor algoritmen die de insluitruimte maken en instellingen voor vectorvelddefinities die worden gebruikt in queryaanvragen. De Create Index-API maakt het vectorarchief.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Notitie

In deze quickstart wordt de vectorisatiestap weggelaten en worden ingesloten in voorbeelddocumenten. Als u ingebouwde gegevenssegmentering en vectorisatie wilt toevoegen aan uw eigen inhoud, kunt u de wizard Gegevens importeren en vectoriseren voor een end-to-end-overzicht.

Vereisten

Bestanden downloaden

Download een REST-voorbeeld van GitHub om de aanvragen in deze quickstart te verzenden. Zie Bestanden downloaden van GitHub voor meer informatie.

U kunt ook een nieuw bestand op uw lokale systeem starten en handmatig aanvragen maken met behulp van de instructies in dit artikel.

Een zoekservice-eindpunt ophalen

U vindt het eindpunt van de zoekservice in Azure Portal.

  1. Meld u aan bij Azure Portal en zoek uw zoekservice.

  2. Zoek op de startpagina Overzicht de URL. Een eindpunt ziet er bijvoorbeeld uit als https://mydemo.search.windows.net.

    Schermopname van de URL-eigenschap op de overzichtspagina.

U plakt dit eindpunt in het .rest of .http bestand in een latere stap.

Toegang configureren

Aanvragen voor het zoekeindpunt moeten worden geverifieerd en geautoriseerd. U kunt API-sleutels of -rollen voor deze taak gebruiken. Sleutels zijn gemakkelijker te beginnen, maar rollen zijn veiliger.

Voor een op rollen gebaseerde verbinding moet u met behulp van de volgende instructies verbinding maken met Azure AI Search onder uw identiteit, niet de identiteit van een client-app.

Optie 1: Sleutels gebruiken

Selecteer Instellingensleutels> en kopieer vervolgens een beheersleutel. Beheerderssleutels worden gebruikt om objecten toe te voegen, te wijzigen en te verwijderen. Er zijn twee uitwisselbare beheerderssleutels. Kopieer een van beide. Zie Verbinding maken met Azure AI Search met behulp van sleutelverificatie voor meer informatie.

Schermopname van de API-sleutels in Azure Portal.

U plakt deze sleutel in het .rest of .http bestand in een latere stap.

Optie 2: Rollen gebruiken

Zorg ervoor dat uw zoekservice is geconfigureerd voor op rollen gebaseerde toegang. U moet vooraf geconfigureerde roltoewijzingen hebben voor toegang tot ontwikkelaars. Uw roltoewijzingen moeten machtigingen verlenen om een zoekindex te maken, laden en er query's op uit te voeren.

In deze sectie haalt u uw persoonlijke identiteitstoken op met behulp van de Azure CLI, Azure PowerShell of Azure Portal.

  1. Meld u aan bij Azure CLI.

    az login
    
  2. Haal uw persoonlijke identiteitstoken op.

    az account get-access-token --scope https://search.azure.com/.default
    

In een latere stap plakt u uw persoonlijke identiteitstoken in het .rest of .http bestand.

Notitie

In deze sectie wordt ervan uitgegaan dat u een lokale client gebruikt die namens u verbinding maakt met Azure AI Search. Een alternatieve benadering is het ophalen van een token voor de client-app, ervan uitgaande dat uw toepassing is geregistreerd bij Microsoft Entra-id.

Een vectorindex maken

Create Index (REST) maakt een vectorindex en stelt de fysieke gegevensstructuren in uw zoekservice in.

Het indexschema is georganiseerd rond hotelinhoud. Voorbeeldgegevens bestaan uit vector- en niet-vectornamen en beschrijvingen van zeven fictieve hotels. Dit schema bevat configuraties voor vectorindexering en query's en voor semantische classificatie.

  1. Open een nieuw tekstbestand in Visual Studio Code.

  2. Stel variabelen in op de waarden die u eerder hebt verzameld. In dit voorbeeld wordt een persoonlijk identiteitstoken gebruikt.

    @baseUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE
    @token = PUT-YOUR-PERSONAL-IDENTITY-TOKEN-HERE
    
  3. Sla het bestand op met een .rest of .http bestandsextensie.

  4. Plak in het volgende voorbeeld om de hotels-vector-quickstart index in uw zoekservice te maken.

    ### Create a new index
    POST {{baseUrl}}/indexes?api-version=2023-11-01  HTTP/1.1
        Content-Type: application/json
        Authorization: Bearer {{token}}
    
    {
        "name": "hotels-vector-quickstart",
        "fields": [
            {
                "name": "HotelId", 
                "type": "Edm.String",
                "searchable": false, 
                "filterable": true, 
                "retrievable": true, 
                "sortable": false, 
                "facetable": false,
                "key": true
            },
            {
                "name": "HotelName", 
                "type": "Edm.String",
                "searchable": true, 
                "filterable": false, 
                "retrievable": true, 
                "sortable": true, 
                "facetable": false
            },
            {
                "name": "HotelNameVector",
                "type": "Collection(Edm.Single)",
                "searchable": true,
                "retrievable": true,
                "dimensions": 1536,
                "vectorSearchProfile": "my-vector-profile"
            },
            {
                "name": "Description", 
                "type": "Edm.String",
                "searchable": true, 
                "filterable": false, 
                "retrievable": true, 
                "sortable": false, 
                "facetable": false
            },
            {
                "name": "DescriptionVector",
                "type": "Collection(Edm.Single)",
                "searchable": true,
                "retrievable": true,
                "dimensions": 1536,
                "vectorSearchProfile": "my-vector-profile"
            },
            {
                "name": "Category", 
                "type": "Edm.String",
                "searchable": true, 
                "filterable": true, 
                "retrievable": true, 
                "sortable": true, 
                "facetable": true
            },
            {
                "name": "Tags",
                "type": "Collection(Edm.String)",
                "searchable": true,
                "filterable": true,
                "retrievable": true,
                "sortable": false,
                "facetable": true
            },
            {
                "name": "Address", 
                "type": "Edm.ComplexType",
                "fields": [
                    {
                        "name": "City", "type": "Edm.String",
                        "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": true
                    },
                    {
                        "name": "StateProvince", "type": "Edm.String",
                        "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": true
                    }
                ]
            },
            {
                "name": "Location",
                "type": "Edm.GeographyPoint",
                "searchable": false, 
                "filterable": true, 
                "retrievable": true, 
                "sortable": true, 
                "facetable": false
            }
        ],
        "vectorSearch": {
            "algorithms": [
                {
                    "name": "my-hnsw-vector-config-1",
                    "kind": "hnsw",
                    "hnswParameters": 
                    {
                        "m": 4,
                        "efConstruction": 400,
                        "efSearch": 500,
                        "metric": "cosine"
                    }
                },
                {
                    "name": "my-hnsw-vector-config-2",
                    "kind": "hnsw",
                    "hnswParameters": 
                    {
                        "m": 4,
                        "metric": "euclidean"
                    }
                },
                {
                    "name": "my-eknn-vector-config",
                    "kind": "exhaustiveKnn",
                    "exhaustiveKnnParameters": 
                    {
                        "metric": "cosine"
                    }
                }
            ],
            "profiles": [      
                {
                    "name": "my-vector-profile",
                    "algorithm": "my-hnsw-vector-config-1"
                }
          ]
        },
        "semantic": {
            "configurations": [
                {
                    "name": "my-semantic-config",
                    "prioritizedFields": {
                        "titleField": {
                            "fieldName": "HotelName"
                        },
                        "prioritizedContentFields": [
                            { "fieldName": "Description" }
                        ],
                        "prioritizedKeywordsFields": [
                            { "fieldName": "Tags" }
                        ]
                    }
                }
            ]
        }
    }
    
  5. Selecteer Verzoek verzenden. Denk eraan dat u de REST-client nodig hebt om aanvragen te verzenden. U moet een HTTP/1.1 201 Created antwoord hebben. De hoofdtekst van het antwoord moet de JSON-weergave van het indexschema bevatten.

    Belangrijke punten:

    • De fields verzameling bevat een vereist sleutelveld en tekst- en vectorvelden (zoals Description en DescriptionVector) voor tekst- en vectorzoekopdrachten. Door vectorvelden en niet-vectorvelden in dezelfde index samen te stellen, kunnen hybride query's worden uitgevoerd. U kunt bijvoorbeeld filters, tekstzoekopdrachten combineren met semantische rangschikking en vectoren in één querybewerking.
    • Vectorvelden moeten met dimensions en vectorSearchProfile eigenschappen zijntype: Collection(Edm.Single).
    • De vectorSearch sectie is een matrix met configuraties en profielen van het dichtstbijzijnde buuralgoritmen. Ondersteunde algoritmen omvatten hiërarchische bevaarbare kleine wereld en uitgebreide k-dichtstbijzijnde buren. Zie Relevantiescore in vectorzoekopdrachten voor meer informatie.
    • [Optioneel]: met de semantic configuratie kan de zoekresultaten opnieuw worden gerankt. U kunt resultaten opnieuw rangverkennen in query's van het type semantic voor tekenreeksvelden die zijn opgegeven in de configuratie. Zie het overzicht van Semantische classificaties voor meer informatie.

Documenten uploaden

Het maken en laden van de index zijn afzonderlijke stappen. In Azure AI Search bevat de index alle doorzoekbare gegevens en query's die worden uitgevoerd op de zoekservice. Voor REST-aanroepen worden de gegevens verstrekt als JSON-documenten. Gebruik Documenten- INDEX REST API voor deze taak.

De URI wordt uitgebreid om de docs verzameling en de index bewerking op te nemen.

Belangrijk

Het volgende voorbeeld is geen uitvoerbare code. Voor leesbaarheid hebben we vectorwaarden uitgesloten omdat elke vector 1536 insluitingen bevat, wat te lang is voor dit artikel. Als u deze stap wilt proberen, kopieert u uitvoerbare code uit het voorbeeld op GitHub.

### Upload documents
POST {{baseUrl}}/indexes/hotels-quickstart-vectors/docs/index?api-version=2023-11-01  HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}

{
    "value": [
        {
            "@search.action": "mergeOrUpload",
            "HotelId": "1",
            "HotelName": "Stay-Kay City Hotel",
            "HotelNameVector": [VECTOR ARRAY OMITTED],
            "Description": 
                "The hotel is ideally located on the main commercial artery of the city 
                in the heart of New York.",
            "DescriptionVector": [VECTOR ARRAY OMITTED],
            "Category": "Boutique",
            "Tags": [
                "pool",
                "air conditioning",
                "concierge"
            ],
        },
        {
            "@search.action": "mergeOrUpload",
            "HotelId": "2",
            "HotelName": "Old Century Hotel",
            "HotelNameVector": [VECTOR ARRAY OMITTED],
            "Description": 
                "The hotel is situated in a  nineteenth century plaza, which has been 
                expanded and renovated to the highest architectural standards to create a modern, 
                functional and first-class hotel in which art and unique historical elements 
                coexist with the most modern comforts.",
            "DescriptionVector": [VECTOR ARRAY OMITTED],
            "Category": "Boutique",
            "Tags": [
                "pool",
                "air conditioning",
                "free wifi",
                "concierge"
            ]
        },
        {
            "@search.action": "mergeOrUpload",
            "HotelId": "3",
            "HotelName": "Gastronomic Landscape Hotel",
            "HotelNameVector": [VECTOR ARRAY OMITTED],
            "Description": 
                "The Hotel stands out for its gastronomic excellence under the management of 
                William Dough, who advises on and oversees all of the Hotel’s restaurant services.",
            "DescriptionVector": [VECTOR ARRAY OMITTED],
            "Category": "Resort and Spa",
            "Tags": [
                "air conditioning",
                "bar",
                "continental breakfast"
            ]
        }
        {
            "@search.action": "mergeOrUpload",
            "HotelId": "4",
            "HotelName": "Sublime Palace Hotel",
            "HotelNameVector": [VECTOR ARRAY OMITTED],
            "Description": 
                "Sublime Palace Hotel is located in the heart of the historic center of 
                Sublime in an extremely vibrant and lively area within short walking distance to 
                the sites and landmarks of the city and is surrounded by the extraordinary beauty 
                of churches, buildings, shops and monuments. 
                Sublime Palace is part of a lovingly restored 1800 palace.",
            "DescriptionVector": [VECTOR ARRAY OMITTED],
            "Category": "Boutique",
            "Tags": [
                "concierge",
                "view",
                "24-hour front desk service"
            ]
        },
        {
            "@search.action": "mergeOrUpload",
            "HotelId": "13",
            "HotelName": "Luxury Lion Resort",
            "HotelNameVector": [VECTOR ARRAY OMITTED],
            "Description": 
                "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury 
                accommodations. Moments from the stadium, we feature the best in comfort",
            "DescriptionVector": [VECTOR ARRAY OMITTED],
            "Category": "Resort and Spa",
            "Tags": [
                "view",
                "free wifi",
                "pool"
            ]
        },
        {
            "@search.action": "mergeOrUpload",
            "HotelId": "48",
            "HotelName": "Nordick's Valley Motel",
            "HotelNameVector": [VECTOR ARRAY OMITTED],
            "Description": 
                "Only 90 miles (about 2 hours) from the nation's capital and nearby 
                most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring 
                the caverns?  It's all nearby and we have specially priced packages to help make 
                our B&B your home base for fun while visiting the valley.",
            "DescriptionVector": [VECTOR ARRAY OMITTED],
            "Category": "Boutique",
            "Tags": [
                "continental breakfast",
                "air conditioning",
                "free wifi"
            ],
        },
        {
            "@search.action": "mergeOrUpload",
            "HotelId": "49",
            "HotelName": "Swirling Currents Hotel",
            "HotelNameVector": [VECTOR ARRAY OMITTED],
            "Description": 
                "Spacious rooms, glamorous suites and residences, rooftop pool, walking 
                access to shopping, dining, entertainment and the city center.",
            "DescriptionVector": [VECTOR ARRAY OMITTED],
            "Category": "Luxury",
            "Tags": [
                "air conditioning",
                "laundry service",
                "24-hour front desk service"
            ]
        }
    ]
}

Belangrijke punten:

  • Documenten in de nettolading bestaan uit velden die zijn gedefinieerd in het indexschema.
  • Vectorvelden bevatten drijvendekommawaarden. Het kenmerk Dimensies heeft minimaal 2 en een maximum van 3072 drijvendekommawaarden. In deze quickstart wordt het dimensiekenmerk ingesteld op 1536, omdat dit de grootte is van insluitingen die worden gegenereerd door het Azure OpenAI-model voor tekst-insluiten-ada-002 .

Query's uitvoeren

Nu documenten zijn geladen, kunt u vectorquery's voor deze query's uitgeven met behulp van Documenten - Zoekpost (REST).

Er zijn verschillende query's om verschillende patronen te demonstreren:

De vectorquery's in deze sectie zijn gebaseerd op twee tekenreeksen:

  • Zoekreeks: historic hotel walk to restaurants and shopping
  • Vectorquerytekenreeks (gevectoriseerd in een wiskundige weergave): classic lodging near running trails, eateries, retail

De vectorquerytekenreeks is semantisch vergelijkbaar met de zoekreeks, maar bevat termen die niet bestaan in de zoekindex. Als u een trefwoord zoekt classic lodging near running trails, eateries, retail, zijn de resultaten nul. We gebruiken dit voorbeeld om te laten zien hoe u relevante resultaten kunt krijgen, zelfs als er geen overeenkomende termen zijn.

Belangrijk

De volgende voorbeelden zijn geen uitvoerbare code. Voor leesbaarheid hebben we vectorwaarden uitgesloten omdat elke matrix 1536 insluitingen bevat, wat te lang is voor dit artikel. Als u deze query's wilt proberen, kopieert u uitvoerbare code uit het voorbeeld op GitHub.

  1. Plak een POST-aanvraag om een query uit te voeren op de zoekindex. Selecteer vervolgens Aanvraag verzenden. De URI wordt uitgebreid om de /docs/search operator op te nemen.

    ### Run a query
    POST {{baseUrl}}/indexes/hotels-vector-quickstart/docs/search?api-version=2023-11-01  HTTP/1.1
        Content-Type: application/json
        Authorization: Bearer {{token}}
    
        {
            "count": true,
            "select": "HotelId, HotelName, Description, Category",
            "vectorQueries": [
                {
                    "vector"": [0.01944167, 0.0040178085
                        . . .  TRIMMED FOR BREVITY
                        010858015, -0.017496133],
                    "k": 7,
                    "fields": "DescriptionVector",
                    "kind": "vector",
                    "exhaustive": true
                }
            ]
        }
    

    Deze vectorquery wordt ingekort voor kortheid. De vectorQueries.vector bevat de vectortekst van de query-invoer, fields bepaalt welke vectorvelden worden doorzocht en k geeft het aantal dichtstbijzijnde buren op dat moet worden geretourneerd.

    De vectorquerytekenreeks is classic lodging near running trails, eateries, retail, die wordt gevectoriseerd in 1536 insluitingen voor deze query.

  2. Bekijk het antwoord. Het antwoord voor het vectorequivalent van classic lodging near running trails, eateries, retail bevat zeven resultaten. Elk resultaat bevat een zoekscore en de velden die worden vermeld in select. In een zoekopdracht naar overeenkomsten bevat k het antwoord altijd resultaten die zijn gerangschikt op de waarde-overeenkomstscore.

    {
        "@odata.context": "https://my-demo-search.search.windows.net/indexes('hotels-vector-quickstart')/$metadata#docs(*)",
        "@odata.count": 7,
        "value": [
            {
                "@search.score": 0.857736,
                "HotelName": "Nordick's Valley Motel",
                "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley."
            },
            {
                "@search.score": 0.8399129,
                "HotelName": "Swirling Currents Hotel",
                "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center."
            },
            {
                "@search.score": 0.8383954,
                "HotelName": "Luxury Lion Resort",
                "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort"
            },
            {
                "@search.score": 0.8254346,
                "HotelName": "Sublime Palace Hotel",
                "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace."
            },
            {
                "@search.score": 0.82380056,
                "HotelName": "Stay-Kay City Hotel",
                "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York."
            },
            {
                "@search.score": 0.81514084,
                "HotelName": "Old Century Hotel",
                "Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts."
            },
            {
                "@search.score": 0.8133763,
                "HotelName": "Gastronomic Landscape Hotel",
                "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services."
            }
        ]
    }
    

Zoeken met één vector met filter

U kunt filters toevoegen, maar de filters worden toegepast op de niet-ctorinhoud in uw index. In dit voorbeeld is het filter van toepassing op het Tags veld om alle hotels te filteren die geen gratis Wi-Fi bieden.

  1. Plak een POST-aanvraag om een query uit te voeren op de zoekindex.

    ### 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
            },
        ]
    }
    
  2. Bekijk het antwoord. De query is hetzelfde als in het vorige voorbeeld, maar bevat een uitsluitingsfilter na verwerking en retourneert alleen de drie hotels met gratis Wi-Fi.

    {
    
        "@odata.count": 3,
        "value": [
            {
                "@search.score": 0.857736,
                "HotelName": "Nordick's Valley Motel",
                "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
                "Tags": [
                    "continental breakfast",
                    "air conditioning",
                    "free wifi"
                ]
            },
            {
                "@search.score": 0.8383954,
                "HotelName": "Luxury Lion Resort",
                "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort",
                "Tags": [
                    "view",
                    "free wifi",
                    "pool"
                ]
            },
            {
                "@search.score": 0.81514084,
                "HotelName": "Old Century Hotel",
                "Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.",
                "Tags": [
                    "pool",
                    "free wifi",
                    "concierge"
                ]
            }
        ]
    }
    

Hybride zoekopdrachten bestaan uit trefwoordquery's en vectorquery's in één zoekaanvraag. In dit voorbeeld wordt de vectorquery en de zoekopdracht in volledige tekst gelijktijdig uitgevoerd:

  • Zoekreeks: historic hotel walk to restaurants and shopping
  • Vectorquerytekenreeks (gevectoriseerd in een wiskundige weergave): classic lodging near running trails, eateries, retail
  1. Plak een POST-aanvraag om een query uit te voeren op de zoekindex. Selecteer vervolgens Aanvraag verzenden.

    ### 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
            }
        ]
    }
    

    Omdat dit een hybride query is, worden de resultaten gerangschikt op Wederzijdse Rank Fusion (RRF). RRF evalueert zoekscores van meerdere zoekresultaten, neemt de inverse en voegt vervolgens de gecombineerde resultaten samen en sorteert deze. Het top aantal resultaten wordt geretourneerd.

  2. Bekijk het antwoord.

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

    Omdat RRF resultaten samenvoegt, helpt het om de invoer te controleren. De volgende resultaten zijn alleen afkomstig van de volledige-tekstquery. De top twee resultaten zijn Subliem Palace Hotel en History Lion Resort. Het Sublieme Palace Hotel heeft een sterkere BM25 relevantie score.

            {
                "@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"
                },
    

    In de vectorquery, die gebruikmaakt van HNSW voor het vinden van overeenkomsten, daalt het Sublieme Palace Hotel naar de vierde positie. Historic Lion, die tweede was in de zoekopdracht in volledige tekst en derde in de vectorzoekopdracht, ondervindt niet hetzelfde fluctuatiebereik, dus het lijkt een topmatch in een gehomogeniseerde resultatenset.

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

Semantische hybride zoekopdracht met een filter

Dit is de laatste query in de verzameling. Deze hybride query met semantische classificatie wordt gefilterd om alleen de hotels binnen een straal van 500 kilometer van Washington D.C weer te geven. U kunt instellen vectorFilterMode op null, wat gelijk is aan de standaardwaarde (preFilter voor nieuwere indexen en postFilter voor oudere indexen).

  1. Plak een POST-aanvraag om een query uit te voeren op de zoekindex. Selecteer vervolgens Aanvraag verzenden.

    ### Run a hybrid query
    POST {{baseUrl}}/indexes/hotels-vector-quickstart/docs/search?api-version=2023-11-01  HTTP/1.1
        Content-Type: application/json
        Authorization: Bearer {{token}}
    
    {
        "count": true,
        "search": "historic hotel walk to restaurants and shopping",
        "select": "HotelId, HotelName, Category, Description,Address/City, Address/StateProvince",
        "filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 500",
        "vectorFilterMode": null,
        "facets": [ "Address/StateProvince"],
        "top": 7,
        "queryType": "semantic",
        "answers": "extractive|count-3",
        "captions": "extractive|highlight-true",
        "semanticConfiguration": "my-semantic-config",
        "vectorQueries": [
            {
                "vector": [ VECTOR OMITTED ],
                "k": 7,
                "fields": "DescriptionVector",
                "kind": "vector",
                "exhaustive": true
            }
        ]
    }
    
  2. Bekijk het antwoord. Het antwoord is drie hotels, die worden gefilterd op locatie en gefaceteerd door StateProvince en semantisch opnieuw zijn gerangschikt om resultaten te promoten die het dichtst bij de zoektekenreeksquery (historic hotel walk to restaurants and shopping) liggen.

    Het Swirling Currents Hotel gaat nu naar de bovenste plek. Zonder semantische rangschikking is Nordick's Valley Motel nummer één. Met semantische rangschikking herkennen de machinebegripmodellen die historic van toepassing zijn op "hotel, op loopafstand van dineren (restaurants) en winkelen."

    {
        "@odata.count": 3,
        "@search.facets": {
            "Address/StateProvince": [
                {
                    "count": 1,
                    "value": "NY"
                },
                {
                    "count": 1,
                    "value": "VA"
                }
            ]
        },
        "@search.answers": [],
        "value": [
            {
                "@search.score": 0.03306011110544205,
                "@search.rerankerScore": 2.5094974040985107,
                "HotelId": "49",
                "HotelName": "Swirling Currents Hotel",
                "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
                "Category": "Luxury",
                "Address": {
                    "City": "Arlington",
                    "StateProvince": "VA"
                }
            },
            {
                "@search.score": 0.03306011110544205,
                "@search.rerankerScore": 2.0370211601257324,
                "HotelId": "48",
                "HotelName": "Nordick's Valley Motel",
                "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
                "Category": "Boutique",
                "Address": {
                    "City": "Washington D.C.",
                    "StateProvince": null
                }
            },
            {
                "@search.score": 0.032258063554763794,
                "@search.rerankerScore": 1.6706111431121826,
                "HotelId": "1",
                "HotelName": "Stay-Kay City Hotel",
                "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York.",
                "Category": "Boutique",
                "Address": {
                    "City": "New York",
                    "StateProvince": "NY"
                }
            }
        ]
    }
    

    Belangrijke punten:

    • Vectorzoekopdrachten worden opgegeven via de vectors.value eigenschap. Trefwoorden zoeken wordt opgegeven via de search eigenschap.
    • In een hybride zoekopdracht kunt u vectorzoekopdrachten integreren met zoeken in volledige tekst over trefwoorden. Filters, spellingcontrole en semantische classificatie zijn alleen van toepassing op tekstuele inhoud en niet op vectoren. In deze laatste query is er geen semantisch answer omdat het systeem er geen heeft geproduceerd die voldoende sterk was.
    • Werkelijke resultaten bevatten meer details, inclusief semantische bijschriften en markeringen. De resultaten zijn gewijzigd voor leesbaarheid. Als u de volledige structuur van het antwoord wilt ophalen, voert u de aanvraag uit in de REST-client.

Opschonen

Wanneer u in uw eigen abonnement werkt, is het een goed idee om aan het einde van een project te bepalen of u de gemaakte resources nog nodig hebt. Resources die actief blijven, kunnen u geld kosten. U kunt resources afzonderlijk verwijderen, maar u kunt ook de resourcegroep verwijderen als u de volledige resourceset wilt verwijderen.

U kunt resources vinden en beheren in de portal met behulp van de koppeling Alle resources of resourcegroepen in het meest linkse deelvenster.

U kunt ook deze DELETE opdracht proberen:

### Delete an index
DELETE  {{baseUrl}}/indexes/hotels-vector-quickstart?api-version=2023-11-01 HTTP/1.1
    Content-Type: application/json
    Authorization: Bearer {{token}}

Volgende stappen

Als volgende stap raden we u aan de democode voor Python, C# of JavaScript te bekijken.