Crear o actualizar índice (API REST de versión preliminar)

Se aplica a: 2023-07-01-Preview, 2021-04-30-Preview, 2020-06-30-Preview

Importante

2023-07-01-Preview agrega búsqueda vectorial.

  • Objeto "vectorSearch", una configuración de los valores de búsqueda vectorial. Solo se aplica a los algoritmos de búsqueda vectorial.
  • Tipo de datos "Collection(Edm.Single)", necesario para un campo vectorial. Representa un número de punto flotante de precisión sencilla como el tipo primitivo.
  • Propiedad "dimensions", necesaria para un campo vectorial. Representa la dimensionalidad de las incrustaciones vectoriales.
  • Propiedad "vectorSearchConfiguration", necesaria para un campo vectorial. Selecciona la configuración del algoritmo para este campo.

2021-04-30-Preview agrega:

  • "semanticConfiguration" se usa para determinar el ámbito de la clasificación semántica en campos específicos.
  • "identity", en "encryptionKey", se usa para recuperar una clave de cifrado administrada por el cliente de Azure Key Vault mediante una identidad administrada asignada por el usuario.

2020-06-30-Preview agrega:

  • "normalizadores", que se usan para la insensibilidad entre mayúsculas y minúsculas en las ordenaciones y filtros.

Un índice especifica el esquema de índice, incluida la colección de campos (nombres de campo, tipos de datos y atributos), pero también otras construcciones (proveedores de sugerencias, perfiles de puntuación y configuración de CORS) que definen otros comportamientos de búsqueda.

Puede usar POST o PUT en una solicitud de creación. Para cualquiera de ellos, el cuerpo de la solicitud proporciona la definición del objeto.

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

Para las solicitudes de actualización, use PUT y especifique el nombre del índice en el URI.

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

HTTPS es necesario para todas las solicitudes de servicio. Si el índice no existe, se crea. Si ya existe, se actualiza a la nueva definición.

La creación de un índice establece el esquema y los metadatos. Rellenar el índice es una operación independiente. Para este paso, puede usar un indexador (consulte Operaciones de indexador, disponible para orígenes de datos compatibles) o Agregar, actualizar o eliminar documentos. El número máximo de índices que se pueden crear varía según el nivel de precios. Dentro de cada índice, hay límites en elementos individuales. Para más información, consulte Límites de servicio para Azure AI Search.

La actualización de un índice existente debe incluir la definición de esquema completa, incluidas las definiciones originales que desee conservar. En general, el mejor patrón para las actualizaciones es recuperar la definición de índice con get, modificarla y, a continuación, actualizarla con PUT.

Dado que un índice existente contiene contenido, muchas modificaciones de índice requieren una eliminación y recompilación de índices. Los siguientes cambios de esquema son una excepción a esta regla:

  • Agregar nuevos campos

  • Adición o cambio de perfiles de puntuación

  • Adición o cambio de configuraciones semánticas

  • Cambio de las opciones de CORS

  • Cambiar los campos existentes con cualquiera de las tres modificaciones siguientes:

    • Mostrar u ocultar campos (retrievable: true | false)
    • Cambiar el analizador usado en el momento de la consulta (searchAnalyzer)
    • Agregar o editar el synonymMap usado en el momento de la consulta (synonymMaps)

Para realizar cualquiera de los cambios de esquema anteriores en un índice existente, especifique el nombre del índice en el URI de solicitud y, a continuación, incluya una definición de índice completamente especificada con los elementos nuevos o modificados.

Cuando se agrega un nuevo campo, todos los documentos existentes del índice tienen automáticamente un valor NULL para ese campo. No se consume espacio de almacenamiento adicional hasta que se produce una de estas dos cosas: se proporciona un valor para el nuevo campo (mediante combinación) o se agregan nuevos documentos.

Novedades tener suggester restricciones similares: se pueden agregar nuevos campos a un suggester al mismo tiempo, pero los campos existentes no se pueden quitar ni agregar a sin volver a suggesters generar un índice.

no se permiten Novedades a un analizador, un tokenizador, un filtro de token o un filtro de caracteres. Se pueden crear nuevas con los cambios que desee, pero debe desconectar el índice al agregar las nuevas definiciones del analizador. Si se establece la allowIndexDowntime marca en true en la solicitud de actualización de índice, el índice se desconecta:

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

Esta operación deja el índice sin conexión durante al menos unos segundos, lo que significa que la indexación y las solicitudes de consulta generan un error hasta que el índice vuelve a estar en línea y listo para controlar las solicitudes.

Parámetros de identificador URI

