Generar incorporaciones de texto

La extensión google_ml_integration incluye funciones de embedding en dos espacios de nombres diferentes: public y google_ml. En esta página, se describe cómo generar embeddings de texto con funciones de estos espacios de nombres.

La función embedding() en el esquema public se puede usar con cualquier modelo de embedding de Agent Platform de Gemini Enterprise sin registrar el extremo. Si deseas pasar información personalizada, como el tipo de tarea, registra el extremo y, luego, usa la función google_ml.embedding() en el esquema google_ml. Para obtener más información sobre cómo registrar un extremo, consulta Registra un modelo.

Cómo funcionan los embeddings

Imagina una base de datos que se ejecuta en AlloyDB con las siguientes características:

  • La base de datos contiene una tabla, items. Cada fila de esta tabla describe un artículo que vende tu empresa.

  • La tabla items contiene una columna, complaints. Esta columna TEXT almacena los reclamos del comprador registrados sobre cada artículo.

  • La base de datos se integra en Model Garden, lo que le otorga acceso a los modelos en inglés gemini-embedding-001.

Aunque esta base de datos almacena reclamos sobre artículos, tales reclamos se almacenan como texto sin formato, lo que dificulta las consultas. Por ejemplo, para ver qué artículos tienen más reclamos de los clientes que recibieron un color de producto incorrecto, puedes realizar consultas en SQL comunes en la tabla, en la que se busquen varias coincidencias de palabras clave. Sin embargo, este enfoque solo coincide con las filas que contienen esas palabras clave exactas.

Por ejemplo, una consulta en SQL básica, como SELECT * FROM item WHERE complaints LIKE "%wrong color%", no muestra una fila en la que el campo complaints solo contiene The picture shows a blue one, but the one I received was red.

Las consultas en SQL que usan embeddings con tecnología de LLM pueden ayudar a mostrar respuestas semánticamente similares para esas consultas. Mediante la aplicación de embeddings, puedes consultar la tabla de este ejemplo en busca de artículos en los que los reclamos tengan similitud semántica con un mensaje de texto determinado, como It was the wrong color.

Para la generación básica de embeddings, selecciona uno de los siguientes esquemas.

Antes de comenzar

Para permitir que AlloyDB genere embeddings, haz lo siguiente:

  • Conéctate a tu base de datos con psql o AlloyDB para PostgreSQL Studio como el usuario postgres.
  • Verifica que esté instalada la extensión google_ml_integration.

    Para verificar la versión de la extensión con el siguiente comando:

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    

    Si necesitas actualizar la extensión, usa el comando ALTER EXTENSION google_ml_integration UPDATE;.

  • Antes de generar embeddings desde una base de datos de AlloyDB, debes configurar AlloyDB para que funcione con Agent Platform. Para obtener más información, consulta Integra tu base de datos con Agent Platform.

  • Otorga permisos a los usuarios de la base de datos para generar embeddings.

    Para generar embeddings, otórgale al usuario el permiso EXECUTE en la función google_ml.embedding:

    \c 'DB_NAME';
    GRANT EXECUTE ON FUNCTION google_ml.embedding TO 'USER_NAME';
    

    Reemplaza lo siguiente:

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

    • USER_NAME: el nombre del usuario al que se le otorgan los permisos

Genera embeddings

Usa la función de SQL google_ml.embedding() para llamar a los modelos de embedding de texto.

Para llamar al modelo y generar embeddings, ejecuta la siguiente consulta:

SELECT
 google_ml.embedding(
   model_id => 'MODEL_ID',
   content => 'CONTENT');

Reemplaza lo siguiente:

  • MODEL_ID: el ID del modelo calificado, por ejemplo, gemini-embedding-001.
  • CONTENT: es el texto que se traducirá en una embedding de vector.

Ejemplos para generar embeddings

En esta sección, se incluyen algunos ejemplos para generar embeddings con el extremo del modelo registrado.

Modelos de embedding de Gemini

Para generar embeddings en un extremo del modelo gemini-embedding-001 registrado, ejecuta la siguiente instrucción:

   SELECT
     google_ml.embedding(
       model_id => 'gemini-embedding-001',
       content => 'AlloyDB is a managed, cloud-hosted SQL database service');

Si tu clúster de AlloyDB y el extremo de Agent Platform de Gemini Enterprise están en proyectos diferentes, sigue estos pasos:

  1. Ejecuta la siguiente instrucción CALL.

       CALL
         google_ml.create_model(
           model_id => 'gemini-embedding-001',
           model_request_url => 'https://REGION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001:predict',
           model_provider => 'google',
           model_type => 'text_embedding',
           model_auth_type => 'alloydb_service_agent_iam',
           model_in_transform_fn => 'google_ml.vertexai_text_embedding_input_transform',
           model_out_transform_fn => 'google_ml.vertexai_text_embedding_output_transform'
         );
    
  2. Para generar embeddings en un extremo del modelo gemini-embedding-001 registrado, ejecuta la siguiente instrucción:

      SELECT
        google_ml.embedding(
          model_id => 'gemini-embedding-001',
          content => 'AlloyDB is a managed, cloud-hosted SQL database service');
    

Modelo de embedding de OpenAI

Para generar embeddings en un extremo del modelo registrado text-embedding-ada-002 de OpenAI, ejecuta la siguiente instrucción:

   SELECT
     google_ml.embedding(
       model_id => 'text-embedding-ada-002',
       content => 'e-mail spam');

Para generar embeddings en los extremos de los modelos text-embedding-3-small o text-embedding-3-large registrados en OpenAI, ejecuta la siguiente instrucción:

 SELECT
   google_ml.embedding(
     model_id => 'text-embedding-3-small',
     content => 'Vector embeddings in AI');

¿Qué sigue?