Azure Database for PostgreSQL - Flexible Server Azure AI Extension (Preview)

APPLIES TO: Azure Database for PostgreSQL - Flexible Server

Azure Database for PostgreSQL flexible server extension for Azure AI enables you to use large language models (LLMS) and build rich generative AI applications within the database.  The Azure AI extension enables the database to call into various Azure AI services including Azure OpenAI and Azure Cognitive Services simplifying the development process allowing seamless integration into those services.

Enable the azure_ai extension

Before you can enable azure_ai on your Azure Database for PostgreSQL flexible server instance, you need to add it to your allowlist as described in how to use PostgreSQL extensions and check if correctly added by running SHOW azure.extensions;.

Tip

You might also want to enable the pgvector extension as it is commonly used with azure_ai.

Then you can install the extension, by connecting to your target database and running the CREATE EXTENSION command. You need to repeat the command separately for every database you want the extension to be available in.

CREATE EXTENSION azure_ai;

Note

To remove the extension from the currently connected database use DROP EXTENSION azure_ai;.

Installing the extension azure_ai creates the following three schemas:

  • azure_ai: principal schema where the configuration table resides and functions to interact with it.
  • azure_openai: functions and composite types related to OpenAI.
  • azure_cognitive: functions and composite types related to Cognitive Services.

The extension also allows calling Azure OpenAI and Azure Cognitive Services.

Configure the azure_ai extension

Configuring the extension requires you to provide the endpoints to connect to the Azure AI services and the API keys required for authentication. Service settings are stored using following functions:

permissions

Your Azure AI access keys are similar to a root password for your account. Always be careful to protect your access keys. Use Azure Key Vault to manage and rotate your keys securely. To manage service keys used by the extension, users require the azure_ai_settings_manager role granted to them. The following functions require the role:

  • azure_ai.set_setting
  • azure_ai.get_setting

The azure_ai_settings_manager role is by default granted to the azure_pg_admin role.

azure_ai.set_setting

Used to set configuration options.

azure_ai.set_setting(key TEXT, value TEXT)

Arguments

key

Name of a configuration option. Valid values for the key are:

  • azure_openai.endpoint: Supported OpenAI endpoint (for example, https://example.openai.azure.com).
  • azure_openai.subscription_key: A subscription key for an OpenAI resource.
  • azure_cognitive.endpoint: Supported Cognitive Services endpoint (for example, https://example.cognitiveservices.azure.com).
  • azure_cognitive.subscription_key: A subscription key for a Cognitive Services resource.
value

TEXT representing the desired value of the selected setting.

azure_ai.get_setting

Used to obtain current values of configuration options.

azure_ai.get_setting(key TEXT)

Arguments

Key

Name of a configuration option. Valid values for the key are:

  • azure_openai.endpoint: Supported OpenAI endpoint (for example, https://example.openai.azure.com).
  • azure_openai.subscription_key: A subscription key for an OpenAI resource.
  • azure_cognitive.endpoint: Supported Cognitive Services endpoint (for example, https://example.cognitiveservices.azure.com).
  • azure_cognitive.subscription_key: A subscription key for a Cognitive Services resource.

Return type

TEXT representing the current value of the selected setting.

azure_ai.version

azure_ai.version()

Return type

TEXT representing the current version of the Azure AI extension.

Examples

Set the Endpoint and an API Key for Azure OpenAI

select azure_ai.set_setting('azure_openai.endpoint','https://<endpoint>.openai.azure.com'); 
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>'); 

Get the Endpoint and API Key for Azure OpenAI

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

Check the Azure AI extension version

select azure_ai.version();

Permissions

The azure_ai extension defines a role called azure_ai_settings_manager, which enables reading and writing of settings related to the extension. Only superusers and members of the azure_ai_settings_manager role can invoke the azure_ai.get_settings and azure_ai.set_settings functions. In Azure Database for PostgreSQL flexible server, all admin users have the azure_ai_settings_manager role assigned.

Next steps