Parámetro Descripción
nombre del servicio Necesario. Establezca este valor en el nombre único definido por el usuario del servicio de búsqueda.
nombre de índice Obligatorio en el URI si usa PUT. El nombre debe estar en minúsculas, comenzar con una letra o un número, no tener barras diagonales ni puntos y tener menos de 128 caracteres. Los guiones no pueden ser consecutivos.
api-version Necesario. La versión preliminar actual es 2023-07-23-preview. Consulte Versiones de API para obtener más versiones.
allowIndexDowntime Opcional. El valor predeterminado es false. Se establece en true para determinadas actualizaciones, como agregar o modificar un analizador, tokenizador, filtro de token, filtro char o propiedad de similitud. El índice se desconecta durante la actualización, normalmente no más de varios segundos.

Encabezados de solicitud

En la siguiente tabla se describen los encabezados de solicitud obligatorios y opcionales.

Campos Descripción
Content-Type Necesario. Establezca este valor en . application/json
api-key Opcional si usa roles de Azure y se proporciona un token de portador en la solicitud; de lo contrario, se requiere una clave. Una clave de API es una cadena única generada por el sistema que autentica la solicitud en el servicio de búsqueda. Las solicitudes de creación deben incluir un api-key encabezado establecido en la clave de administración (en lugar de una clave de consulta). Consulte Conexión a Azure AI Search mediante la autenticación de claves para más información.

Cuerpo de la solicitud

El cuerpo de la solicitud contiene una definición de esquema, que incluye la lista de campos de datos de los documentos que se introducen en este índice.

El siguiente JSON es una representación de alto nivel de un esquema que admite la búsqueda vectorial. Un esquema requiere un campo de clave y ese campo de clave puede ser buscable, filtrable, ordenable y facetable.

Un campo de búsqueda vectorial es de tipo Collection(Edm.Single). Dado que los campos vectoriales no son textuales, un campo vectorial no se puede usar como clave y no acepta analizadores, normalizadores, proveedores de sugerencias ni sinónimos. Debe tener una propiedad "dimensions" y una propiedad "vectorSearchConfiguration".

Un esquema que admita la búsqueda vectorial también puede admitir la búsqueda de palabras clave. Otros campos no vectores del índice pueden usar los analizadores, sinónimos y perfiles de puntuación que incluya en el índice.

{  
  "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) { }  
}  

La solicitud contiene las siguientes propiedades:

Propiedad Descripción
name Necesario. El nombre del índice. Un nombre de índice solo debe contener letras minúsculas, dígitos o guiones, no puede empezar ni terminar con guiones y está limitado a 128 caracteres.
description Descripción opcional.
fields Colección de campos para este índice, donde cada campo tiene un nombre, un tipo de datos admitido que se ajusta al Modelo de datos de entidad (EDM) y atributos que definen acciones permitidas en ese campo. La colección fields debe tener un campo de tipo Edm.String con "key" establecido en "true". Este campo representa el identificador único, a veces denominado id. de documento, para cada documento almacenado con el índice. La colección fields ahora acepta campos vectoriales.
similarity Opcional. Para los servicios creados antes del 15 de julio de 2020, establezca esta propiedad para participar en el algoritmo de clasificación BM25.
proveedores de sugerencias Especifica una construcción que almacena prefijos para buscar coincidencias en consultas parciales, como autocompletar y sugerencias.
scoringProfiles Opcional. Se usa para el ajuste de relevancia para las consultas de texto completo.
semantic Opcional. Define los parámetros de un índice de búsqueda que influyen en las funcionalidades de búsqueda semántica. Se requiere una configuración semántica para las consultas semánticas. Para más información, consulte Creación de consultas semánticas.
vectorSearch Opcional. Configura varias opciones de búsqueda de vectores. Solo se pueden configurar algoritmos de búsqueda vectorial.
normalizadores Opcional. Normaliza la ordenación lexicográfica de las cadenas, lo que genera una ordenación sin distinción entre mayúsculas y minúsculas y la salida de filtrado.
analizadores, charFilters, tokenizers, tokenFilters Opcional. Especifique estas secciones del índice si va a definir analizadores personalizados. De forma predeterminada, estas secciones son null.
defaultScoringProfile Nombre de un perfil de puntuación personalizado que sobrescribe los comportamientos de puntuación predeterminados.
corsOptions Opcional. Se usa para las consultas entre orígenes en el índice.
encryptionKey Opcional. Se usa para el cifrado adicional del índice, mediante claves de cifrado administradas por el cliente (CMK) en Azure Key Vault. Disponible para los servicios de búsqueda facturables creados en o después del 2019-01-01.

Response

