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 Vertex AI 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 Omni 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. Esta columnaTEXTalmacena los reclamos del comprador registrados sobre cada artículo.La base de datos se integra en Model Garden de Vertex AI, 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, 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 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 una instrucción de texto determinada, 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 Omni genere embeddings, haz lo siguiente:
-
Ejecuta AlloyDB Omni y conéctate a él
como el usuario
postgres. -
Verifica que la extensión
google_ml_integrationesté instalada.CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
Si no tienes los permisos necesarios, comunícate con el administrador de la base de datos para realizar la actualización. Como alternativa, puedes esperar a que la versión nueva se implemente automáticamente en tu clúster.
-
Verifica que la marca
google_ml_integration.enable_model_supportesté configurada comoon. - Antes de generar embeddings desde una base de datos de AlloyDB Omni, debes configurar AlloyDB Omni para que funcione con Vertex AI.
-
Otorga permisos para que los usuarios de la base de datos ejecuten la función de embedding para generar embeddings:
\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 deben otorgar los permisos
- USER_NAME: el nombre del usuario al que se le deben otorgar 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 de 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 Omni y el extremo de Vertex AI están en proyectos diferentes, haz lo siguiente:
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' );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 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?
- Ejecuta búsquedas de similitud de vectores.
- Aprende a crear un asistente de compras inteligente con AlloyDB Omni, pgvector y la administración de extremos de modelos.
- Crea índices y vectores de consulta.
- Aprende un flujo de trabajo de embedding de ejemplo.