Búsqueda en el contenido de Azure Blob Storage

La búsqueda entre la variedad de tipos de contenido almacenados en Azure Blob Storage puede ser un problema difícil de resolver, pero Azure AI Search proporciona una integración profunda en la capa de contenido, mediante la extracción e inferencia de información textual, que luego se puede consultar en un índice de búsqueda.

En este artículo se examina el flujo de trabajo básico para extraer contenido y metadatos de blobs y enviarlo a un índice de búsqueda en Azure AI Search. En el índice resultante se pueden realizar consultas mediante la búsqueda de texto completo. Opcionalmente, puede enviar contenido de blob procesado a un almacén de conocimiento para escenarios que no son de búsqueda.

Nota:

¿Conoce el flujo de trabajo y su composición? El siguiente paso consiste en configurar un indizador de blobs.

Qué implica agregar búsqueda de texto completo a los datos de blob

Búsqueda de Azure AI es un servicio de búsqueda independiente que admite cargas de trabajo de indexación y consulta mediante índices definidos por el usuario que incorporan su contenido privado que se puede buscar hospedado en la nube. Es necesario establecer la coubicación del contenido que permite búsquedas con el motor de consultas en la nube para mantener el rendimiento y devolver los resultados a la velocidad que los usuarios esperan ahora de las consultas de búsqueda.

Azure AI Search se integra con Azure Blob Storage en el nivel de indexación, e importa el contenido de los blobs como documentos de búsqueda que se incluyen en índices invertidos y otras estructuras de consulta que admiten consultas de texto de forma libre y expresiones de filtro. Como el contenido de los blobs se indexa en un índice de búsqueda, puede usar toda la gama de características de consulta de Azure AI Search para encontrar información en el contenido de los blobs.

Las entradas son los blobs, en un solo contenedor, de Azure Blob Storage. Los blobs pueden ser casi prácticamente cualquier tipo de datos de texto. Si los blobs contienen imágenes, puede agregar enriquecimiento con IA para crear y extraer texto y características de imágenes.

El resultado es siempre un índice de Azure AI Search, que se usa para operaciones de búsqueda rápida de texto, recuperación y exploración de texto en aplicaciones cliente. Entre las entradas y la salida se encuentra la propia arquitectura de canalización de la indexación. La canalización se basa en la característica de indexador, que se explica más adelante en este artículo.

Una vez que el índice se crea y se rellena, pasa a existir con independencia del contenedor de blobs, pero se pueden volver a realizar operaciones de indexación para actualizar el índice en función de los documentos que hayan cambiado. Para detectar los cambios se usa la información de marca de tiempo de los blobs individuales. Como mecanismo de actualización, puede optar por una ejecución programada o por una indexación a petición.

Recursos utilizados en una solución de búsqueda de blobs

Necesita Azure AI Search, Azure Blob Storage y un cliente. Azure AI Search suele ser uno de los distintos componentes de una solución, donde el código de la aplicación emite solicitudes de API de consulta y controla la respuesta. También puede escribir código de aplicación para controlar la indexación, aunque para las pruebas de la prueba de concepto y las tareas improvisadas, es habitual usar Azure Portal como cliente de búsqueda.

En Blob Storage, se necesita un contenedor que proporcione el contenido de origen. Puede establecer criterios de inclusión y exclusión de archivos y especificar qué partes de un blob se indexan en Azure AI Search.

Puede empezar directamente en la página del portal de la cuenta de almacenamiento.

  1. En la página de navegación izquierda, en Administración de datos, seleccione Búsqueda de Azure AI para seleccionar o crear un servicio de búsqueda.

  2. Siga los pasos del asistente para extraer y, opcionalmente, crear contenido que permita hacer búsquedas a partir de los blobs. El flujo de trabajo es el asistente Importar datos. El flujo de trabajo crea un indexador, un origen de datos, un índice y un conjunto de aptitudes de opción en el servicio Búsqueda de Azure AI.

    Captura de pantalla del asistente de Búsqueda de Azure AI en la página del portal de Azure Storage

  3. Use el Explorador de búsqueda de la página del portal de búsqueda para consultar el contenido.

El asistente es el mejor lugar para empezar, pero detectará opciones más flexibles cuando configure un indexador de blobs. Puede usar un cliente REST. Tutorial: Indexación y búsqueda de datos semiestructurados (blobs JSON) le guía por los pasos necesarios para llamar a la API REST.

Cómo se indexan los blobs

De manera predeterminada, la mayoría de los blobs se indexan como un único documento de búsqueda en el índice, incluidos los blobs con contenido estructurado, como JSON o CSV, que se indexan como un único fragmento de texto. Sin embargo, si los documentos JSON o CSV tienen una estructura interna (delimitadores), puede asignar modos de análisis para generar documentos de búsqueda individuales para cada línea o elemento:

Un documento compuesto o insertado (por ejemplo, un archivo ZIP o un documento de Word con correo electrónico de Outlook insertado que contiene datos adjuntos, o un archivo .MSG con datos adjuntos) también se indexa como un solo documento. Por ejemplo, todas las imágenes extraídas de los datos adjuntos de un archivo MSG se devolverán en el campo normalized_images. Si tiene imágenes, considere la posibilidad de agregar el enriquecimiento con IA para obtener más utilidades de búsqueda a partir de ese contenido.

El contenido textual de un documento se extrae en un campo de cadena denominado "content". También puede extraer metadatos estándar y definidos por el usuario.

Nota:

Azure AI Search impone límites al indexador con respecto a la cantidad de texto que se puede extraer con cada plan de tarifa. Si se truncan los documentos, aparecerá una advertencia en la respuesta de estado del indexador.

Uso de un indexador de blobs para la extracción de contenido

Un indexador es un subservicio de Azure AI Search con reconocimiento del origen de datos y equipado con lógica interna para el muestreo de datos, la lectura y recuperación de datos y metadatos y la serialización de datos procedentes de formatos nativos en documentos JSON para su posterior importación.

Para indexar los blobs de Azure Storage se utiliza el indexador de blobs, Puede invocar este indexador mediante el comando Búsqueda de Azure AI de Azure Storage, el asistente Importar datos, una API de REST o el SDK de .NET. En el código, este indexador se usa estableciendo el tipo y proporcionando información de conexión —que incluye una cuenta de Azure Storage junto con un contenedor de blobs—. Puede crear un subconjunto de los blobs mediante la creación de un directorio virtual, que luego puede pasar como parámetro, o filtrando por una extensión de tipo de archivo.

Un indizador realiza el "descifrado de documentos" y abre un blob para inspeccionar el contenido. Después de conectarse al origen de datos, es el primer paso de la canalización. En el caso de los datos de blob, aquí es donde se detectan los archivos PDF, los documentos de Office y otros tipos de contenido. El descifrado de documentos con extracción de texto no tiene ningún cargo. Si los blobs incluyen contenido de imagen, las imágenes se omiten, a menos que agregue enriquecimiento con inteligencia artificial. La indexación estándar solo se aplica al contenido de texto.

El indexador de blobs de Azure incluye parámetros de configuración y admite el seguimiento de cambios si los datos subyacentes proporcionan suficiente información. Puede obtener más información sobre la funcionalidad básica en Indexación de datos de Azure Blob Storage.

Niveles de acceso admitidos

Entre los niveles de acceso de Blob Storage se incluyen el nivel de acceso frecuente, esporádico y de archivo. Los indexadores solo tienen acceso frecuente y esporádico.

Tipos de contenido admitidos

Mediante la ejecución de un indexador de blobs en un contenedor, puede extraer texto y metadatos de los siguientes tipos de contenido con una sola consulta:

Control de qué blobs se indizan

Puede controlar qué blobs se indexan y cuáles se omiten en el tipo de archivo del blob o mediante el establecimiento de propiedades en el propio blob, lo que hace que el indexador los omita.

Incluya extensiones de archivo específicas al establecer "indexedFileNameExtensions" en una lista separada por comas de extensiones de archivo (con un punto inicial). Excluya extensiones de archivo específicas al establecer "excludedFileNameExtensions" en las extensiones que se deben omitir. Si la misma extensión está en ambas listas, se excluirá de la indexación.

PUT /indexers/[indexer name]?api-version=2023-11-01
{
    "parameters" : { 
        "configuration" : { 
            "indexedFileNameExtensions" : ".pdf, .docx",
            "excludedFileNameExtensions" : ".png, .jpeg" 
        } 
    }
}

Adición de metadatos "skip" al blob

Los parámetros de configuración del indexador se aplican a todos los blobs del contenedor o la carpeta. En ocasiones, quiere controlar cómo indexar blobs concretos.

Agregue los valores y propiedades de metadatos siguientes a los blobs en Blob Storage. Cuando el indexador encuentra esta propiedad, omite el blob o su contenido en la ejecución de la indexación.

Nombre de propiedad Valor de propiedad Explicación
"AzureSearch_Skip" "true" Indica al indizador de blob que pase completamente el blob. No se trata de realizar la extracción de metadatos ni del contenido. Esto es útil cuando se produce un error repetidamente y se interrumpe el proceso de indización de un blob determinado.
"AzureSearch_SkipContent" "true" Esto es equivalente a la configuración "dataToExtract" : "allMetadata" descrita anteriormente en el ámbito de un blob determinado.

Indexación de metadatos de blob

Una práctica común que permite ordenar fácilmente blobs con cualquier tipo de contenido consiste en indexar los metadatos personalizados y las propiedades de sistema de cada uno de los blobs. De esta manera, la información de todos los blobs se indexa con independencia del tipo de documento y se almacena en un índice en el servicio de búsqueda. Con el nuevo índice, puede continuar con la ordenación, filtrado y búsqueda por facetas en todo el contenido de Blob Storage.

Nota:

Las etiquetas del índice de blobs se indexan de forma nativa mediante el servicio Blob Storage y se exponen para su consulta. Si los atributos de clave y valor de los blobs requieren funcionalidad de indexación y filtrado, se deben aprovechar las etiquetas del índice de blobs en lugar de los metadatos.

Para más información sobre el índice de blobs, consulte Administración y búsqueda de datos en Azure Blob Storage con el Índice de blobs (versión preliminar).

Búsqueda de contenido de blobs en un índice de búsqueda

La salida de un indexador es un índice de búsqueda que se usa para la exploración interactiva mediante consultas de texto libre y con filtros en una aplicación cliente. Para la exploración inicial y la comprobación del contenido, se recomienda comenzar con el Explorador de búsqueda en el portal, para examinar la estructura de los documentos. En el Explorador de búsqueda, puede usar:

Una solución más permanente supone recopilar las entradas de la consulta y presentar la respuesta como resultados de la búsqueda en una aplicación cliente. En el siguiente tutorial de C# se explica cómo compilar una aplicación de búsqueda: Incorporación de la función de búsqueda a una aplicación de ASP.NET Core (MVC).

Pasos siguientes