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

完了

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

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

埋め込みを作成する

azure_openai スキーマを使用すると、create_embeddings()関数を呼び出すことができます。この関数は、データベース レイヤー内からベクター埋め込みを生成します。 これらの埋め込みにより、高次元ベクトルの効率的なストレージ、インデックス作成、およびクエリが可能になります。 この関数は、次の 2 つの形式を使用できます。

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

次の表では、関数で予期される引数について説明します。

引数 タイプ 既定値 説明
デプロイメント名 text Azure OpenAI Studio での埋め込みモデル デプロイの名前。 この名前は、通常、 text-embeddings-ada-002 モデルのデプロイを指します。
入力 text または text[] ベクター埋め込みを作成する入力テキスト (または入力テキストの配列)。
バッチサイズ integer 100 input引数がtext値の配列である場合にのみ適用されます。 batch_size は、同時に処理する配列のレコード数を指定します。
タイムアウト時間_ms integer NULL::integer 操作を停止させるまでのタイムアウト時間 (ミリ秒単位)。
throw_on_error boolean true 関数がエラー時に例外をスローしてラップしているトランザクションのロールバックを行うかどうかを示すフラグ。
最大試行回数 integer 1 エラー発生時の Azure OpenAI サービスへの呼び出しの再試行回数。
リトライ遅延ミリ秒 integer 1000 Azure OpenAI サービス エンドポイントの呼び出しを再試行する前の待機時間 (ミリ秒単位)。

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 フィールド用のベクトルを作成し、それらのベクトルを、listings テーブル内に新しく作成した description_vector 列に挿入します。

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

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