Para obtener una solicitud de creación correcta, debería ver el código de estado "201 Created". De forma predeterminada, el cuerpo de la respuesta contiene el JSON para la definición de índice que se creó. Sin embargo, si el encabezado de solicitud Prefer se establece en return=minimal, el cuerpo de la respuesta está vacío y el código de estado correcto es "204 Sin contenido" en lugar de "201 Creado". Esto es cierto independientemente de si utiliza PUT o POST para crear el índice.

Para obtener una solicitud de actualización correcta, debería ver "204 Sin contenido". De forma predeterminada, el cuerpo de la respuesta está vacío. Sin embargo, si el encabezado de Prefer solicitud se establece return=representationen , el cuerpo de la respuesta contiene el JSON para la definición de índice que se actualizó. En este caso, el código de estado correcto es "200 OK".

Ejemplos

Ejemplo: Vector

La búsqueda vectorial se implementa en el nivel de campo. Esta definición coloca el foco en los campos vectoriales. Los campos vectoriales deben ser de tipo Collection(Edm.Single) que se usan para almacenar valores de punto flotante de precisión sencilla. Los campos vectoriales tienen una propiedad "dimensiones" que contiene el número de dimensiones de salida admitidas por el modelo de aprendizaje automático que se usa para generar incrustaciones. Por ejemplo, si usa text-embeding-ada-002, el número máximo de dimensiones de salida es 1536 por este documento. El valor de "algorithmConfiguration" se establece en el nombre de la configuración "vectorSearch" en el índice. Puede definir varios en el índice y, a continuación, especificar uno por campo.

Muchos atributos solo se aplican a campos novectores. Los atributos como "filterable", "sortable", "facetable", "analyzer", "normalizer" y "synonymMaps" se omiten para los campos vectoriales. Del mismo modo, si establece propiedades de solo vector como "dimensiones" o "vectorSearchConfiguration" en el campo que contiene contenido alfanumérico, esos atributos se omiten.

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

Ejemplo: Colecciones de campos con campos vectoriales y no vectoriales

La búsqueda vectorial se implementa en el nivel de campo. Para admitir escenarios de consulta híbrida, cree pares de campos para consultas vectoriales y no vectores. Los campos "title", "titleVector", "content", "contentVector" siguen esta convención. Si también desea usar la búsqueda semántica, debe tener campos de texto novector para esos comportamientos.

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

Ejemplo: un esquema de índice con campos simples y complejos

En el primer ejemplo se muestra un esquema de índice completo con campos simples y complejos. Al menos un campo de cadena debe tener "key" establecido en true.

{
  "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": [ ]
}  

Ejemplo: Proveedores de sugerencias

Una definición del proveedor de sugerencias debe especificar campos de cadena "buscables" y "recuperables" (en las API REST, todos los campos simples son "retrievable": true de forma predeterminada). Una vez definido un proveedor de sugerencias, puede hacer referencia a él por su nombre en las solicitudes de consulta que usan la API de sugerencias o la API de autocompletar, en función de si desea devolver una coincidencia o el resto de un término de consulta.

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

Ejemplo: analizadores y normalizadores

Se hace referencia a analizadores y normalizadores en las definiciones de campo y pueden ser predefinidos o personalizados. Si usa analizadores o normalizadores personalizados, especifíquelos en el índice en las secciones "analizadores" y "normalizadores".

En el ejemplo siguiente se muestran analizadores y normalizadores personalizados para "Etiquetas". También muestra un normalizador predefinido (estándar) y un analizador (en.microsoft) para "HotelName" y "Description", respectivamente.

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

Ejemplo: Similitud para la relevancia de la búsqueda

Esta propiedad establece el algoritmo de clasificación utilizado para crear una puntuación de relevancia en los resultados de búsqueda de una consulta de búsqueda de texto completo. En los servicios creados después del 15 de julio de 2020, esta propiedad se omite porque el algoritmo de similitud siempre es BM25. Para los servicios existentes creados antes del 15 de julio de 2020, puede participar en BM25 estableciendo esta construcción de la siguiente manera:

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

Ejemplo: Opciones de CORS

JavaScript del lado cliente no puede llamar a ninguna API de forma predeterminada, ya que el explorador impide todas las solicitudes entre orígenes. Para permitir consultas entre orígenes en el índice, habilite CORS (uso compartido de recursos entre orígenes (Wikipedia)) estableciendo el corsOptions atributo . Por motivos de seguridad, solamente las API de consulta admiten 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)  
     }
}

Ejemplo: Claves de cifrado con credenciales de acceso

Las claves de cifrado son claves administradas por el cliente que se usan para el cifrado adicional. Para más información, consulte Cifrado mediante claves administradas por el cliente en 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)"
        }
    }
} 

Ejemplo: Claves de cifrado con identidad administrada

