Enriquecimiento incremental y almacenamiento en caché en Azure AI Search

Importante

Esta característica se encuentra en versión preliminar pública en los Términos de uso complementarios. La API REST de versión preliminar admite esta característica.

El enriquecimiento incremental hace referencia al uso de enriquecimientos almacenados en caché durante la ejecución del conjunto de aptitudes para que solo las aptitudes nuevas y modificadas y los documentos incurran en cargos de procesamiento de pago por uso para las llamadas API a los servicios de Azure AI. La memoria caché contiene la salida del descifrado de documentos más las salidas de todas las aptitudes de todos los documentos. Aunque el almacenamiento en caché es facturable (usa Azure Storage), el costo general del enriquecimiento se reduce porque los costos de almacenamiento son menores que la extracción de imágenes y el procesamiento de IA.

Al habilitar el almacenamiento en caché, el indizador evalúa las actualizaciones para determinar si los enriquecimientos existentes se pueden extraer de la memoria caché. Es probable que el contenido de imagen y texto de la fase de descifrado de documentos, además de las salidas de aptitudes que son ascendentes u ortogonales para las ediciones, sean reutilizables.

Una vez finalizado el procesamiento del conjunto de aptitudes, los resultados actualizados se vuelven a escribir en la memoria caché y también en el índice de búsqueda o en el almacén de conocimiento.

Limitaciones

Precaución

Si usa el indexador de SharePoint Online (versión preliminar), debe evitar el enriquecimiento incremental. En determinadas circunstancias, la memoria caché no es válida, lo que requiere un restablecimiento y ejecución del indexador, si decide volver a cargarla.

Configuración de la caché

Físicamente, la caché se almacena en un contenedor de blobs en la cuenta de Azure Storage, uno por indizador. A cada indizador se le asigna un identificador de caché único e inmutable correspondiente al contenedor que usa.

La memoria caché se crea al especificar la propiedad "cache" y ejecutar el indizador. Solo se puede almacenar en caché el contenido enriquecido. Si el indizador no tiene ningún conjunto de aptitudes asociado, no se aplica el almacenamiento en caché.

En el ejemplo siguiente se muestra un indexador con el almacenamiento en caché habilitado. Para obtener instrucciones completas, consulte Habilitación del almacenamiento en caché del enriquecimiento. Tenga en cuenta que al agregar la propiedad de caché, use una versión preliminar de la API, 2020-06-30-Preview o posterior, en la solicitud.

POST https://[search service name].search.windows.net/indexers?api-version=2020-06-30-Preview
    {
        "name": "myIndexerName",
        "targetIndexName": "myIndex",
        "dataSourceName": "myDatasource",
        "skillsetName": "mySkillset",
        "cache" : {
            "storageConnectionString" : "<Your storage account connection string>",
            "enableReprocessing": true
        },
        "fieldMappings" : [],
        "outputFieldMappings": [],
        "parameters": []
    }

Administración de la memoria caché

El indexador administra el ciclo de vida de la caché. Si se elimina un indexador, también se elimina la memoria caché correspondiente. Si la propiedad cache del indizador está establecida en NULL o la cadena de conexión ha cambiado, se eliminará la caché existente en la siguiente ejecución del indizador.

Aunque el enriquecimiento incremental está diseñado para detectar y responder a los cambios sin intervención por su parte, existen parámetros que puede usar para invocar comportamientos específicos:

Priorizar nuevos documentos

La propiedad caché incluye un parámetro enableReprocessing. Se usa para controlar el procesamiento de los documentos entrantes ya representados en la caché. Cuando se define como true (valor predeterminado), los documentos que ya están en la caché se vuelven a procesar cuando se vuelve a ejecutar el indizador, siempre que la actualización de las aptitudes afecte a ese documento.

Cuando se define como false, los documentos existentes no se vuelven a procesar, con lo que se prioriza de forma eficaz el contenido nuevo y entrante sobre el existente. Solo debe definir enableReprocessing como false de forma temporal. Tener enableReprocessing definido como true la mayor parte del tiempo garantiza que todos los documentos, tanto los nuevos como los existentes, sean válidos según la definición del conjunto de aptitudes actual.

