Exploración del esquema de Azure OpenAI
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.