Puede autenticarse en Azure Key Vault mediante una identidad administrada asignada por el sistema o asignada por el usuario (versión preliminar). En este caso, omita las credenciales de acceso o establezca en NULL. En el ejemplo siguiente se muestra una identidad administrada asignada por el usuario. Para usar una identidad administrada asignada por el sistema, omita las credenciales de acceso y la identidad. Siempre que la identidad del sistema del servicio de búsqueda tenga permisos en Azure Key Vault, la solicitud de conexión debe realizarse correctamente.

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

Ejemplo: Perfiles de puntuación

Un perfil de puntuación es una sección del esquema que define comportamientos de puntuación personalizados que permiten influir en qué documentos aparecen más arriba en los resultados de la búsqueda. Los perfiles de puntuación se componen de ponderaciones de campos y de funciones. Para poder utilizarlos, especifique un perfil por nombre en la cadena de consulta. Para más información, consulte Incorporación de perfiles de puntuación a un índice de búsqueda (API REST de Azure AI Search) para más información.

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

Ejemplo: Configuraciones semánticas

Una configuración semántica forma parte de una definición de índice que se usa para configurar los campos que utiliza la búsqueda semántica para la clasificación, los subtítulos, los resaltados y las respuestas. Para usar la búsqueda semántica, debe especificar el nombre de una configuración semántica en el momento de la consulta. Para más información, consulte Creación de consultas semánticas.

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

Definiciones

Vínculo Descripción
corsOptions Enumera los dominios o orígenes que se conceden al índice.
defaultScoringProfile Nombre de un perfil de puntuación personalizado que sobrescribe los comportamientos de puntuación predeterminados.
encryptionKey Configura una conexión a Azure Key Vault para el cifrado administrado por el cliente.
fields Establece definiciones y atributos de un campo en un índice de búsqueda.
normalizadores Configura un normalizador personalizado. Normaliza la ordenación lexicográfica de las cadenas, lo que genera una ordenación sin distinción entre mayúsculas y minúsculas, facetas y salida de filtrado.
semantic Configura los campos usados por la búsqueda semántica para la clasificación, los subtítulos, los resaltados y las respuestas.
scoringProfiles Se usa para la optimización de relevancia para las consultas de texto completo.
Similitud
proveedores de sugerencias Configura el almacenamiento de prefijo interno para buscar coincidencias en consultas parciales, como autocompletar y sugerencias.
vectorSearch Configura el algoritmo utilizado para los campos vectoriales.

corsOptions

JavaScript del lado cliente no puede llamar a ninguna API de forma predeterminada, ya que el explorador impide todas las solicitudes entre orígenes. Para permitir consultas entre orígenes en el índice, habilite CORS (uso compartido de recursos entre orígenes) estableciendo el atributo "corsOptions". Por motivos de seguridad, solamente las API de consulta admiten CORS.

Atributo Descripción
allowedOrigins Necesario. Una lista delimitada por comas de orígenes a los que se concede acceso al índice, donde cada origen suele tener el formato protocol:// qualified-domain-name>:<port> (aunque a menudo se omite el <puerto>).< Esto significa que cualquier código JavaScript servido desde esos orígenes puede consultar el índice (suponiendo que proporciona una clave de API válida). Si desea permitir el acceso a todos los orígenes, especifique * como un único elemento en la matriz "allowedOrigins". Esto no se recomienda para producción, pero puede ser útil para el desarrollo o la depuración.
maxAgeInSeconds Opcional. los exploradores usan este valor para determinar la duración (en segundos) para almacenar en la memoria caché las respuestas preparatorias de CORS. Esto debe ser un entero no negativo. El rendimiento mejora si este valor es mayor, pero esas ganancias se desplazan por la cantidad de tiempo necesario para que los cambios de directiva de CORS surtan efecto. Si no se establece, se usa una duración predeterminada de 5 minutos.

defaultScoringProfile

Opcional. Cadena que es el nombre de un perfil de puntuación personalizado definido en el índice. Se invoca un perfil predeterminado siempre que no se especifica explícitamente un perfil personalizado en la cadena de consulta. Para obtener más información, consulte Adición de perfiles de puntuación a un índice de búsqueda.

claveDeCifrado

Configura una conexión a Azure Key Vault para claves de cifrado administradas por el cliente (CMK) complementarias. Disponible para los servicios de búsqueda facturables creados el 1 de enero de 2019 o después.

Se debe autenticar una conexión al almacén de claves. Puede usar "accessCredentials" o una identidad administrada para este fin.

