Carga de datos en un índice de búsqueda en Azure AI Search
En este artículo se explica cómo importar documentos en un índice de búsqueda predefinido. En Azure AI Search, primero se crea un índice de búsqueda, con la importación de datos como segundo paso. La excepción son los asistentes para importar en Azure portal y las canalizaciones del indexador, que crean y cargan un índice en un flujo de trabajo.
Funcionamiento de la importación de datos
Los servicios de búsqueda aceptan documentos JSON que se ajustan al esquema de índice. Un servicio de búsqueda puede importar e indexar contenido de texto sin formato y contenido vectorial en documentos JSON.
El contenido de texto sin formato se recupera de campos del origen de datos externo, de propiedades de metadatos o de contenido enriquecido generado por un conjunto de aptitudes (las aptitudes pueden extraer o deducir descripciones textuales de imágenes y contenido no estructurado).
El contenido vectorial se recupera de un origen de datos que lo proporciona o se crea mediante un conjunto de aptitudes que implementa la vectorización integrada en una carga de trabajo del indexador de Azure AI Search.
Puede preparar estos documentos usted mismo, pero si el contenido reside en un origen de datos compatible, la ejecución de un indexador o del Asistente para importar puede automatizar la recuperación de documentos, la serialización de JSON y la indexación.
Una vez indexados los datos, las estructuras de datos físicos del índice se bloquean. Para obtener instrucciones sobre lo que se puede y no se puede cambiar, consulte Actualización y recompilación de índices.
La indexación no es un proceso en segundo plano. Los servicios de búsqueda equilibrarán la indexación y las cargas de trabajo de consulta, pero si la latencia de las consultas es demasiado alta, puede agregar capacidad o identificar períodos de baja actividad de consulta para cargar un índice.
Para obtener más información, consulte Estrategias para importar datos.
Uso de Azure Portal
En Azure Portal, use los asistentes para importar para crear y cargar índices en un flujo de trabajo sin problemas. Si desea cargar un índice existente, elija un enfoque alternativo.
Inicie sesión en Azure Portal con su cuenta de Azure y encuentre el servicio de búsqueda.
En la página Información general, seleccione Importar datos o Importar y vectorizar datos en la barra de comandos para crear y rellenar un índice de búsqueda.
Puede seguir estos vínculos para revisar el flujo de trabajo: Inicio rápido: crear un índice de Búsqueda de Azure AI e Inicio rápido: vectorización integrada.
Una vez finalizado el asistente, use el explorador de búsqueda para comprobar si hay resultados.
Sugerencia
Los asistentes para importación crean y ejecutan indizadores. Si los indexadores ya están definidos, puede restablecer y ejecutar un indexador desde Azure Portal, lo que resulta útil si va a agregar campos de forma incremental. El restablecimiento obliga al indexador a volver a empezar, seleccionando todos los campos de todos los documentos de origen.
Usar las API REST
Documentos: índice es la API de REST para importar datos en un índice de búsqueda. Las API de REST son útiles para las pruebas iniciales de prueba de concepto, donde puede probar flujos de trabajo de indexación sin tener que escribir mucho código. El parámetro @search.action
determina si los documentos se agregan en su totalidad o parcialmente en términos de valores nuevos o de reemplazo a campos concretos.
Inicio rápido: búsqueda de texto mediante REST explica los pasos. El siguiente ejemplo es una versión modificada del ejemplo. Se ha recortado para que sea más breve y se ha modificado el primer valor de HotelId para evitar sobrescribir un documento existente.
Formule una llamada POST que especifique el nombre del índice, el punto de conexión "docs/index" y un cuerpo de solicitud que incluya el parámetro
@search.action
.POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/index?api-version=2024-07-01 Content-Type: application/json api-key: [admin key] { "value": [ { "@search.action": "upload", "HotelId": "1111", "HotelName": "Stay-Kay City Hotel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.", "Category": "Boutique", "Tags": [ "pool", "air conditioning", "concierge" ] }, { "@search.action": "mergeOrUpload", "HotelId": "2", "HotelName": "Old Century Hotel", "Description": "This is description is replacing the original one for this hotel. New and changed values overwrite the previous ones. In a comma-delimited list like Tags, be sure to provide the full list because there is no merging of values within the field itself.", "Category": "Boutique", "Tags": [ "pool", "free wifi", "concierge", "my first new tag", "my second new tag" ] } ] }
Establezca el parámetro
@search.action
enupload
para crear o sobrescribir un documento. Establézcalo enmerge
ouploadOrMerge
si su objetivo son las actualizaciones en campos específicos del documento. En el ejemplo anterior se muestran ambas acciones.Action Efecto merge Actualiza un documento que ya existe y produce un error en un documento si no se encuentra. La operación "merge" reemplaza los valores existentes. Por esta razón, asegúrese de comprobar que los campos de colección contengan varios valores, como los campos de tipo Collection(Edm.String)
. Por ejemplo, si el campotags
empieza con un valor de["budget"]
y ejecuta una operación "merge" con el valor["economy", "pool"]
, el valor final del campotags
será["economy", "pool"]
. No será["budget", "economy", "pool"]
.mergeOrUpload Se comporta como merge si el documento existe, y como upload si el documento es nuevo. Esta es la acción más común para las actualizaciones incrementales. upload Similar a una operación "upsert", donde se inserta el documento si es nuevo, y se actualiza o reemplaza si ya existe. Si al documento le faltan valores que requiere el índice, el valor del campo de documento se establece en NULL. Envíe la solicitud.
Busque los documentos que acaba de agregar como paso de validación:
GET https://[service name].search.windows.net/indexes/hotel-sample-index/docs/1111?api-version=2024-07-01
Cuando la clave o el identificador del documento son nuevos, NULL se convierte en el valor de todos los campos que no estén especificados en el documento. En el caso de las acciones en un documento existente, los valores actualizados reemplazan a los anteriores. Los campos que no se especificaron en "merge" o "mergeUpload" se mantienen intactos en el índice de búsqueda.
Use los SDK de Azure.
La programación se proporciona en los siguientes SDK de Azure.
El SDK de Azure para .NET proporciona las siguientes API para cargas de documentos simples y masivas en un índice:
Hay varios ejemplos que ilustran la indexación en el contexto de la indexación simple y a gran escala:
"Carga de un índice" explica los pasos básicos.
Ejemplos de Azure.Search.Documents: indexación de documentos desde el equipo del SDK de Azure agrega SearchIndexingBufferedSender.
Tutorial: la indexación de todos los datos empareja la indexación por lotes con las estrategias de prueba para determinar un tamaño óptimo.
Asegúrese de comprobar el repositorio azure-search-vector-samples para ver ejemplos de código que muestran cómo indexar campos vectoriales.