Omitir la evaluación del conjunto de aptitudes

La modificación y el reprocesamiento de una aptitud suelen ir de la mano. Pero algunos cambios en una aptitud no deben dar como resultado el reprocesamiento (por ejemplo, la implementación de una aptitud personalizada en una ubicación nueva o con una clave de acceso nueva). Lo más probable es que se trate de modificaciones periféricas, sin un impacto real en la base de la propia salida de la aptitud.

Si sabe que un cambio en la aptitud es realmente superficial, debe invalidar la evaluación de aptitudes estableciendo el parámetro disableCacheReprocessingChangeDetection en true:

  1. Llame a Update Skillset y modifique la definición del conjunto de aptitudes.
  2. Anexe el parámetro "disableCacheReprocessingChangeDetection=true" en la solicitud.
  3. Envíe el cambio.

Al establecer este parámetro se garantiza que solo se confirman las actualizaciones de la definición del conjunto de aptitudes y que el cambio no se evalúa para los efectos en la caché existente. Use una versión preliminar de la API: 2020-06-30-Preview o posterior.

PUT https://[servicename].search.windows.net/skillsets/[skillset name]?api-version=2020-06-30-Preview&disableCacheReprocessingChangeDetection
  

Omitir comprobaciones de validación de origen de datos

La mayoría de los cambios en una definición de origen de datos invalidarán la caché. Pero para los escenarios en los que sabe que un cambio no debe invalidar la caché, como cambiar una cadena de conexión o rotar la clave en la cuenta de almacenamiento, anexe el parámetro ignoreResetRequirement en la actualización del origen de datos. Establecer este parámetro en true permite que se realice la confirmación, sin desencadenar una condición de restablecimiento que daría lugar a que todos los objetos se volvieran a generar y se rellenaran desde el principio.

PUT https://[search service].search.windows.net/datasources/[data source name]?api-version=2020-06-30-Preview&ignoreResetRequirement
 

Forzar la evaluación de conjuntos de aptitudes

El propósito de la caché es evitar procesamientos innecesarios, pero imagine que realiza un cambio en una aptitud que el indizador no detecta (por ejemplo, cambiar un elemento del código externo, como una aptitud personalizada).

En este caso, puede usar Reset Skills para forzar el reprocesamiento de una aptitud determinada, incluidos los conocimientos de nivel inferior que tengan una dependencia en la salida de esa aptitud. Esta API acepta una solicitud POST con una lista de aptitudes que se deben invalidar y marcar para volver a procesarse. Después de restablecer las aptitudes, siga con una solicitud para ejecutar el indizador para invocar el procesamiento de la canalización.

Volver a almacenar en caché documentos específicos

Al restablecer un indizador, se volverán a procesar todos los documentos del corpus de búsqueda. En aquellos escenarios en los que solo haya que volver a procesar unos pocos documentos, use el Restablecimiento de documentos (versión preliminar) para forzar el reprocesamiento de determinados documentos. Cuando se restablece un documento, el indizador invalida la caché del documento que, a continuación, se vuelve a procesar mediante su lectura desde el origen de datos. Para más información, consulte el artículo en el que se explican los procedimientos para ejecutar o restablecer indexadores, aptitudes y documentos.

Para restablecer documentos específicos, la solicitud proporciona una lista de claves de documento que se leen desde el índice de búsqueda. Si la clave se asigna a un campo del origen de datos externo, el valor que proporcione debe ser el que se usa en el índice de búsqueda.

