Azure OpenAI スキーマについて調べる

完了

Azure OpenAI を PostgreSQL データベースに組み込むことで、高度にスケーラブルな AI を利用したアプリを作成できます。 この統合により、使い慣れた SQL 言語と PostgreSQL の柔軟性を使用して、データベース レイヤー内にインテリジェントなソリューションを構築できます。 自然言語処理、レコメンデーション システム、コンテンツ生成のいずれであっても、Azure OpenAI はアプリケーションを強化します。

azure_openai拡張機能によってインストールされたazure_ai スキーマを使用すると、Azure OpenAI サービス インスタンスに接続して操作できます。 このスキーマにより、Azure OpenAI サービスとのシームレスな統合が可能になり、PostgreSQL データベースから直接強力な生成 AI アプリケーションを作成できます。

埋め込みを作成する

azure_openai スキーマを使用すると、create_embeddings()関数を呼び出すことができます。この関数は、データベース レイヤー内からベクター埋め込みを生成します。 これらの埋め込みにより、高次元ベクトルの効率的なストレージ、インデックス作成、およびクエリが可能になります。 この関数は、一度に埋め込む項目の数に応じて、テキスト入力またはテキスト値の配列を受け取ることができます。

この関数では、次の作業を行う必要があります。

  • 埋め込みデプロイ名を指定します。
  • 入力テキストまたはテキストの配列を指定します。
  • 関数が埋め込みベクターを vector または vector[]として返すようにします。

例:

```sql
SELECT azure_openai.create_embeddings(
'{your-deployment-name}',
'Sample text to embed'
);
```

複数の入力値を渡すと、この関数はベクトルの配列を返します。

```sql
SELECT azure_openai.create_embeddings(
'{your-deployment-name}',
ARRAY['First text', 'Second text']
);
```

この関数は、指定された項目の数に基づいて内部的にバッチ処理を処理します。

Azure OpenAI への接続を構成する

azure_openai関数を使用する前に、Azure OpenAI サービス エンドポイントとキーを使用して拡張機能を構成します。 次のコマンドは、Azure OpenAI インスタンスに接続するために必要なエンドポイントとキーを設定するために使用するクエリを表します。

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

その後、 get_setting() 関数を使用して、 azure_ai.settings 構成テーブルに記述された設定を確認できます。

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

ベクター拡張機能を使用してベクターのサポートを有効にする

azure_openai.create_embeddings()拡張機能のazure_ai関数を使用すると、入力テキストの埋め込みを生成できます。 生成されたベクターをデータベース内の残りのデータと共に格納できるようにするには、データベース ドキュメントのvectorのガイダンスに従って、拡張機能もインストールする必要があります。

vector コマンドを使用して、拡張機能をインストールできます。

CREATE EXTENSION IF NOT EXISTS vector;

ベクトルを生成して格納する

Margie の Travel 用に開発している AI を利用したレンタル プロパティレコメンデーション アプリケーションでは、ベクター サポートをデータベースに追加した後、 vector データ型を使用してターゲット テーブルに新しい列を追加し、そのテーブル内に埋め込みを格納する必要があります。 listings テーブルでベクターが有効になっているため、クエリを実行して使用可能なプロパティを検索するときにセマンティック検索機能を使用できます。 text-embedding-ada-002 モデルでは、1,536 次元のベクトルが生成されるため、ベクトル サイズとして1536を指定する必要があります。

ALTER TABLE listings
ADD COLUMN description_vector vector(1536);

埋め込みを格納するための listings テーブルの準備ができました。 azure_openai.create_embeddings() 関数を使用して description フィールド用のベクトルを作成し、それらのベクトルを、description_vector テーブル内に新しく作成した listings 列に挿入します。

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

各埋め込みは浮動小数点数のベクトルであるため、ベクトル空間内の 2 つの埋め込み間の距離は、元の形式の 2 つの入力間のセマンティック類似性と相関します。