La extensión google_ml_integration en AlloyDB para PostgreSQL te permite generar
embeddings de texto directamente en SQL con funciones en los esquemas public y
google_ml. Puedes llamar a la función embedding() en el esquema public
con cualquier modelo de embeddings de Gemini Enterprise Agent Platform
sin registrar un extremo. Para pasar parámetros personalizados, como tipos de tareas,
o usar modelos de terceros,
registra el extremo del modelo y
llama a la función google_ml.embedding() en el esquema google_ml.
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
itemscontiene una columna:complaints. En esta columnaTEXT, se almacenan los reclamos del comprador que se registran sobre cada artículo.La base de datos se integra en Model Garden, lo que le otorga acceso a los modelos de
gemini-embedding-001en inglés.
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, si deseas 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 devolver 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 cuyos
reclamos tengan similitud semántica con una instrucción de texto determinada, como It was the
wrong color.
Para la generación de embeddings básica, 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
psqlo AlloyDB Studio como el usuariopostgres.Verifica que la extensión
google_ml_integrationesté instalada.Para verificar la versión de tu extensión, ejecuta 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 en Agent Platform.
Otorga permisos a los usuarios de la base de datos para generar embeddings.
Si usas
psql, conéctate a la base de datos a la que deseas otorgar permisos:\c DB_NAME GRANT EXECUTE ON FUNCTION embedding TO "USER_NAME";Reemplaza lo siguiente:
DB_NAME: Es el nombre de la base de datos a la que deseas otorgar permisos.USER_NAME: Es el nombre del usuario al que deseas otorgar permisos.
Si usas AlloyDB Studio, selecciona el nombre de la base de datos a la que deseas otorgar permisos en la lista Base de datos. Otorga el permiso
EXECUTEen la funcióngoogle_ml.embeddingal usuario:GRANT EXECUTE ON FUNCTION google_ml.embedding TO "USER_NAME";Reemplaza
USER_NAMEpor el nombre del usuario al que deseas otorgar 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 Gemini Enterprise Agent Platform están en proyectos diferentes, sigue estos pasos:
Ejecuta la siguiente sentencia
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' );Para generar embeddings en un extremo del modelo
gemini-embedding-001registrado, 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 text-embedding-ada-002 registrado 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?
Obtén más información sobre la referencia de administración de extremos de modelos.