Creación o actualización del índice (API REST de versión preliminar)

se aplica a: 2023-07-01-Preview. Esta versión ya no se admite. Actualizar inmediatamente a una versión más reciente.

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.
  • "Collection(Edm.Single)" tipo de datos, 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 a 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 por el usuario.

2020-06-30-Preview agrega:

  • "normalizadores", que se usa para la insensibilidad entre mayúsculas y minúsculas en las ordenación y los 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 ellas, 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.

Crear 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 puede crear varía según el plan de tarifa. Dentro de cada índice, hay límites en elementos individuales. Para más información, consulte límites del servicio para Azure AI Search.

Actualizar 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 de índice y recompilar. Los siguientes cambios de esquema son una excepción a esta regla:

  • Agregar nuevos campos

  • Agregar o cambiar perfiles de puntuación de

  • Agregar o cambiar configuraciones semánticas de

  • 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)
    • Agregue o edite el objeto 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 totalmente 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 ningún espacio de almacenamiento adicional hasta que se produce una de estas dos cosas: se proporciona un valor para el nuevo campo (mediante la combinación) o se agregan nuevos documentos.

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

no se permiten actualizaciones de un analizador, un tokenizador, un filtro de tokens o un filtro char. Se pueden crear nuevos con los cambios que desee, pero debe desconectar el índice al agregar las nuevas definiciones del analizador. Al establecer la marca allowIndexDowntime 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 desconecta el índice durante al menos unos segundos, lo que significa que la indexación y las solicitudes de consulta producen un error hasta que el índice vuelve a estar en línea y listo para controlar las solicitudes.

Parámetros de URI

Parámetro Descripción
nombre del servicio Obligatorio. Establezca este valor en el nombre único definido por el usuario del servicio de búsqueda.
nombre de índice Obligatorio en el URI si se usa PUT. El nombre debe ser en minúsculas, empezar 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 Obligatorio. Consulte versiones de API para obtener más versiones.
allowIndexDowntime Opcional. False de forma predeterminada. Establézcalo en true para determinadas actualizaciones, como agregar o modificar un analizador, tokenizer, 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 tabla siguiente se describen los encabezados de solicitud obligatorios y opcionales.

Campos Descripción
Tipo de contenido Obligatorio. 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 encabezado api-key establecido en la clave de administrador (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 dentro 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 de búsqueda, filtrable, ordenable y facetable.

Un campo de búsqueda vectorial es de tipo Collection(Edm.Single). Dado que los campos vectoriales no son textuales, no se puede usar un campo vectorial 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
nombre Obligatorio. Nombre del índice. Un nombre de índice solo debe contener letras minúsculas, dígitos o guiones, no puede iniciar ni terminar con guiones y está limitado a 128 caracteres.
descripción Una descripción opcional.
campos 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.
de similitud Opcional. Para los servicios creados antes de 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 la optimización de relevancia para las consultas de texto completo.
semántica 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 obtener más información, vea Crear una consulta semántica.
vectorSearch Opcional. Configura varios valores de búsqueda vectorial. Solo se pueden configurar algoritmos de búsqueda vectorial.
normalizadores Opcional. Normaliza la ordenación lexicográfica de 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, a través de 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.

Respuesta

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 preferir solicitud está establecido 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 se usa 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 solicitud de Prefer está establecido en return=representation, 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 de : vectorial

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) se usan para almacenar valores de punto flotante de precisión única. 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. "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 no vectores. 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, se omiten esos atributos.

{
    "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 de : sugerencias

Un definición del proveedor de sugerencias debe especificar campos de cadena "buscables" y "recuperables" (en las API REST, todos los campos simples se "retrievable": true de forma predeterminada). Después de definir un proveedor de sugerencias, puede hacer referencia a él por su nombre en las solicitudes de consulta que usan la API de sugerencias de o API de Autocompletar, dependiendo 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 de : analizadores y normalizadores

Analizadores y normalizadores se hace referencia a ellos 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 de : similitud de la relevancia de búsqueda

Esta propiedad establece el algoritmo de clasificación usado 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 de 15 de julio de 2020, esta propiedad se omite porque el algoritmo de similitud siempre es BM25. Para los servicios existentes creados antes de 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 de : 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 atributo corsOptions. Por motivos de seguridad, solo 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 de : 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 de : claves de cifrado con de 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 de : 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 altos en los resultados de búsqueda. Los perfiles de puntuación se componen de pesos y funciones de campo. Para usarlos, especifique un perfil por nombre en la cadena de consulta. Para más información, consulte Adició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 de : configuraciones semánticas

Una configuración semántica forma parte de una definición de índice que se usa para configurar qué campos se usan en la búsqueda semántica de clasificación, títulos, resaltados y 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 obtener más información, vea Crear una consulta semántica.

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

Enlace 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.
campos 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 cadenas, lo que produce una ordenación sin distinción entre mayúsculas y minúsculas, facetas y salida de filtrado.
semántica Configura los campos usados por la búsqueda semántica para la clasificación, los títulos, los resaltados y las respuestas.
scoringProfiles Se usa para la optimización de relevancia para las consultas de texto completo.
de similitud
proveedores de sugerencias Configura el almacenamiento de prefijo interno para buscar coincidencias en consultas parciales, como autocompletar y sugerencias.
vectorSearch Configura el algoritmo usado 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, solo las API de consulta admiten CORS.

Atributo Descripción
allowedOrigins Obligatorio. Una lista delimitada por comas de orígenes a los que se concede acceso al índice, donde cada origen suele tener el formato protocol://<nombre de dominio completo>:<puerto> (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 solo 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 caché las respuestas preparatorias de CORS. 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 cada vez que no se especifica explícitamente un perfil personalizado en la cadena de consulta. Para obtener más información, vea Agregar perfiles de puntuación a un índice de búsqueda.

encryptionKey

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 propósito.

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 Obligatorio. Nombre de la clave de Azure Key Vault que se usa para el cifrado.
keyVaultKeyVersion Obligatorio. Versión de la clave de Azure Key Vault.
keyVaultUri Obligatorio. 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 su instancia de Azure Key Vault 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]".

