Skapa eller uppdatera index (förhandsversion av REST API)

Gäller för: 2023-07-01-Preview, 2021-04-30-Preview, 2020-06-30-Preview

Viktigt

2023-07-01-Preview lägger till vektorsökning.

2021-04-30-Preview lägger till:

  • "semanticConfiguration" används för att omfångsbegränsa semantisk rangordning till specifika fält.
  • "identitet", under "encryptionKey", som används för att hämta en kundhanterad krypteringsnyckel från Azure Key Vault med hjälp av en användartilldelad hanterad identitet.

2020-06-30-Preview lägger till:

  • "normalizers", som används för skiftlägeskänslighet för sortering och filter.

Ett index anger indexschemat, inklusive fältsamlingen (fältnamn, datatyper och attribut), men även andra konstruktioner (förslagsgivare, bedömningsprofiler och CORS-konfiguration) som definierar andra sökbeteenden.

Du kan använda POST eller PUT på en create-begäran. För någon av dem innehåller begärandetexten objektdefinitionen.

POST https://[servicename].search.windows.net/indexes?api-version=[api-version]  
  Content-Type: application/json
  api-key: [admin key]  

För uppdateringsbegäranden använder du PUT och anger indexnamnet på URI:n.

PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
  Content-Type: application/json
  api-key: [admin key]

HTTPS krävs för alla tjänstbegäranden. Om indexet inte finns skapas det. Om den redan finns uppdateras den till den nya definitionen.

När du skapar ett index upprättas schemat och metadata. Att fylla i indexet är en separat åtgärd. I det här steget kan du använda en indexerare (se Indexeringsåtgärder, tillgängliga för datakällor som stöds) eller Lägg till, uppdatera eller ta bort dokument. Det maximala antalet index som du kan skapa varierar beroende på prisnivå. I varje index finns det gränser för enskilda element. Mer information finns i Tjänstgränser för Azure AI Search.

Uppdatering av ett befintligt index måste innehålla den fullständiga schemadefinitionen, inklusive alla ursprungliga definitioner som du vill bevara. I allmänhet är det bästa mönstret för uppdateringar att hämta indexdefinitionen med en GET, ändra den och sedan uppdatera den med PUT.

Eftersom ett befintligt index innehåller innehåll kräver många indexändringar en indexborttagning och återskapande. Följande schemaändringar är ett undantag från den här regeln:

  • Lägga till nya fält

  • Lägga till eller ändra bedömningsprofiler

  • Lägga till eller ändra semantiska konfigurationer

  • Ändra CORS-alternativ

  • Ändra befintliga fält med någon av följande tre ändringar:

    • Visa eller dölj fält (retrievable: sant | falskt)
    • Ändra analysatorn som används vid frågetillfället (searchAnalyzer)
    • Lägga till eller redigera synonymmappen som används vid frågetillfället (synonymMaps)

Om du vill göra någon av ovanstående schemaändringar i ett befintligt index anger du namnet på indexet på begärande-URI:n och inkluderar sedan en fullständigt angiven indexdefinition med de nya eller ändrade elementen.

När ett nytt fält läggs till har alla befintliga dokument i indexet automatiskt ett null-värde för det fältet. Inget extra lagringsutrymme förbrukas förrän någon av två saker inträffar: ett värde anges för det nya fältet (med sammanslagning) eller nya dokument läggs till.

Uppdateringar har suggester liknande begränsningar: nya fält kan läggas till i ett suggester samtidigt som fält läggs till, men befintliga fält kan inte tas bort från eller läggas till suggesters utan återskapande av index.

Uppdateringar till en analysator tillåts inte en tokeniserare, ett tokenfilter eller ett teckenfilter. Nya kan skapas med de ändringar du vill ha, men du måste ta indexet offline när du lägger till de nya analysdefinitionerna. allowIndexDowntime Om du ställer in flaggan på true i indexuppdateringsbegäran kopplas indexet från:

PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true

Den här åtgärden tar ditt index offline i minst några sekunder, vilket innebär att indexering och frågebegäranden misslyckas tills indexet är online igen och redo att hantera begäranden.

URI-parametrar

Parameter Beskrivning
tjänstnamn Krävs. Ange det här värdet till det unika, användardefinierade namnet på söktjänsten.
indexnamn Krävs på URI:n om du använder PUT. Namnet måste vara gemener, börja med en bokstav eller ett tal, ha inga snedstreck eller punkter och vara färre än 128 tecken. Bindestreck kan inte vara i följd.
api-version Krävs. Den aktuella förhandsversionen är 2023-07-23-preview. Se API-versioner för fler versioner.
allowIndexDowntime Valfritt. Falskt som standard. Ange till true för vissa uppdateringar, till exempel att lägga till eller ändra en analysator, tokeniserare, tokenfilter, teckenfilter eller likhetsegenskap. Indexet tas offline under uppdateringen, vanligtvis inte mer än flera sekunder.

Rubriker för begäran

I följande tabell beskrivs nödvändiga och valfria begärandehuvuden.

Fält Description
Content-Type Krävs. Ange det här värdet till application/json
api-key Valfritt om du använder Azure-roller och en ägartoken anges på begäran, annars krävs en nyckel. En API-nyckel är en unik, systemgenererad sträng som autentiserar begäran till söktjänsten. Skapa begäranden måste innehålla en api-key rubrik inställd på din administratörsnyckel (till skillnad från en frågenyckel). Mer information finns i Ansluta till Azure AI Search med nyckelautentisering .

Begärandetext

Brödtexten i begäran innehåller en schemadefinition som innehåller listan över datafält i dokument som matas in i det här indexet.