En función de cómo se llame a la API, la solicitud anexará la lista de claves, la sobrescribirá o la pondrá en cola:

  • La llamada a la API varias veces con diferentes claves anexa las nuevas claves a la lista de claves de documento restablecidas.

  • La llamada a la API con el parámetro de cadena de consulta "overwrite" definido como true sobrescribirá la lista actual de claves de documento que se van a restablecer con la carga útil de la solicitud.

  • La llamada a la API solo da como resultado que las claves de documento se agreguen a la cola de tareas que realiza el indexador. La próxima vez que se invoque al indexador, ya sea de forma programada o a petición, se dará prioridad al procesamiento de las claves de restablecimiento de documento antes que a cualquier otro cambio del origen de datos.

En el ejemplo siguiente se muestra una solicitud de restablecimiento de documento:

POST https://[search service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
    {
        "documentKeys" : [
            "key1",
            "key2",
            "key3"
        ]
    }

Cambios que invalidan la caché

Una vez que se ha habilitado la caché, el indizador evalúa los cambios en la composición de la canalización para determinar qué contenido se puede reusar y cuál se debe volver a procesar. En esta sección se enumeran los cambios que invalidan la caché directamente, seguidos de los que desencadenan el procesamiento incremental.

Un cambio invalidador es aquél en el que la caché completa deja de ser válida. Un ejemplo de cambio invalidador es en el que se actualiza el origen de datos. Esta es la lista completa de cambios en cualquier parte de la canalización del indexador que invalidaría la memoria caché:

  • Cambio del tipo del origen de datos.
  • Cambio de contenedor del origen de datos
  • Cambio de credenciales del origen de datos
  • Cambio de directiva de detección de cambios en el origen de datos
  • Cambio de directiva de detección de eliminación de orígenes de datos
  • Cambio de asignaciones de campos del indizador
  • Cambio de parámetros del indizador:
    • Modo de análisis
    • Extensiones de nombre de archivo excluidas
    • Extensiones de nombre de archivo indexadas
    • Metadatos de almacenamiento de índice solo para documentos de gran tamaño
    • Encabezados de texto delimitado
    • Delimitador de texto delimitado
    • Raíz del documento
    • Acción de imagen (cambios en la forma en que se extraen las imágenes)

Cambios que desencadenan el procesamiento incremental

El procesamiento incremental evalúa la definición del conjunto de aptitudes y determina qué aptitudes se deben volver a ejecutar, con lo que se actualizan selectivamente las partes afectadas del árbol del documento. Esta es la lista completa de cambios que dan lugar al enriquecimiento incremental:

  • Cambio de tipo de aptitud (se actualiza el tipo OData de la aptitud)
  • Se actualizan los parámetros específicos de la aptitud; p. ej. la dirección URL, los valores predeterminados u otros parámetros
  • Cambios en la salida de la aptitud: la aptitud devuelve salidas adicionales o diferentes
  • Cambios en la entrada de la aptitud que generan una ascendencia distinta: el encadenamiento de aptitudes ha cambiado
  • Cualquier invalidación de aptitudes ascendente, si se actualiza una aptitud que proporcione una entrada a esta aptitud
  • Actualizaciones en la ubicación de la proyección del almacén de información, lo que provoca que se vuelvan a proyectar los documentos
  • Cambios en las proyecciones del almacén de información, lo que provoca que se vuelvan a proyectar los documentos
  • Las asignaciones de campos de salida cambiadas en un indizador provocan que se vuelvan a proyectar los documentos en el índice

API usadas para el almacenamiento en caché

La versión de la API REST 2020-06-30-Preview o posterior proporciona enriquecimiento incremental a través de propiedades adicionales en indizadores. Los conjuntos de aptitudes y los orígenes de datos pueden usar la versión disponible con carácter general. Además de la documentación de referencia, consulte Configuración del almacenamiento en caché para el enriquecimiento incremental a fin de obtener más información sobre el orden de las operaciones.

Pasos siguientes

El enriquecimiento incremental es una característica eficaz que extiende el seguimiento de cambios en conjuntos de aptitudes y el enriquecimiento con IA. El enriquecimiento incremental permite la reutilización del contenido procesado existente mientras se realiza la iteración en el diseño del conjunto de aptitudes. Como paso siguiente, habilite el almacenamiento en caché en los indizadores.