Las identidades administradas pueden ser asignadas por el sistema o por el usuario (versión preliminar). Si el servicio de búsqueda tiene una identidad administrada asignada por el sistema y una asignación de roles que concede acceso de lectura al almacén de claves, puede omitir "identity" y "accessCredentials", y la solicitud se autenticará mediante la identidad administrada. Si el servicio de búsqueda tiene la identidad asignada por el usuario y la asignación de roles, establezca la propiedad "identity" en el identificador de recurso de esa identidad.

Atributo Descripción
keyVaultKeyName Necesario. Nombre de la clave de Azure Key Vault que se usa para el cifrado.
keyVaultKeyVersion Necesario. Versión de la clave de Azure Key Vault.
keyVaultUri Necesario. URI de Azure Key Vault (también denominado nombre DNS) que proporciona la clave. Un URI de ejemplo podría ser https://my-keyvault-name.vault.azure.net
accessCredentials Opcional. Omita esta propiedad si usa una identidad administrada. De lo contrario, las propiedades de "accessCredentials" incluyen:
"applicationId" (un identificador de aplicación de Azure Active Directory que tiene permisos de acceso a la Key Vault de Azure especificada).
"applicationSecret" (la clave de autenticación de la aplicación de Azure AD especificada).
identidad Opcional a menos que use una identidad administrada asignada por el usuario para la conexión del servicio de búsqueda a Azure Key Vault. El formato es "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

fields

Contiene información sobre los atributos de una definición de campo.

Atributo Descripción
name Necesario. Establece el nombre del campo, que debe ser único dentro de la colección de campos del índice o campo primario.
type Necesario. Establece el tipo de datos para el campo. Los campos pueden ser simples o complejos. Los campos simples son de tipos primitivos, como Edm.String para texto o Edm.Int32 para enteros. Los campos complejos pueden tener subcampos que son simples o complejos. Esto le permite modelar objetos y matrices de objetos, lo que a su vez le permite cargar la mayoría de las estructuras de objetos JSON en el índice. Collection(Edm.Single) admite valores de punto flotante de precisión sencilla. Solo se usa para los campos vectoriales y es necesario. Consulte Tipos de datos admitidos para obtener la lista completa de tipos admitidos.
key Necesario. Establezca este atributo en true para designar que los valores de un campo identifiquen de forma única los documentos del índice. La longitud máxima de los valores de un campo de clave es de 1024 caracteres. Se debe elegir exactamente un campo de nivel superior en cada índice como campo clave y debe ser de tipo Edm.String. El valor predeterminado es false para campos simples y null para campos complejos.

Los campos clave se pueden usar para buscar documentos directamente y actualizar o eliminar documentos específicos. Los valores de los campos clave se controlan de una manera que distingue mayúsculas de minúsculas al buscar o indexar documentos. Consulte Buscar documentos y agregar, actualizar o eliminar documentos para obtener más información.
retrievable Indica si el campo se puede devolver en un resultado de búsqueda. Establezca este atributo false en si desea usar un campo (por ejemplo, margen) como filtro, ordenación o mecanismo de puntuación, pero no quiere que el campo sea visible para el usuario final. Este atributo debe ser true para campos clave y debe ser null para campos complejos. Este atributo se puede cambiar en los campos existentes. Establecer recuperable true en no provoca ningún aumento en los requisitos de almacenamiento de índices. El valor predeterminado es true para campos simples y null para campos complejos.
searchable Indica si el campo es buscable de texto completo y se puede hacer referencia a este en las consultas de búsqueda. Esto significa que se somete a un análisis léxico , como la separación de palabras durante la indexación. Si establece un campo que se puede buscar en un valor como "Sunny day", internamente se normaliza en los tokens individuales "soleado" y "día". Esto permite realizar búsquedas de texto completo de estos términos. Los campos de tipo Edm.String o Collection(Edm.String) se pueden buscar de forma predeterminada. Este atributo debe ser false para campos simples de otros tipos de datos que no son de cadena y debe ser null para campos complejos.

Un campo que permite búsquedas consume espacio adicional en el índice, ya que Azure AI Search procesa el contenido de esos campos y los organiza en estructuras de datos auxiliares para realizar búsquedas. Si desea ahorrar espacio en el índice y no necesita incluir un campo en las búsquedas, establezca searchable falseen . Consulte Funcionamiento de la búsqueda de texto completo en Azure AI Search para más información.
filterable Indica si se va a habilitar el campo al que se hace referencia en $filter las consultas. El filtrado difiere de lo que se puede buscar en la forma en que se controlan las cadenas. Los campos de tipo Edm.String o Collection(Edm.String) que son filtrables no se someten a análisis léxico, por lo que las comparaciones son solo para coincidencias exactas. Por ejemplo, si establece un campo de este tipo f en "Sunny day", $filter=f eq 'sunny' no encuentra ninguna coincidencia, pero $filter=f eq 'Sunny day' sí. Este atributo debe ser null para campos complejos. El valor predeterminado es true para campos simples y null para campos complejos. Para reducir el tamaño del índice, establezca este atributo false en en los campos en los que no se va a filtrar.
sortable Indica si se va a habilitar el campo al que se hace referencia en $orderby expresiones. De forma predeterminada, Azure AI Search ordena los resultados por puntuación, pero en muchas experiencias los usuarios quieren ordenar por campos de los documentos. Un campo simple solo se puede ordenar si se trata de un solo valor (tiene un único valor en el ámbito del documento primario).