Följande JSON är en övergripande representation av ett schema som stöder vektorsökning. Ett schema kräver ett nyckelfält och nyckelfältet kan vara sökbart, filterbart, sorterbart och fasettbart.

Ett vektorsökfält är av typen Collection(Edm.Single). Eftersom vektorfält inte är textbaserade kan ett vektorfält inte användas som en nyckel och det accepterar inte analysverktyg, normaliserare, förslagsgivare eller synonymer. Den måste ha egenskapen "dimensions" och egenskapen "vectorSearchConfiguration".

Ett schema som stöder vektorsökning kan också stödja nyckelordssökning. Andra icke-klientfält i indexet kan använda alla analysverktyg, synonymer och bedömningsprofiler som du inkluderar i ditt index.

{  
  "name": (optional on PUT; required on POST) "Name of the index",
  "description": (optional) "Description of the index",  
  "fields": [  
    {  
      "name": "name_of_field",  
      "type": "Edm.String | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint | Edm.ComplexType | Collection(Edm.String) | Collection(Edm.Int32) | Collection(Edm.Int64) | Collection(Edm.Single) | Collection(Edm.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",
      "key": true | false (default, only Edm.String fields can be keys, enable on one field only),  
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),  
      "filterable": true (default) | false,  
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),  
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),  
      "retrievable": true (default) | false,  
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "normalizer": "name_of_normalizer", (optional, applies only to filterable, facetable, or sortable Edm.String and Collection(Edm.String) fields.)
      "synonymMaps": [ "name_of_synonym_map" ], (optional, only one synonym map per field is currently supported),
      "fields" : [ ... ], (optional, a list of sub-fields if this is a field of type Edm.ComplexType or Collection(Edm.ComplexType). Must be null or empty for simple fields.)
      "dimensions": 1234, (required for vector field definitions. Prohibited for non-vector fields. Integer specifying the dimensionality of the embeddings generated by a machine learning model)
      "vectorSearchConfiguration": "name_of_algorithm_config" (required for vector field definitions. Prohibited for non-vector fields. This should reference an algorithm configuration.)
    }
  ],
  "similarity": (optional) { },
  "suggesters": (optional) [ ... ],  
  "scoringProfiles": (optional) [ ... ],  
  "semantic": (optional) { },
  "vectorSearch": (optional) {
    "algorithmConfigurations": [
        {
            "name": "name_of_algorithm_config",
            "kind": "hnsw" (algorithm type. Only "hnsw" is supported currently.),
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]},
  "normalizers":(optional) [ ... ],
  "analyzers":(optional) [ ... ],
  "charFilters":(optional) [ ... ],
  "tokenizers":(optional) [ ... ],
  "tokenFilters":(optional) [ ... ],
  "defaultScoringProfile": (optional) "Name of a custom scoring profile to use as the default",  
  "corsOptions": (optional) { },
  "encryptionKey":(optional) { }  
}  

Begäran innehåller följande egenskaper:

Egenskap Beskrivning
name Krävs. Namnet på indexet. Ett indexnamn får bara innehålla gemener, siffror eller bindestreck, kan inte starta eller sluta med bindestreck och är begränsat till 128 tecken.
beskrivning En valfri beskrivning.
Fält En samling fält för det här indexet, där varje fält har ett namn, en datatyp som stöds som överensstämmer med entitetsdatamodellen (EDM) och attribut som definierar tillåtna åtgärder i fältet. Fältsamlingen måste ha ett fält av typen Edm.String med "nyckel" inställt på "true". Det här fältet representerar den unika identifieraren, som ibland kallas dokument-ID, för varje dokument som lagras med indexet. Fältsamlingen accepterar nu vektorfält.
Likhet Valfritt. För tjänster som skapades före den 15 juli 2020 anger du att den här egenskapen ska välja BM25-rankningsalgoritmen.
förslagsgivare Anger en konstruktion som lagrar prefix för matchning på partiella frågor som komplettera automatiskt och förslag.
scoringProfiles Valfritt. Används för relevansjustering för fulltextfrågor.
Semantiska Valfritt. Definierar parametrarna för ett sökindex som påverkar semantiska sökfunktioner. En semantisk konfiguration krävs för semantiska frågor. Mer information finns i Skapa en semantisk fråga.
vectorSearch Valfritt. Konfigurerar olika inställningar för vektorsökning. Endast vektorsökningsalgoritmer kan konfigureras.
normaliserare Valfritt. Normaliserar lexikografiska ordningsföljder för strängar, vilket ger skiftlägesokänslig sortering och filtrering av utdata.
analyzeers, charFilters, tokenizers, tokenFilters Valfritt. Ange de här avsnitten i indexet om du definierar anpassade analysverktyg. Som standard är de här avsnitten null.
defaultScoringProfile Namnet på en anpassad bedömningsprofil som skriver över standardbedömningsbeteendena.
corsOptions Valfritt. Används för frågor mellan ursprung till ditt index.
encryptionKey Valfritt. Används för extra kryptering av indexet via kundhanterade krypteringsnycklar (CMK) i Azure Key Vault. Tillgängligt för fakturerbara söktjänster som skapats på eller efter 2019-01-01.

Svarsåtgärder

För en lyckad begäran om att skapa bör du se statuskoden "201 Skapad". Svarstexten innehåller som standard JSON för indexdefinitionen som skapades. Men om prefer request-huvudet är inställt på return=minimal är svarstexten tom och statuskoden för lyckad status är "204 Inget innehåll" i stället för "201 Skapad". Detta gäller oavsett om PUT eller POST används för att skapa indexet.

