Generar inserciones

Selecciona una versión de la documentación:

En esta página se explica cómo usar AlloyDB como herramienta de modelo de lenguaje extenso (LLM) y cómo generar inserciones de vectores basadas en un LLM.

Para obtener más información sobre cómo usar modelos de aprendizaje automático con AlloyDB Omni, consulta el artículo Crea aplicaciones de IA generativa.

AlloyDB te permite usar un LLM alojado en Vertex AI para traducir una cadena de texto en una inserción, que es la representación del modelo del significado semántico del texto dado como un vector numérico. Para obtener más información sobre la compatibilidad de Vertex AI con las inserciones de texto, consulta Inserciones de texto.

Antes de empezar

Para permitir que AlloyDB genere las inserciones, asegúrese de que cumple los siguientes requisitos:

Restricciones regionales

Puedes generar embeddings en las regiones en las que esté disponible la IA generativa en Vertex AI. Para ver una lista de las regiones, consulta Ubicaciones de la IA generativa en Vertex AI .

En el caso de AlloyDB, asegúrate de que tanto el clúster de AlloyDB como el modelo de Vertex AI que estás consultando se encuentren en la misma región.

Extensión de base de datos obligatoria

  • Asegúrate de que la extensión google_ml_integration esté instalada en tu base de datos AlloyDB.

    CREATE EXTENSION google_ml_integration;
    

    Esta extensión se incluye con AlloyDB. Puedes instalarlo en cualquier base de datos de tu clúster.

  • Define la marca de base de datos google_ml_integration.enable_model_support en off.

Configurar el acceso a modelos

Antes de generar embeddings a partir de una base de datos de AlloyDB, debes configurar AlloyDB para que funcione con un modelo de embeddings de texto.

Para trabajar con el modelo textembeddings-gecko basado en la nube, debes instalar AlloyDB Omni con AlloyDB AI.

Conceder acceso a los usuarios de la base de datos para generar inserciones

Concede permiso a los usuarios de la base de datos para ejecutar la embedding función para hacer predicciones:

  1. Conecta un cliente psql a la instancia principal del clúster, tal como se describe en Ejecutar y conectarse a AlloyDB Omni.

  2. En el símbolo del sistema de psql, conéctate a la base de datos y concede permisos:

    \c DB_NAME
    
    GRANT EXECUTE ON FUNCTION embedding TO USER_NAME;
    

    Haz los cambios siguientes:

    • DB_NAME: el nombre de la base de datos en la que se deben conceder los permisos

    • USER_NAME: el nombre del usuario al que se deben conceder los permisos.

Generar una inserción

AlloyDB proporciona una función que te permite traducir texto en una incrustación de vector. Después, puedes almacenar esa inserción en tu base de datos como datos de vector y, opcionalmente, usar funciones pgvector para basar las consultas en ella.

Para generar una inserción con AlloyDB, usa la función embedding() proporcionada por la extensión google_ml_integration:

SELECT embedding( 'MODEL_IDVERSION_TAG', 'TEXT');

Haz los cambios siguientes:

  • MODEL_ID: ID del modelo que se va a consultar.

    Si usas Vertex AI Model Garden, especifica textembedding-gecko@003 como ID de modelo. Estos son los modelos basados en la nube que AlloyDB puede usar para las incrustaciones de texto. Para obtener más información, consulta Inserciones de texto.

  • Opcional: VERSION_TAG es la etiqueta de versión del modelo que se va a consultar. Añade el prefijo @ a la etiqueta.

    Si usas uno de los modelos en inglés de textembedding-gecko con Vertex AI, especifica una de las etiquetas de versión (por ejemplo, textembedding-gecko@003) que se indican en Versiones del modelo.

    Google recomienda encarecidamente que siempre especifique la etiqueta de versión. Si no especificas la etiqueta de versión, AlloyDB siempre usará la versión más reciente del modelo, lo que podría dar lugar a resultados inesperados.

  • TEXT: el texto que se va a traducir a una incrustación de vector.

En el siguiente ejemplo se usa la versión 003 de los modelos en inglés textembedding-gecko para generar una inserción basada en una cadena literal proporcionada:

SELECT embedding('textembedding-gecko@003', 'AlloyDB is a managed, cloud-hosted SQL database service.');

Almacenar incrustaciones

