Exploración del esquema de Azure OpenAI

Completado

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

El azure_openai esquema instalado por la azure_ai extensión le permite conectarse e interactuar con una instancia del servicio Azure OpenAI. Este esquema permite una integración perfecta con el servicio Azure OpenAI, lo que le permite crear eficaces aplicaciones de IA generativas directamente desde la base de datos postgreSQL.

Creación de incrustaciones

Con el azure_openai esquema, puede llamar a la create_embeddings() función , que genera incrustaciones de vectores desde dentro de la capa de base de datos. Estas incrustaciones permiten un almacenamiento, una indexación y una consulta eficaces de 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 esperados por la función :

Argumento Tipo Predeterminado Descripción
nombre_de_despliegue text Nombre de la implementación del modelo de incrustación en Azure OpenAI Studio. Este nombre normalmente hace referencia a una implementación del text-embeddings-ada-002 modelo.
entrada text o text[] Texto de entrada (o matriz de texto de entrada) para el que se crean incrustaciones vectoriales.
batch_size integer 100 Solo se aplica cuando el input argumento es una matriz de text valores. batch_size especifica el número de registros de la matriz que se van a procesar simultáneamente.
tiempo_de_espera_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.
intentos_máximos 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, para esperar antes de intentar volver a intentar llamar al punto de conexión de servicio de Azure OpenAI.

Configuración de una conexión a Azure OpenAI

Antes de usar las azure_openai funciones, configure la extensión con el punto de conexión y la clave 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 get_setting() función para comprobar la configuración escrita en la azure_ai.settings tabla de configuración:

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

Habilitar soporte para vectores con la extensión vectorial

La azure_openai.create_embeddings() función de la azure_ai extensión permite generar incrustaciones para texto de entrada. Para permitir que los vectores generados se almacenen junto con el resto de sus datos en la base de datos, también debe instalar la vector extensión siguiendo la guía para habilitar el soporte de vectores en su base de datos en la documentación de la base de datos.

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

CREATE EXTENSION IF NOT EXISTS vector;

Generar y almacenar vectores

En la aplicación de recomendación de propiedades de alquiler con tecnología de IA que está desarrollando para Margie's Travel, debe agregar una nueva columna a la tabla de destino mediante el vector tipo de datos para almacenar incrustaciones dentro de esa tabla después de agregar compatibilidad con vectores a la base de datos. Los vectores están habilitados en la listings tabla para permitir funcionalidades de búsqueda semántica al ejecutar consultas para buscar propiedades disponibles. El text-embedding-ada-002 modelo genera vectores con 1536 dimensiones, por lo que debe especificar 1536 como el 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 incrustaciones en el espacio vectorial se correlaciona con la similitud semántica entre dos entradas en el formato original.