För en lyckad uppdateringsbegäran bör du se "204 Inget innehåll". Svarstexten är som standard tom. Men om Prefer begärandehuvudet är inställt på return=representationinnehåller svarstexten JSON för indexdefinitionen som uppdaterades. I det här fallet är statuskoden "200 OK".

Exempel

Exempel: Vektor

Vektorsökning implementeras på fältnivå. Den här definitionen fokuserar på vektorfält. Vektorfält måste vara av den typ Collection(Edm.Single) som används för att lagra flyttalsvärden med enkel precision. Vektorfält har egenskapen "dimensions" som innehåller antalet utdatadimensioner som stöds av maskininlärningsmodellen som används för att generera inbäddningar. Om du till exempel använder text-embedding-ada-002 är det maximala antalet utdatadimensioner 1 536 per det här dokumentet. "algorithmConfiguration" är inställt på namnet på konfigurationen "vectorSearch" i indexet. Du kan definiera flera i indexet och sedan ange ett per fält.

Många attribut gäller endast för icke-klientfält. Attribut som "filterable", "sortable", "facetable", "analyzer", "normalizer" och "synonymMaps" ignoreras för vektorfält. Om du anger egenskaper för endast vektorer som "dimensioner" eller "vectorSearchConfiguration" för fält som innehåller alfanumeriskt innehåll ignoreras dessa attribut.

{
    "name": "{{index-name}}",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "searchable": true,
            "retrievable": true,
            "filterable": true
        },
        {
            "name": "titleVector",
            "type": "Collection(Edm.Single)",
            "key": false,
            "searchable": true,
            "retrievable": true,
            "filterable": false,  
            "sortable": false,  
            "facetable": false,
            "analyzer": "",
            "searchAnalyzer": "",
            "indexAnalyzer": "",
            "normalizer": "",
            "synonymMaps": "", 
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        },
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "key": false,
            "searchable": true,
            "retrievable": true,
            "filterable": false,  
            "sortable": false,  
            "facetable": false,
            "analyzer": "",
            "searchAnalyzer": "",
            "indexAnalyzer": "",
            "normalizer": "",
            "synonymMaps": "", 
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        }
    ],
    "vectorSearch": {
        "algorithmConfigurations": [
            {
                "name": "my-vector-config",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "efSearch": 500,
                    "metric": "cosine"
                }
            }
        ]
    }
}

Exempel: Fältsamlingar med vektor- och icke-vektorfält

Vektorsökning implementeras på fältnivå. För att stödja hybridfrågescenarier skapar du fältpar för vektor- och icke-vektorfrågor. Fälten "title", "titleVector", "content", "contentVector" följer den här konventionen. Om du också vill använda semantisk sökning måste du ha icke-bevektoriska textfält för dessa beteenden.

{
    "name": "{{index-name}}",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "filterable": true
        },
        {
            "name": "title",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "content",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "category",
            "type": "Edm.String",
            "filterable": true,
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "titleVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": true,
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        },
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": true,
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        }
    ],
    "corsOptions": {
        "allowedOrigins": [
            "*"
        ],
        "maxAgeInSeconds": 60
    },
    "vectorSearch": {
        "algorithmConfigurations": [
            {
                "name": "my-vector-config",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "efSearch": 500,
                    "metric": "cosine"
                }
            }
        ]
    },
    "semantic": {
        "configurations": [
            {
                "name": "my-semantic-config",
                "prioritizedFields": {
                    "titleField": {
                        "fieldName": "title"
                    },
                    "prioritizedContentFields": [
                        {
                            "fieldName": "content"
                        }
                    ],
                    "prioritizedKeywordsFields": [
                        {
                            "fieldName": "category"
                        }
                    ]
                }
            }
        ]
    }
}

Exempel: Ett indexschema med enkla och komplexa fält

Det första exemplet visar ett fullständigt indexschema med enkla och komplexa fält. Minst ett strängfält måste ha "nyckel" inställt på sant.

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true },
    { "name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Address", "type": "Edm.ComplexType", 
      "fields": [
          { "name": "StreetAddress", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "searchable": true },
          { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true, "normalizer": "lowercase" },
          { "name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "Country", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true }
        ]
    },
    { "name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true },
    { "name": "Rooms", "type": "Collection(Edm.ComplexType)", 
      "fields": [
          { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene" },
          { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene" },
          { "name": "Type", "type": "Edm.String", "searchable": true },
          { "name": "BaseRate", "type": "Edm.Double", "filterable": true, "facetable": true },
          { "name": "BedOptions", "type": "Edm.String", "searchable": true },
          { "name": "SleepsCount", "type": "Edm.Int32", "filterable": true, "facetable": true },
          { "name": "SmokingAllowed", "type": "Edm.Boolean", "filterable": true, "facetable": true },
          { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" }
        ]
    }
  ],
  "suggesters": [ ],
  "analyzers": [ ],
  "normalizers": [ ],
  "encryptionKey": [ ]
}  

Exempel: Förslagsgivare

En förslagsdefinition bör ange "sökbara" och "hämtningsbara" strängfält (i REST-API:erna är "retrievable": true alla enkla fält som standard). När en förslagslämnare har definierats kan du referera till den med namn på frågebegäranden som använder antingen API:et Förslag eller Komplettera automatiskt, beroende på om du vill returnera en matchning eller resten av en frågeterm.

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },

  ],
  "suggesters": [
    {  
      "name": "sg",  
      "searchMode": "analyzingInfixMatching",  
      "sourceFields": ["HotelName", "Category", "Tags"]  
    } 
  ]
} 

Exempel: Analysverktyg och normaliserare

Analysverktyg och normaliserare refereras till i fältdefinitioner och kan vara antingen fördefinierade eller anpassade. Om du använder anpassade analysverktyg eller normaliserare anger du dem i indexet i avsnitten "analyzeers" och "normalizers".