Los campos de colección simples no se pueden ordenar, ya que son multivalor. Los subcampos simples de colecciones complejas también tienen varios valores y, por tanto, no se pueden ordenar. Esto es cierto si es un campo primario inmediato o un campo antecesor, que es la colección compleja. Los campos complejos no se pueden ordenar y el atributo ordenable debe ser null para dichos campos. El valor predeterminado para ordenar es true para campos simples con un solo valor, false para campos simples con varios valores y null para campos complejos.
facetable Indica si se va a habilitar el campo al que se hace referencia en las consultas de faceta. Normalmente se usa en una presentación de resultados de búsqueda que incluye el recuento de llamadas por categoría (por ejemplo, buscar cámaras digitales y ver visitas por marca, por megapíxeles, por precio, etc.). Este atributo debe ser null para campos complejos. Los campos de tipo Edm.GeographyPoint o Collection(Edm.GeographyPoint) no pueden ser facetables. El valor predeterminado es true para todos los demás campos simples. Para reducir el tamaño del índice, establezca este atributo false en en los campos en los que no se va a enfrentar.
Analizador Establece el analizador léxico para tokenizar cadenas durante las operaciones de indexación y consulta. Los valores válidos para esta propiedad incluyen analizadores de lenguaje, analizadores integrados y analizadores personalizados. El valor predeterminado es standard.lucene. Este atributo solo se puede usar con campos que se pueden buscar y no se puede establecer junto con searchAnalyzer o indexAnalyzer. Una vez elegido el analizador y el campo se crea en el índice, no se puede cambiar para el campo. Debe ser null para campos complejos.
searchAnalyzer Establezca esta propiedad junto con indexAnalyzer para especificar distintos analizadores léxicos para la indexación y las consultas. Si usa esta propiedad, establezca analyzer null en y asegúrese de que indexAnalyzer está establecido en un valor permitido. Los valores válidos para esta propiedad incluyen analizadores integrados y analizadores personalizados. Este atributo solo se puede usar con campos que se pueden buscar. El analizador de búsqueda se puede actualizar en un campo existente, ya que solo se usa en tiempo de consulta. Debe ser null para campos complejos.
indexAnalyzer Establezca esta propiedad junto con searchAnalyzer para especificar distintos analizadores léxicos para la indexación y las consultas. Si usa esta propiedad, establezca analyzer en null y asegúrese de que searchAnalyzer está establecido en un valor permitido. Los valores válidos para esta propiedad incluyen analizadores integrados y analizadores personalizados. Este atributo solo se puede usar con campos que se pueden buscar. Una vez elegido el analizador de índices, no se puede cambiar para el campo. Debe ser null para campos complejos.
Normalizador Establece el normalizador para las operaciones de filtrado, ordenación y facetas. Puede ser el nombre de un normalizador predefinido o un normalizador personalizado definido en el índice. El valor predeterminado es null, lo que da como resultado una coincidencia exacta en texto textual y sin analizar. Este atributo solo se puede usar con Edm.String campos y Collection(Edm.String) que tengan al menos uno de los valores filtrables, ordenables o facetable establecidos en true. Un normalizador solo se puede establecer en el campo cuando se agrega al índice y no se puede cambiar más adelante. Debe ser null para campos complejos. Los valores válidos para un normalizador predefinido incluyen: en

