Generación y mantenimiento de incrustaciones para cargas de trabajo de SQL Database
Después de diseñar cómo las incrustaciones representan los datos, debe generarlos y mantenerlos sincronizados a medida que cambian los datos.
SQL Server proporciona funciones de IA integradas para generar incrustaciones a partir de texto almacenado en columnas de base de datos. La generación de inserciones normalmente no es una operación única. Cuando cambian los datos de origen, es posible que sea necesario regenerar las inserciones para que sigan reflejando el estado actual de los datos.
Generación de incrustaciones con SQL
SQL Server proporciona la AI_GENERATE_EMBEDDINGS función para generar incrustaciones directamente a partir del texto almacenado en columnas de base de datos. Esta función usa un modelo externo para convertir texto en un vector que se puede almacenar y comparar posteriormente.
Un patrón común es generar incrustaciones durante una carga inicial o como parte de un proceso por lotes. Los vectores resultantes se almacenan junto con los datos de origen o en una tabla relacionada para que se puedan consultar de forma eficaz.
En el ejemplo siguiente se muestra un patrón sencillo de un extremo a otro, desde la definición de tabla hasta la generación de inserción.
En primer lugar, cree una tabla que almacene tanto el texto de origen como la inserción.
CREATE TABLE dbo.documents
(
id INT PRIMARY KEY,
description NVARCHAR(MAX),
embedding VECTOR(1536)
);
A continuación, genere incrustaciones a partir del texto y almacénelas en la tabla.
UPDATE dbo.documents
SET embedding = AI_GENERATE_EMBEDDINGS(description USE MODEL my_embedding_model);
En este ejemplo, el valor de description cada fila se envía al modelo de inserción. La función devuelve un vector, que se almacena en la embedding columna. Estos vectores almacenados se pueden consultar o comparar posteriormente sin regenerarlos. Es posible que quiera incluir lógica adicional para controlar la fragmentación o el filtrado en función del diseño de inserción.
La generación de incrustaciones determina cómo se crean los vectores. Las estrategias de mantenimiento determinan cuándo deben actualizarse esos vectores.
Descripción del mantenimiento de inserciones
El mantenimiento de inserción mantiene las incrustaciones almacenadas alineadas con los cambios en los datos subyacentes. Cuando los valores de texto se insertan, actualizan o eliminan, es posible que las inserciones correspondientes ya no reflejen el contenido actual.
Se pueden usar diferentes enfoques de mantenimiento en función de la frecuencia con la que cambian los datos, la rapidez con la que se deben actualizar las inserciones y dónde se ejecutan las ejecuciones de generación de inserción.
Elección de un método de mantenimiento de incrustación
Las incrustaciones deben mantenerse alineadas con el texto de origen a medida que cambian los datos. Se pueden usar varias opciones para detectar cambios y decidir cuándo se deben regenerar las inserciones. Estas opciones difieren en dónde se produce el trabajo y la rapidez con la que se reflejan los cambios.
Desencadenadores de tabla
Los desencadenadores se ejecutan automáticamente cuando se insertan o actualizan filas. Para el mantenimiento de inserciones, un disparador puede señalar las filas que necesitan nuevas inserciones o iniciar la regeneración de inmediato. Este enfoque refleja los cambios rápidamente, pero agrega trabajo a las operaciones de escritura.Seguimiento de cambios
Change Tracking registra que una fila ha cambiado desde un momento dado. Un proceso en segundo plano puede usar esta información para identificar qué filas necesitan sus incrustaciones actualizadas y procesarlas en lotes. Este enfoque equilibra la latencia y el rendimiento.Captura de datos de cambio (CDC)
CDC registra información detallada sobre los cambios de datos, incluidos los valores de antes y después. El mantenimiento de inserciones puede usar tablas CDC para identificar qué valores de texto han cambiado y volver a generar las inserciones de forma asincrónica. Este enfoque es adecuado para cargas de trabajo de gran volumen.Azure Functions con vinculación de desencadenador de SQL
Azure Functions puede reaccionar a los cambios de base de datos mediante vinculaciones desencadenador de SQL. Esta característica permite que la generación de incrustaciones se ejecute fuera del motor de base de datos mientras sigue respondiendo a los cambios de datos. Este enfoque descarga el trabajo de la base de datos y se puede escalar de forma independiente.Azure Logic Apps
Logic Apps puede organizar las actualizaciones de inserción como parte de un flujo de trabajo. Por ejemplo, una aplicación lógica podría comprobar periódicamente si hay filas modificadas y llamar a un servicio de inserción, coordinando las actualizaciones con otros sistemas. Este enfoque es de poco código e se integra bien con otros servicios de Azure.Cambiar streaming de eventos
La transmisión de eventos de cambio (CES) envía cambios de DML directamente a Azure Event Hubs en casi tiempo real. Los sistemas de bajada pueden consumir estos eventos y volver a generar las inserciones a medida que se producen cambios sin agregar trabajo a las transacciones de base de datos. Este enfoque desacopla la generación de inserción de la base de datos y admite que varios consumidores procesen la misma secuencia de cambios.Microsoft Foundry
Microsoft Foundry se puede usar para administrar y evaluar los modelos que generan incrustaciones. En un flujo de trabajo de mantenimiento, Foundry normalmente admite la selección de modelos o el hospedaje, mientras que otro proceso controla la detección de cambios y las actualizaciones de la base de datos. Este enfoque centraliza la gestión de modelos mientras la generación de incrustaciones ocurre en respuesta a los cambios de datos.
Elección de un enfoque de mantenimiento adecuado
No hay ninguna manera correcta de mantener las incrustaciones. El enfoque adecuado depende de factores como el volumen de datos, la frecuencia de actualización, los requisitos de latencia y dónde encaja la generación de inserción dentro de la solución general.
Algunas soluciones favorecen las actualizaciones inmediatas, mientras que otras priorizan el procesamiento por lotes o el procesamiento externo. Comprender estas ventajas y desventajas le ayuda a elegir una estrategia de mantenimiento que se adapte a la aplicación SQL.
Conclusiones clave
La generación de incrustaciones con AI_GENERATE_EMBEDDINGS es solo el primer paso. A medida que cambian los datos de origen, los vectores almacenados pueden salir de la sincronización, por lo que necesita una estrategia de mantenimiento. Las opciones van desde desencadenadores y Change Tracking para actualizaciones estrechamente acopladas a captura de datos modificados, streaming de eventos modificados y Azure Functions para enfoques asincrónicos o desacoplados. La opción adecuada depende del volumen de datos, los requisitos de latencia y donde encaja la generación de incrustaciones en su arquitectura general.