I följande exempel visas anpassade analysverktyg och normaliserare för "Taggar". Den visar också en fördefinierad normaliserare (standard) och analysverktyg (en.microsoft) för "HotelName" respektive "Description".

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false, "normalizer": standard  },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft"},
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },

  ],
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "tagsAnalyzer",
      "charFilters": [ "html_strip" ],
      "tokenizer": "standard_v2"
    }
  ],
  "normalizers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomNormalizer",
      "name": "tagsNormalizer",
      "tokenFilters": [ "asciifolding", "lowercase" ]
    }
  ]
}  

Exempel: Likhet för sökrelevans

Den här egenskapen anger rangordningsalgoritmen som används för att skapa en relevanspoäng i sökresultat för en fulltextsökningsfråga. I tjänster som skapats efter den 15 juli 2020 ignoreras den här egenskapen eftersom likhetsalgoritmen alltid är BM25. För befintliga tjänster som skapades före den 15 juli 2020 kan du välja BM25 genom att ange den här konstruktionen på följande sätt:

 "similarity": {
     "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
 }

Exempel: CORS-alternativ

JavaScript på klientsidan kan inte anropa några API:er som standard eftersom webbläsaren förhindrar alla begäranden mellan ursprung. Om du vill tillåta frågor mellan ursprung till ditt index aktiverar du CORS (Resursdelning mellan ursprung (Wikipedia)) genom att ange corsOptions attributet. Av säkerhetsskäl stöder endast fråge-API:er CORS.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "corsOptions": (optional) {  
       "allowedOrigins": ["*"] | ["https://docs.microsoft.com:80", "https://azure.microsoft.com:80", ...],  
       "maxAgeInSeconds": (optional) max_age_in_seconds (non-negative integer)  
     }
}

Exempel: Krypteringsnycklar med autentiseringsuppgifter för åtkomst

Krypteringsnycklar är kundhanterade nycklar som används för extra kryptering. Mer information finns i Kryptering med kundhanterade nycklar i Azure Key Vault.

{
    "name": "hotels",  
    "fields": [ omitted for brevity ],
    "suggesters": [ omitted for brevity ],
    "analyzers": [ omitted for brevity ],
    "encryptionKey": (optional) { 
       "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
       "keyVaultKeyVersion": "Version of the Azure Key Vault key",
       "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
       "accessCredentials": (optional, only if not using managed system identity) {
          "applicationId": "AAD Application ID that was granted access permissions to your specified Azure Key Vault",
          "applicationSecret": "Authentication key of the specified AAD application)"
        }
    }
} 

Exempel: Krypteringsnycklar med hanterad identitet

Du kan autentisera till Azure Key Vault med hjälp av en systemtilldelad eller användartilldelad (förhandsversion) hanterad identitet. I det här fallet utelämnar du åtkomstautentiseringsuppgifter eller anger null. I följande exempel visas en användartilldelad hanterad identitet. Om du vill använda en systemtilldelad hanterad identitet utelämnar du åtkomstautentiseringsuppgifter och identitet. Så länge systemidentiteten för söktjänsten har behörigheter i Azure Key Vault bör anslutningsbegäran lyckas.

{
  "name": "hotels",  
  "fields": [ omitted for brevity ],
  "suggesters": [ omitted for brevity ],
  "analyzers": [ omitted for brevity ],
  "encryptionKey": (optional) { 
      "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
      "keyVaultKeyVersion": "Version of the Azure Key Vault key",
      "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
      "accessCredentials": null,
          "identity" : { 
              "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
              "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
          }
    }
} 

Exempel: Bedömningsprofiler

En bedömningsprofil är ett avsnitt i schemat som definierar anpassade bedömningsbeteenden som gör att du kan påverka vilka dokument som visas högre i sökresultaten. Bedömningsprofiler består av fältvikter och funktioner. Om du vill använda dem anger du en profil efter namn på frågesträngen. Mer information finns i Lägga till bedömningsprofiler i ett sökindex (REST API för Azure AI Search) för mer information.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "scoringProfiles": [  
   {  
     "name": "name of scoring profile",  
     "text": (optional, only applies to searchable fields) {  
       "weights": {  
         "searchable_field_name": relative_weight_value (positive #'s),  
         ...  
       }  
     },  
     "functions": (optional) [  
       {  
         "type": "magnitude | freshness | distance | tag",  
         "boost": # (positive number used as multiplier for raw score != 1),  
         "fieldName": "...",  
         "interpolation": "constant | linear (default) | quadratic | logarithmic",  
         "magnitude": {  
           "boostingRangeStart": #,  
           "boostingRangeEnd": #,  
           "constantBoostBeyondRange": true | false (default)  
         },  
         "freshness": {  
           "boostingDuration": "..." (value representing timespan leading to now over which boosting occurs)  
         },  
         "distance": {  
           "referencePointParameter": "...", (parameter to be passed in queries to use as reference location)  
           "boostingDistance": # (the distance in kilometers from the reference location where the boosting range ends)  
         },  
         "tag": {  
           "tagsParameter": "..." (parameter to be passed in queries to specify a list of tags to compare against target fields)  
         }  
       }  
     ],  
     "functionAggregation": (optional, applies only when functions are specified)   
       "sum (default) | average | minimum | maximum | firstMatching"  
       }  
 ]
}

Exempel: Semantiska konfigurationer