standardminúsculas el texto seguido de asciifolding.
lowercase- Transforma los caracteres en minúsculas.
uppercase - Transforma los caracteres en mayúsculas.
asciifolding - Transforma los caracteres que no están en el bloque Unicode latino básico en su equivalente ASCII, si existe uno. Por ejemplo, cambiando "à" a "a".
elision- Quita la elisión del principio de los tokens.
synonymMaps Lista de los nombres de los mapas de sinónimos que se van a asociar a este campo. Este atributo solo se puede usar con campos que se pueden buscar. Actualmente solo se admite un mapa de sinónimos por campo. La asignación de un mapa de sinónimos a un campo garantiza que los términos de consulta destinados a ese campo se expanden en tiempo de consulta mediante las reglas del mapa de sinónimos. Este atributo se puede cambiar en los campos existentes. Debe ser null o una colección vacía para campos complejos.
fields Lista de subcampos si se trata de un campo de tipo Edm.ComplexType o Collection(Edm.ComplexType). Debe ser null o estar vacío para campos simples. Consulte Modelado de tipos de datos complejos en Azure AI Search para obtener más información sobre cómo y cuándo usar subcampos.
dimensions Entero. Obligatorio para los campos vectoriales. **Debe coincidir con el tamaño de inserción de salida del modelo de inserción. Por ejemplo, para un modelo text-embedding-ada-002de Azure OpenAI popular, sus dimensiones de salida son 1536, por lo que sería las dimensiones que se van a establecer para ese campo vectorial. El atributo dimensiones tiene un mínimo de 2 y un máximo de 2048 valores de punto flotante cada uno.
vectorSearchConfiguration Obligatorio para las definiciones de campo vectorial. Especifica el nombre de la configuración del algoritmo "vectorSearch" utilizada por el campo vectorial. Una vez creado el campo, no puede cambiar el nombre de vectorSearchConfiguration, pero puede cambiar las propiedades de la configuración del algoritmo en el índice. Esto permite realizar ajustes en el tipo de algoritmo y los parámetros.

Nota

Los campos de tipo Edm.String que son filtrables, ordenables o configurables pueden tener como máximo 32 kilobytes de longitud. Esto se debe a que los valores de estos campos se tratan como un único término de búsqueda y la longitud máxima de un término en Azure AI Search es de 32 kilobytes. Si necesita almacenar más texto que este en un único campo de cadena, tendrá que establecer explícitamente un elemento filtrable, ordenable y facetable false en en la definición del índice.

Establecer un campo como buscable, filtrable, ordenable o facetable tiene un impacto en el tamaño del índice y el rendimiento de las consultas. No establezca esos atributos en campos a los que no se hace referencia en expresiones de consulta.

Si no se establece que un campo sea buscable, filtrable, ordenable o facetable, el campo no se puede hacer referencia a él en ninguna expresión de consulta. Esto es útil para los campos que no se usan en las consultas, pero que son necesarios en los resultados de la búsqueda.

normalizadores

Define un normalizador personalizado que tiene una combinación definida por el usuario de filtros de caracteres y filtros de token. Después de definir un normalizador personalizado en el índice, puede especificarlo por nombre en una definición de campo.

Atributo Descripción
name Necesario. Campo de cadena que especifica un normalizador personalizado definido por el usuario.
charFilters Se usa en un normalizador personalizado. Puede ser uno o varios de los filtros de caracteres disponibles admitidos para su uso en un normalizador personalizado:
asignación
pattern_replace
tokenFilters Se usa en un normalizador personalizado. Puede ser uno o varios de los inclinadores de token disponibles admitidos para su uso en un normalizador personalizado:
arabic_normalization
asciifolding
cjk_width
elision
german_normalization
hindi_normalization
indic_normalization
persian_normalization
scandinavian_normalization
scandinavian_folding sorani_normalization

mayúsculas minúsculas

scoringProfiles

Los perfiles de puntuación se aplican a la búsqueda de texto completo. Un perfil se define en un índice y especifica una lógica personalizada que puede otorgar puntuaciones de búsqueda superiores a documentos coincidentes que cumplan los criterios definidos en el perfil. Puede crear varios perfiles de puntuación y, a continuación, asignar el que desea a una consulta.

Si crea un perfil personalizado, puede convertirlo en el valor predeterminado estableciendo defaultScoringProfile. Para obtener más información, consulte Adición de perfiles de puntuación a un índice de búsqueda.

semantic

Una configuración semántica forma parte de una definición de índice que se usa para configurar qué campos se usan mediante la búsqueda semántica de clasificación, subtítulos, resaltados y respuestas. Las configuraciones semánticas se componen de un campo de título, campos de contenido con prioridad y campos de palabra clave con prioridad. Es necesario especificar al menos un campo para cada una de las tres subpropiedades (titleField, priorizadoKeywordsFields y priorizadoContentFields). Cualquier campo de tipo Edm.String o Collection(Edm.String) se puede usar como parte de una configuración semántica.

Para usar la búsqueda semántica, debe especificar el nombre de una configuración semántica en el momento de la consulta. Para más información, consulte Creación de consultas semánticas.