Las inserciones generadas con la extensión google_ml_integration se implementan como arrays de valores real. Estas inserciones generadas se transfieren como entradas para las funciones de la extensión pgvector.

Para almacenar este valor en una tabla, añade una columna real[]:

ALTER TABLE TABLE ADD COLUMN EMBEDDING_COLUMN real[DIMENSIONS];

Después de crear una columna para almacenar las inserciones, puede rellenarla en función de los valores que ya estén almacenados en otra columna de la misma tabla:

UPDATE TABLE SET EMBEDDING_COLUMN = embedding('MODEL_IDVERSION_TAG', SOURCE_TEXT_COLUMN);

Haz los cambios siguientes:

  • TABLE: el nombre de la tabla

  • EMBEDDING_COLUMN: el nombre de la columna de inserciones

  • MODEL_ID: ID del modelo que se va a consultar.

    Si usas Vertex AI Model Garden, especifica textembedding-gecko@003 como ID de modelo. Estos son los modelos basados en la nube que AlloyDB puede usar para las incrustaciones de texto. Para obtener más información, consulta Inserciones de texto.

  • Opcional: VERSION_TAG es la etiqueta de versión del modelo que se va a consultar. Añade el prefijo @ a la etiqueta.

    Si usas uno de los modelos en inglés de textembedding-gecko con Vertex AI, especifica una de las etiquetas de versión (por ejemplo, textembedding-gecko@003) que se indican en Versiones del modelo.

    Google recomienda encarecidamente que siempre especifique la etiqueta de versión. Si no especificas la etiqueta de versión, AlloyDB siempre usará la versión más reciente del modelo, lo que podría dar lugar a resultados inesperados.

  • SOURCE_TEXT_COLUMN: el nombre de la columna que almacena el texto que se va a traducir en inserciones

También puedes usar la función embedding() para traducir el texto a un vector. Aplica el vector al operador de pgvectorvecino más cercano<-> para encontrar las filas de la base de datos con las inserciones semánticamente más similares.

Como embedding() devuelve una matriz real, debes convertir explícitamente la llamada embedding() a vector para usar estos valores con operadores pgvector.

  CREATE EXTENSION google_ml_integration;
  CREATE EXTENSION IF NOT EXISTS vector;

  SELECT * FROM TABLE
    ORDER BY EMBEDDING_COLUMN::vector
    <-> embedding('MODEL_IDVERSION_TAG', 'TEXT')
    LIMIT ROW_COUNT

Usar etiquetas de versión del modelo para evitar errores

Google recomienda encarecidamente que siempre utilices una versión estable del modelo de inserciones que elijas. En la mayoría de los modelos, esto significa definir explícitamente una etiqueta de versión.

Llamar a la función embedding() sin especificar la etiqueta de versión del modelo es sintácticamente válido, pero también es propenso a errores.

Si omites la etiqueta de versión al usar un modelo en Vertex AI Model Garden, Vertex AI usará la versión más reciente del modelo. Puede que no sea la última versión estable. Para obtener más información sobre las versiones de modelos de Vertex AI disponibles, consulta Versiones de modelos.

Una versión de modelo de Vertex AI siempre devuelve la misma respuesta embedding() a una entrada de texto determinada. Si no especificas versiones de modelo en tus llamadas a embedding(), una nueva versión de modelo publicada puede cambiar de forma abrupta el vector devuelto para una entrada determinada, lo que puede provocar errores u otro comportamiento inesperado en tus aplicaciones.

Para evitar estos problemas, especifica siempre la versión del modelo.

Solucionar problemas

ERROR: No se ha encontrado el modelo con el ID model_id

Mensaje de error

Cuando intentas generar una inserción mediante la función embedding() o google_ml.embedding(), se produce el siguiente error:

ERROR: 'Model not found for model_id:

  • Actualiza la extensión google_ml_integration y vuelve a generar las inserciones.

    ALTER EXTENSION google_ml_integration UPDATE;
    

    También puedes eliminar la extensión y volver a crearla.

    DROP extension google_ml_integration;
    CREATE EXTENSION google_ml_integration;
    
  • Si generas las inserciones mediante la función google_ml.embedding(), asegúrate de que el modelo esté registrado y de que estés usando el model_id correcto en la consulta.

Siguientes pasos