En semantisk konfiguration är en del av en indexdefinition som används för att konfigurera vilka fält som används av semantisk sökning efter rangordning, undertexter, höjdpunkter och svar. Om du vill använda semantisk sökning måste du ange namnet på en semantisk konfiguration vid frågetillfället. Mer information finns i Skapa en semantisk fråga.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "semantic": {
     "configurations": [
       {
         "name": "my-semantic-config",
         "prioritizedFields": {
           "titleField": {
                 "fieldName": "hotelName"
               },
           "prioritizedContentFields": [
             {
               "fieldName": "description"
             },
             {
               "fieldName": "description_fr"
             }
           ],
           "prioritizedKeywordsFields": [
             {
               "fieldName": "tags"
             },
             {
               "fieldName": "category"
             }
           ]
         }
       }
     ]
   }
}

Definitioner

Länk Description
corsOptions Visar en lista över de domäner eller ursprung som har beviljats till ditt index.
defaultScoringProfile Namnet på en anpassad bedömningsprofil som skriver över standardbedömningsbeteendena.
encryptionKey Konfigurerar en anslutning till Azure Key Vault för kundhanterad kryptering.
Fält Anger definitioner och attribut för ett fält i ett sökindex.
normalizers Konfigurerar en anpassad normaliserare. Normaliserar lexikografisk sortering av strängar, vilket ger skiftlägesokänslig sortering, fasettering och filtrering av utdata.
Semantiska Konfigurerar fält som används av semantisk sökning efter rangordning, undertexter, markeringar och svar.
scoringProfiles Används för relevansjustering för fulltextfrågor.
Likhet
förslagstagare Konfigurerar intern prefixlagring för matchning av partiella frågor som komplettera automatiskt och förslag.
vectorSearch Konfigurerar algoritmen som används för vektorfält.

corsOptions

JavaScript på klientsidan kan inte anropa några API:er som standard eftersom webbläsaren förhindrar alla begäranden om korsande ursprung. Om du vill tillåta korsande frågor till ditt index aktiverar du CORS (Resursdelning för korsande ursprung) genom att ange attributet "corsOptions". Av säkerhetsskäl stöder endast fråge-API:er CORS.

Attribut Beskrivning
allowedOrigins Krävs. En kommaavgränsad lista över ursprung som beviljas åtkomst till ditt index, där varje ursprung vanligtvis är av formatet protocol://< kvalificerat domännamn>:<port> (även om <porten> ofta utelämnas). Det innebär att javascript-kod som hanteras från dessa ursprung tillåts köra frågor mot ditt index (förutsatt att den innehåller en giltig API-nyckel). Om du vill tillåta åtkomst till alla ursprung anger du * som ett enskilt objekt i matrisen "allowedOrigins". Detta rekommenderas inte för produktion, men kan vara användbart för utveckling eller felsökning.
maxAgeInSeconds Valfritt. Webbläsare använder det här värdet för att fastställa varaktigheten (i sekunder) för att cachelagras förinställda CORS-svar. Detta måste vara ett icke-negativt heltal. Prestanda förbättras om det här värdet är större, men dessa vinster kompenseras av den tid som krävs för att CORS-principändringar ska börja gälla. Om den inte anges används en standardvaraktighet på 5 minuter.

defaultScoringProfile

Valfritt. En sträng som är namnet på en anpassad bedömningsprofil som definierats i indexet. En standardprofil anropas när en anpassad profil inte uttryckligen anges i frågesträngen. Mer information finns i Lägga till bedömningsprofiler i ett sökindex.

encryptionKey

Konfigurerar en anslutning till Azure Key Vault för kompletterande kundhanterade krypteringsnycklar (CMK). Tillgänglig för fakturerbara söktjänster som skapats den 1 januari 2019 eller senare.

En anslutning till nyckelvalvet måste autentiseras. Du kan använda antingen "accessCredentials" eller en hanterad identitet för detta ändamål.

Hanterade identiteter kan vara system- eller användartilldelade (förhandsversion). Om söktjänsten har både en systemtilldelad hanterad identitet och en rolltilldelning som ger läsåtkomst till nyckelvalvet kan du utelämna både "identitet" och "accessCredentials", så autentiserar begäran med hjälp av den hanterade identiteten. Om söktjänsten har användartilldelad identitet och rolltilldelning anger du egenskapen "identitet" till resurs-ID för den identiteten.

Attribut Beskrivning
keyVaultKeyName Krävs. Namnet på den Azure Key Vault-nyckel som används för kryptering.
keyVaultKeyVersion Krävs. Version av Azure Key Vault-nyckeln.
keyVaultUri Krävs. URI för Azure Key Vault (kallas även DNS-namn) som tillhandahåller nyckeln. Ett exempel på en URI kan vara https://my-keyvault-name.vault.azure.net
accessCredentials Valfritt. Utelämna den här egenskapen om du använder en hanterad identitet. Annars innehåller egenskaperna för "accessCredentials" :
"applicationId" (ett Azure Active Directory-program-ID som har åtkomstbehörighet till din angivna Azure-Key Vault).
"applicationSecret" (autentiseringsnyckeln för det angivna Azure AD programmet).
identity Valfritt om du inte använder en användartilldelad hanterad identitet för söktjänstanslutningen till Azure Key Vault. Formatet är "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

fields

Innehåller information om attribut i en fältdefinition.