{
   "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": "..."
             }
           ]
         }
       }
     ]
   }
}
Atributo Descripción
name Necesario. Nombre de la configuración semántica.
priorizadosFields Necesario. Describe los campos de título, contenido y palabra clave que se usarán para la clasificación semántica, los subtítulos, los resaltados y las respuestas. Es necesario establecer al menos una de las tres subpropiedades (titleField, prioritizedKeywordsFields y prioritizedContentFields).
priordFields.titleField Define el campo de título que se va a usar para la clasificación semántica, los subtítulos, los resaltados y las respuestas. Si no tiene un campo de título en el índice, déjelo en blanco.
prioritizedFields.prioritizedContentFields Define los campos de contenido que se usarán para la clasificación semántica, los subtítulos, los resaltados y las respuestas. Para obtener el mejor resultado, los campos seleccionados deben contener texto en formato de lenguaje natural. El orden de los campos de la matriz representa su prioridad. Los campos con prioridad inferior se pueden truncar si el contenido es largo.
priordFields.prioritizedKeywordsFields Define los campos de palabra clave que se usarán para la clasificación semántica, los subtítulos, los resaltados y las respuestas. Para obtener el mejor resultado, los campos seleccionados deben contener una lista de palabras clave. El orden de los campos de la matriz representa su prioridad. Los campos con prioridad inferior se pueden truncar si el contenido es largo.

similarity

Propiedad opcional que se aplica a los servicios creados antes del 15 de julio de 2020. Para esos servicios, puede establecer esta propiedad para usar el algoritmo de clasificación BM25 que se introdujo en julio de 2020. Los valores válidos incluyen "#Microsoft.Azure.Search.ClassicSimilarity" (el valor predeterminado anterior) o "#Microsoft.Azure.Search.BM25Similarity".

Para todos los servicios creados después de julio de 2020, establecer esta propiedad no tiene ningún efecto. Todos los servicios más recientes usan BM25 como único algoritmo de clasificación para la búsqueda de texto completo. Para más información, consulte Algoritmos de clasificación en Azure AI Search.

proveedores de sugerencias

Especifica una construcción que almacena prefijos para buscar coincidencias en consultas parciales, como autocompletar y sugerencias.

Atributo Descripción
name Necesario. El nombre del proveedor de sugerencias.
sourceFields Necesario. Uno o varios campos de cadena para los que está habilitando la función autocompletar o los resultados sugeridos.
searchMode Obligatorio y siempre se establece en analyzingInfixMatching. Especifica que la coincidencia se produce en cualquier término de la cadena de consulta.

vectorSearch

El objeto vectorSearch permite la configuración de las propiedades de búsqueda vectorial. Actualmente solo se pueden configurar configuraciones de algoritmo. Esto permite la configuración del tipo de algoritmo y los parámetros de algoritmo usados para los campos vectoriales. Puede tener varias configuraciones. Las configuraciones a las que hace referencia un campo vectorial no se pueden modificar ni eliminar. Las configuraciones a las que no se hace referencia se pueden modificar o eliminar. Una definición de campo vectorial (en la colección fields) debe especificar qué configuración del algoritmo de búsqueda vectorial (a través de la vectorSearchConfiguration propiedad ) que usa el campo.

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
Atributo Descripción
name Necesario. Nombre de la configuración del algoritmo.
kind Tipo de algoritmo que se va a usar. Solo se admite ""hnsw"", que es el algoritmo jerárquico de un mundo pequeño (HNSW).
hnswParameters Opcional. Parámetros para el algoritmo "hnsw". Si se omite este objeto, se usan los valores predeterminados.

hnswParameters

Este objeto contiene las personalizaciones de los hnsw parámetros de algoritmo. Todas las propiedades son opcionales y se usan valores predeterminados si se omite alguno.

Atributo Descripción
métrica String. Métrica de similitud que se va a usar para las comparaciones de vectores. Para hnsw, los valores permitidos son "coseno", "euclidano" y "dotProduct". El valor predeterminado es "coseno".
m Entero. Número de vínculos bidireccionales creados para cada nuevo elemento durante la construcción. El valor predeterminado es 4. El intervalo permitido es de 4 a 10. Los valores más grandes conducen a gráficos más densos, lo que mejora el rendimiento de las consultas, pero requieren más memoria y cálculo.
efConstruction Entero. Tamaño de la lista dinámica para los vecinos más cercanos usados durante la indexación. El valor predeterminado es 400. El intervalo permitido es de 100 a 1000.Los valores más grandes dan lugar a una mejor calidad de índice, pero requieren más memoria y cálculo.
efSearch Entero. Tamaño de la lista dinámica que contiene los vecinos más cercanos, que se usa durante el tiempo de búsqueda. El valor predeterminado es 500. El intervalo permitido es de 100 a 1000. Aumentar este parámetro puede mejorar los resultados de búsqueda, pero ralentiza el rendimiento de las consultas.

Dado efSearch que es un parámetro en tiempo de consulta, este valor se puede actualizar incluso si un campo existente usa una configuración de algoritmo.

Consulte también