Campos

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

Atributo Descripción
nombre Obligatorio. Establece el nombre del campo, que debe ser único dentro de la colección fields del índice o del campo primario.
tipo Obligatorio. 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. campos complejos pueden tener subcampos que sean simples o complejos. Esto le permite modelar objetos y matrices de objetos, lo que a su vez 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.
llave Obligatorio. Establezca este atributo en true para designar que los valores de un campo identifican de forma única documentos en el í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.

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 forma 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.
Recuperable Indica si el campo se puede devolver en un resultado de búsqueda. Establezca este atributo en false si desea usar un campo (por ejemplo, margen) como un mecanismo de filtro, ordenación o puntuación, pero no quiere que el campo sea visible para el usuario final. Este atributo debe ser true para los campos clave y debe ser null para campos complejos. Este atributo se puede cambiar en campos existentes. La configuración de recuperable en true 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.
Búsqueda 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 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 "sunny" y "day". Esto permite búsquedas de texto completo para 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 se puede buscar 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 en false. Consulte Funcionamiento de la búsqueda de texto completo en Azure AI Search para más información.
Filtrables Indica si se debe hacer referencia al campo en $filter consultas. Filterable 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 este campo f en "Sunny day", $filter=f eq 'sunny' no encuentra ninguna coincidencia, pero $filter=f eq 'Sunny day' lo hará. 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 en false en los campos en los que no se filtrará.
ordenable Indica si se debe hacer referencia al campo 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 simple no se pueden ordenar, ya que son multivalor. Los subcampos simples de colecciones complejas también son multivalor 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 estos campos. El valor predeterminado para ordenar es true para campos simples con valores únicos, false para campos simples con varios valores y null para campos complejos.
facetable Indica si se debe hacer referencia al campo en las consultas de facetas. Normalmente se usa en una presentación de los resultados de búsqueda que incluye el recuento de visitas 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 en false en los campos en los que no se va a facetar.
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 integradosy 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 diferentes analizadores léxicos para la indexación y las consultas. Si usa esta propiedad, establezca el analizador en null 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 diferentes 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 no analizado. Este atributo solo se puede usar con Edm.String y Collection(Edm.String) campos que tengan al menos uno de los campos 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:

standard: minúsculas el texto seguido de asciifolding.
lowercase: transforma 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 alguno. Por ejemplo, cambiando "à" a "a".
elision: quita elision 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 campos existentes. Debe ser null o una colección vacía para campos complejos.
Campos Lista de subcampos si se trata de un campo de tipo Edm.ComplexType o Collection(Edm.ComplexType). Debe estar 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.
Dimensiones 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 de Azure OpenAI popular text-embedding-ada-002, sus dimensiones de salida son 1536, por lo que sería las dimensiones que se van a establecer para ese campo vectorial. El atributo dimensions 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 del configuración del algoritmo "vectorSearch" usado por el campo vectorial. Una vez creado el campo, no se 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 se pueden filtrar, ordenar o facetable 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 para false en la definición de índice.

La configuración de 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 de búsqueda, filtrable, ordenable o facetable, no se puede hacer referencia al campo 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 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 de .

Atributo Descripción
nombre Obligatorio. Campo de cadena que especifica un normalizador personalizado definido por el usuario.
charFilters Se usa en un normalizador personalizado. Puede ser uno o varios filtros de caracteres disponibles compatibles 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 compatibles 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 en 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 la lógica personalizada que puede conceder mayores puntuaciones de búsqueda a los documentos coincidentes que cumplen los criterios definidos en el perfil. Puede crear varios perfiles de puntuación y, a continuación, asignar el que desea realizar una consulta.

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

semántica

Una configuración semántica forma parte de una definición de índice que se usa para configurar qué campos se usan en la búsqueda semántica de clasificación, tí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. Debe especificarse 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 obtener más información, vea Crear una consulta semántica.

{
   "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
nombre Obligatorio. Nombre de la configuración semántica.
priorizadosCampos Obligatorio. Describe los campos de título, contenido y palabra clave que se van a usar para la clasificación semántica, los títulos, los resaltados y las respuestas. Debe establecerse al menos una de las tres subpropiedades (titleField, priordKeywordsFields y priordContentFields).
priordFields.titleField Define el campo de título que se va a usar para la clasificación semántica, los títulos, los resaltados y las respuestas. Si no tiene un campo de título en el índice, déjelo en blanco.
prioritizedFields.priordContentFields 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.priordKeywordsFields 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.

similitud

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" (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
nombre Obligatorio. Nombre del proveedor de sugerencias.
sourceFields Obligatorio. Uno o varios campos de cadena para los que está habilitando autocompletar o 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 propiedad vectorSearchConfiguration) que usa el campo.

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
Atributo Descripción
nombre Obligatorio. Nombre de la configuración del algoritmo.
amable Tipo de algoritmo que se va a usar. Solo se admite '"hnsw"', que es el algoritmo jerárquico del mundo pequeño navegable (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 para hnsw parámetros de algoritmo. Todas las propiedades son opcionales y se usan valores predeterminados si se omite alguno.

Atributo Descripción
métrico Cuerda. Métrica de similitud que se va a usar para comparaciones vectoriales. Para hnsw, los valores permitidos son "coseno", "euclidean" 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 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 conducen a una mejor calidad del í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 la búsqueda, pero ralentiza el rendimiento de las consultas.

Dado que efSearch 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