Attribut Beskrivning
name Krävs. Anger namnet på fältet, som måste vara unikt i fältsamlingen för indexet eller det överordnade fältet.
typ Krävs. Anger datatypen för fältet. Fält kan vara enkla eller komplexa. Enkla fält är av primitiva typer, t.ex Edm.String . för text eller Edm.Int32 för heltal. Komplexa fält kan ha underfält som själva är enkla eller komplexa. På så sätt kan du modellera objekt och matriser med objekt, vilket i sin tur gör att du kan ladda upp de flesta JSON-objektstrukturer till ditt index. Collection(Edm.Single) rymmer flyttalsvärden med enkel precision. Den används bara för vektorfält och krävs. En fullständig lista över typer som stöds finns i Datatyper som stöds .
key Krävs. Ange det här attributet till true för att ange att ett fälts värden unikt identifierar dokument i indexet. Den maximala längden på värden i ett nyckelfält är 1 024 tecken. Exakt ett toppnivåfält i varje index måste väljas som nyckelfält och det måste vara av typen Edm.String. Standardvärdet är false för enkla fält och null för komplexa fält.

Nyckelfält kan användas för att söka efter dokument direkt och uppdatera eller ta bort specifika dokument. Värdena för nyckelfält hanteras på ett skiftlägeskänsligt sätt när du letar upp eller indexerar dokument. Mer information finns i Uppslagsdokument och Lägg till, Uppdatera eller Ta bort dokument .
hämtningsbar Anger om fältet kan returneras i ett sökresultat. Ange det här attributet till false om du vill använda ett fält (till exempel marginal) som en filter-, sorterings- eller bedömningsmekanism, men inte vill att fältet ska vara synligt för slutanvändaren. Det här attributet måste vara true för nyckelfält och måste vara null för komplexa fält. Det här attributet kan ändras i befintliga fält. Om du anger hämtningsbar till true ökar inte indexlagringskraven. Standardvärdet är true för enkla fält och null för komplexa fält.
Sökbara Anger om fältet är sökbart i fulltext och kan refereras till i sökfrågor. Det innebär att den genomgår lexikal analys , till exempel ordbrytning under indexering. Om du anger ett sökbart fält till ett värde som "Solig dag" normaliseras det internt till de enskilda tokens "soliga" och "dag". Detta möjliggör fulltextsökningar för dessa termer. Fält av typen Edm.String eller Collection(Edm.String) är sökbara som standard. Det här attributet måste vara false för enkla fält med andra datatyper som inte är datatyper, och det måste vara null för komplexa fält.

Ett sökbart fält förbrukar extra utrymme i ditt index eftersom Azure AI Search bearbetar innehållet i dessa fält och organiserar dem i hjälpdatastrukturer för högpresterande sökning. Om du vill spara utrymme i indexet och du inte behöver ett fält som ska inkluderas i sökningar anger du sökbart till false. Mer information finns i Så här fungerar fulltextsökning i Azure AI Search .
filtreringsbar Anger om fältet ska refereras till i $filter frågor. Filtreringsbar skiljer sig från sökbar i hur strängar hanteras. Fält av typen Edm.String eller Collection(Edm.String) som är filterbara genomgår inte lexikal analys, så jämförelser är endast för exakta matchningar. Om du till exempel anger ett sådant fält f till "Solig dag" $filter=f eq 'sunny' hittar du inga matchningar, men $filter=f eq 'Sunny day' kommer att göra det. Det här attributet måste vara null för komplexa fält. Standardvärdet är true för enkla fält och null för komplexa fält. Om du vill minska indexstorleken anger du det här attributet till false på fält som du inte kommer att filtrera på.
Sorterbar Anger om fältet ska refereras till i $orderby uttryck. Som standard sorterar Azure AI Search resultat efter poäng, men i många fall vill användarna sortera efter fält i dokumenten. Ett enkelt fält kan bara sorteras om det är envärdesvärde (det har ett enda värde i omfånget för det överordnade dokumentet).

Enkla samlingsfält kan inte sorteras eftersom de är flervärdesfält. Enkla delfält i komplexa samlingar är också flervärdesbaserade och kan därför inte sorteras. Detta gäller oavsett om det är ett omedelbart överordnat fält, eller ett överordnat fält, som är den komplexa samlingen. Komplexa fält kan inte vara sorterbara och det sorterbara attributet måste vara null för sådana fält. Standardvärdet för sorterbar är true för enkla enkelfält med en enda värde, false för enkla flervärdesfält och null för komplexa fält.
fasettbar Anger om fältet ska refereras till i fasetterade frågor. Används vanligtvis i en presentation av sökresultat som innehåller antal träffar per kategori (till exempel söka efter digitalkameror och se träffar efter varumärke, megapixlar, pris och så vidare). Det här attributet måste vara null för komplexa fält. Fält av typen Edm.GeographyPoint eller Collection(Edm.GeographyPoint) kan inte vara fasettbara. Standardvärdet är true för alla andra enkla fält. Om du vill minska indexstorleken anger du det här attributet till false för fält som du inte kommer att fasettera på.
Analyzer Anger den lexikala analysatorn för tokenisering av strängar under indexerings- och frågeåtgärder. Giltiga värden för den här egenskapen är bland annat språkanalysverktyg, inbyggda analysverktyg och anpassade analysverktyg. Standardvärdet är standard.lucene. Det här attributet kan bara användas med sökbara fält och kan inte ställas in tillsammans med antingen searchAnalyzer eller indexAnalyzer. När analysatorn har valts och fältet har skapats i indexet kan det inte ändras för fältet. Måste vara null för komplexa fält.
searchAnalyzer Ange den här egenskapen tillsammans med indexAnalyzer för att ange olika lexikala analysverktyg för indexering och frågor. Om du använder den här egenskapen anger du analyzer till och kontrollerar att null indexAnalyzer är inställt på ett tillåtet värde. Giltiga värden för den här egenskapen är inbyggda analysverktyg och anpassade analysverktyg. Det här attributet kan endast användas med sökbara fält. Sökanalyseraren kan uppdateras i ett befintligt fält eftersom det endast används vid frågetillfället. Måste vara null för komplexa fält.
indexAnalyzer Ange den här egenskapen tillsammans med searchAnalyzer för att ange olika lexikala analysverktyg för indexering och frågor. Om du använder den här egenskapen anger du analyzer till och kontrollerar att null searchAnalyzer har angetts till ett tillåtet värde. Giltiga värden för den här egenskapen är inbyggda analysverktyg och anpassade analysverktyg. Det här attributet kan endast användas med sökbara fält. När indexanalyseraren har valts kan den inte ändras för fältet. Måste vara null för komplexa fält.
Normalizer Anger normaliseraren för filtrerings-, sorterings- och fasetteringsåtgärder. Det kan vara namnet på en fördefinierad normaliserare eller en anpassad normaliserare som definierats i indexet. Standardvärdet är null, vilket resulterar i en exakt matchning av ordagrant, oanalyserad text. Det här attributet kan endast användas med Edm.String fälten och Collection(Edm.String) som har minst ett av filtrerbart, sorterbart eller fasettbart inställt på true. En normaliserare kan bara anges i fältet när den läggs till i indexet och kan inte ändras senare. Måste vara null för komplexa fält. Giltiga värden för en fördefinierad normaliserare är:

standard– Gemener i texten följt av asciifolding.
lowercase– Omvandlar tecken till gemener.
uppercase – Omvandlar tecken till versaler.
asciifolding – Transformerar tecken som inte finns i Basic Latin Unicode-blocket till deras ASCII-motsvarighet, om det finns en sådan. Du kan till exempel ändra "à" till "a".
elision– Tar bort elision från början av token.
synonymMappar En lista över namnen på synonymmappningar som ska associeras med det här fältet. Det här attributet kan endast användas med sökbara fält. För närvarande stöds endast en synonymkarta per fält. Genom att tilldela en synonymmappning till ett fält ser du till att frågetermerna för det fältet utökas vid frågetiden med hjälp av reglerna i synonymmappningen. Det här attributet kan ändras i befintliga fält. Måste vara null eller en tom samling för komplexa fält.
fields En lista över underfält om det här är ett fält av typen Edm.ComplexType eller Collection(Edm.ComplexType). Måste vara null eller tomt för enkla fält. Mer information om hur och när du ska använda underfält finns i Modellera komplexa datatyper i Azure AI Search .
Dimensioner Heltal. Krävs för vektorfält. **Detta måste matcha inbäddningsstorleken för dina inbäddningsmodeller. För en populär Azure OpenAI-modell text-embedding-ada-002är till exempel dess utdatadimensioner 1536, så det här är de dimensioner som ska anges för det vektorfältet. Dimensionsattributet har minst 2 och högst 2 048 flyttalsvärden vardera.
vectorSearchConfiguration Krävs för definitioner av vektorfält. Anger namnet på algoritmkonfigurationen "vectorSearch" som används av vektorfältet. När fältet har skapats kan du inte ändra namnet på vectorSearchConfiguration, men du kan ändra egenskaperna för algoritmkonfigurationen i indexet. På så sätt kan du justera algoritmtypen och parametrarna.

Anteckning

Fält av typen Edm.String som är filterbara, sorterbara eller fasettbara kan vara högst 32 kilobyte långa. Det beror på att värden för sådana fält behandlas som en enda sökterm och den maximala längden på en term i Azure AI Search är 32 kilobyte. Om du behöver lagra mer text än detta i ett enda strängfält måste du uttryckligen ange filterbar, sorterbar och fasettbar i false indexdefinitionen.

Att ange ett fält som sökbart, filterbart, sorterbart eller fasettbart påverkar indexstorleken och frågeprestandan. Ange inte attributen för fält som inte är avsedda att refereras till i frågeuttryck.

Om ett fält inte är inställt på att vara sökbart, filterbart, sorterbart eller fasettbart kan fältet inte refereras till i något frågeuttryck. Detta är användbart för fält som inte används i frågor, men som behövs i sökresultaten.

normaliserare

Definierar en anpassad normaliserare som har en användardefinierad kombination av teckenfilter och tokenfilter. När du har definierat en anpassad normaliserare i indexet kan du ange den efter namn i en fältdefinition.

Attribut Beskrivning
name Krävs. Strängfält som anger antingen en användardefinierad anpassad normaliserare.
charFilters Används i en anpassad normaliserare. Det kan vara ett eller flera tillgängliga teckenfilter som stöds för användning i en anpassad normaliserare:
mappning
pattern_replace
tokenFilters Används i en anpassad normaliserare. Det kan vara en eller flera av de tillgängliga tokenlutningarna som stöds för användning i en anpassad normaliserare:
arabic_normalization
asciifolding
cjk_width
elision
german_normalization
hindi_normalization indic_normalization

persian_normalization
scandinavian_normalization
scandinavian_folding
sorani_normalization
gemener
med versaler

scoringProfiles

Bedömningsprofiler gäller för fulltextsökning. En profil definieras i ett index och anger anpassad logik som kan ge högre sökpoäng till matchande dokument som uppfyller kriterierna som definierats i profilen. Du kan skapa flera bedömningsprofiler och sedan tilldela den du vill ha till en fråga.

Om du skapar en anpassad profil kan du göra den till standard genom att ange defaultScoringProfile. Mer information finns i Lägga till bedömningsprofiler i ett sökindex.

Semantiska

En semantisk konfiguration är en del av en indexdefinition som används för att konfigurera vilka fält som används av semantisk sökning efter rangordning, undertexter, höjdpunkter och svar. Semantiska konfigurationer består av ett rubrikfält, prioriterade innehållsfält och prioriterade nyckelordsfält. Minst ett fält måste anges för var och en av de tre underegenskaperna (titleField, prioritizedKeywordsFields och prioritizedContentFields). Alla fält av typen Edm.String eller Collection(Edm.String) kan användas som en del av en semantisk konfiguration.

