Exploración del esquema de Azure OpenAI

Completado

Al incorporar Azure OpenAI a la base de datos de PostgreSQL, puede crear aplicaciones con tecnología de inteligencia artificial altamente escalables. Esta integración le permite usar el lenguaje SQL ya conocido y la flexibilidad de PostgreSQL para crear soluciones inteligentes dentro de la capa de base de datos. Ya sea con el procesamiento del lenguaje natural, los sistemas de recomendaciones o la generación de contenido, Azure OpenAI impulsa sus aplicaciones.

El esquema azure_openai instalado por la extensión azure_ai le permite conectarse a una instancia de Azure OpenAI Service e interactuar con ella. Este esquema habilita una integración sin problemas con el servicio Azure OpenAI, lo que le permite crear aplicaciones de IA generativa de gran eficacia directamente desde la base de datos de PostgreSQL.

Creación de inserciones

Con el esquema azure_openai, puede llamar a la función create_embeddings(), que genera inserciones vectoriales desde la capa de base de datos. Estas inserciones permiten un almacenamiento, indexación y consulta eficaces de los vectores de alta dimensión. La función puede adoptar dos formas:

  • azure_openai.create_embeddings(text,text,integer,boolean,integer,integer)
  • azure_openai.create_embeddings(text,text[],integer,integer,boolean,integer,integer)

En la tabla siguiente se describen los argumentos que espera la función:

Argument Tipo Valor predeterminado Descripción
deployment_name text Nombre de la implementación de modelo de inserción en Azure OpenAI Studio. Normalmente, este nombre hace referencia a una implementación del modelo text-embeddings-ada-002.
input text o text[] Texto de entrada (o matriz de texto de entrada) para el que se crean las inserciones vectoriales.
batch_size integer 100 Solo se aplica cuando el argumento input es una matriz de valores text. batch_size especifica el número de registros de la matriz que se van a procesar de forma simultánea.
timeout_ms integer NULL::integer Tiempo de espera en milisegundos después del cual se detiene la operación.
throw_on_error boolean true Marca que indica si la función debe (en caso de error) producir una excepción, lo que da lugar a una reversión de las transacciones de ajuste.
max_attempts integer 1 Número de veces que se reintenta la llamada al servicio Azure OpenAI en caso de error.
retry_delay_ms integer 1000 Cantidad de tiempo, en milisegundos, que se debe esperar antes de intentar volver a llamar al punto de conexión de servicio de Azure OpenAI.

Configuración de una conexión a Azure OpenAI

Antes de usar las funciones de azure_openai, configure la extensión con la clave y el punto de conexión del servicio Azure OpenAI. El siguiente comando representa las consultas que usaría para establecer el punto de conexión y la clave necesarios para conectarse a la instancia de Azure OpenAI:

SELECT azure_ai.set_setting('azure_openai.endpoint', '{endpoint}');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');

Después, puede usar la función get_setting() para comprobar los valores escritos en la tabla de configuración de azure_ai.settings:

SELECT azure_ai.get_setting('azure_openai.endpoint');
SELECT azure_ai.get_setting('azure_openai.subscription_key');

Habilitación de la compatibilidad de los vectores con la extensión de vector

La función azure_openai.create_embeddings() de la extensión azure_ai permite generar inserciones para el texto de entrada. Para permitir que los vectores generados se almacenen junto con el resto de los datos de la base de datos, debe instalar también la extensión vector de acuerdo con las instrucciones de la documentación para habilitación de la compatibilidad con vectores en la base de datos.

Puede instalar la extensión vector mediante el comando CREATE EXTENSION.

CREATE EXTENSION IF NOT EXISTS vector;

Generar y almacenar vectores

En la aplicación de recomendación de propiedades en alquiler con tecnología de IA que está desarrollando para Margie's Travel, debe agregar una nueva columna a la tabla de destino con el tipo de datos vector para almacenar las inserciones dentro de esa tabla después de agregar compatibilidad con vectores a la base de datos. Los vectores están habilitados en la tabla listings para permitir funcionalidades de búsqueda semántica al ejecutar consultas para buscar propiedades disponibles. El modelo text-embedding-ada-002 genera vectores con 1536 dimensiones, por lo que debe especificar 1536 como tamaño del vector.

ALTER TABLE listings
ADD COLUMN description_vector vector(1536);

La tabla listings ya está lista para almacenar inserciones. Con la función azure_openai.create_embeddings(), se crean vectores para el campo description y se insertan en la columna recién creada description_vector de la tabla listings.

UPDATE listings
SET description_vector = azure_openai.create_embeddings('{your-deployment-name}', description);

Cada inserción es un vector de números de punto flotante, por lo que la distancia entre dos inserciones en el espacio vectorial se correlaciona con la similitud semántica entre dos entradas en el formato original.