Om du vill använda semantisk sökning måste du ange namnet på en semantisk konfiguration vid frågetillfället. Mer information finns i Skapa en semantisk fråga.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "semantic": {
     "configurations": [
       {
         "name": "name of the semantic configuration",
         "prioritizedFields": {
           "titleField": {
                 "fieldName": "..."
               },
           "prioritizedContentFields": [
             {
               "fieldName": "..."
             },
             {
               "fieldName": "..."
             }
           ],
           "prioritizedKeywordsFields": [
             {
               "fieldName": "..."
             },
             {
               "fieldName": "..."
             }
           ]
         }
       }
     ]
   }
}
Attribut Beskrivning
name Krävs. Namnet på den semantiska konfigurationen.
prioritizedFields Krävs. Beskriver de rubrik-, innehålls- och nyckelordsfält som ska användas för semantisk rangordning, undertexter, höjdpunkter och svar. Minst en av de tre underegenskaperna (titleField, prioritizedKeywordsFields och prioritizedContentFields) måste anges.
prioritizedFields.titleField Definierar det rubrikfält som ska användas för semantisk rangordning, undertexter, höjdpunkter och svar. Om du inte har något rubrikfält i indexet lämnar du det tomt.
prioritizedFields.prioritizedContentFields Definierar de innehållsfält som ska användas för semantisk rangordning, undertexter, höjdpunkter och svar. För bästa resultat bör de markerade fälten innehålla text i naturligt språk. Ordningen på fälten i matrisen representerar deras prioritet. Fält med lägre prioritet kan trunkeras om innehållet är långt.
prioritizedFields.prioritizedKeywordsFields Definierar de nyckelordsfält som ska användas för semantisk rangordning, undertexter, höjdpunkter och svar. För bästa resultat bör de markerade fälten innehålla en lista med nyckelord. Ordningen på fälten i matrisen representerar deras prioritet. Fält med lägre prioritet kan trunkeras om innehållet är långt.

Likhet

Valfri egenskap som gäller för tjänster som skapats före den 15 juli 2020. För dessa tjänster kan du ange att den här egenskapen ska använda BM25-rankningsalgoritmen som introducerades i juli 2020. Giltiga värden är "#Microsoft.Azure.Search.ClassicSimilarity" (den tidigare standardinställningen) eller "#Microsoft.Azure.Search.BM25Similarity".

För alla tjänster som skapats efter juli 2020 har inställningen av den här egenskapen ingen effekt. Alla nyare tjänster använder BM25 som den enda rangordningsalgoritmen för fulltextsökning. Mer information finns i Rankningsalgoritmer i Azure AI Search.

förslagsgivare

Anger en konstruktion som lagrar prefix för matchning på partiella frågor som komplettera automatiskt och förslag.

Attribut Beskrivning
name Krävs. Namnet på förslagsverktyget.
sourceFields Krävs. Ett eller flera strängfält som du aktiverar automatisk komplettering för eller föreslagna resultat för.
searchMode Obligatoriskt och alltid inställt på analyzingInfixMatching. Den anger att matchning sker på valfri term i frågesträngen.

vectorSearch

VectorSearch-objektet tillåter konfiguration av egenskaper för vektorsökning. Endast algoritmkonfigurationer kan konfigureras för närvarande. Detta möjliggör konfiguration av algoritmtyp och algoritmparametrar som används för vektorfält. Du kan ha flera konfigurationer. Konfigurationer som refereras av ett vektorfält kan inte ändras eller tas bort. Alla konfigurationer som inte refereras till kan ändras eller tas bort. En definition av vektorfält (i fältsamlingen) måste ange vilken vektorsökningsalgoritmkonfiguration (via vectorSearchConfiguration egenskapen) som fältet använder.

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
Attribut Beskrivning
name Krävs. Namnet på algoritmkonfigurationen.
Typ Den algoritmtyp som ska användas. Endast "hnsw" stöds, vilket är HNSW-algoritmen (Hierarchical Navigable Small World).
hnswParameters Valfritt. Parametrar för algoritmen "hnsw". Om det här objektet utelämnas används standardvärden.

hnswParameters

Det här objektet innehåller anpassningarna till hnsw algoritmparametrar. Alla egenskaper är valfria och standardvärden används om några utelämnas.

Attribut Beskrivning
mått Sträng. Likhetsmåttet som ska användas för vektorjämförelser. För hnswär de tillåtna värdena "cosinus", "euclidean" och "dotProduct". Standardvärdet är "cosiné".
m Heltal. Antalet dubbelriktade länkar som skapats för varje nytt element under konstruktionen. Standardvärdet är 4. Det tillåtna intervallet är 4 till 10. Större värden leder till tätare grafer, vilket förbättrar frågeprestanda, men kräver mer minne och beräkning.
efConstruction Heltal. Storleken på den dynamiska listan för närmaste grannar som används under indexeringen. Standardvärdet är 400. Det tillåtna intervallet är mellan 100 och 1 000.Större värden leder till bättre indexkvalitet, men kräver mer minne och beräkningar.
efSearch Heltal. Storleken på den dynamiska listan som innehåller närmaste grannar, som används under söktiden. Standardvärdet är 500. Det tillåtna intervallet är mellan 100 och 1 000. Om du ökar den här parametern kan sökresultaten förbättras, men frågeprestandan blir långsammare.

Eftersom efSearch är en frågeparameter kan det här värdet uppdateras även om ett befintligt fält använder en algoritmkonfiguration.

Se även