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

完了

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

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

埋め込みを作成する

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)

次の表では、この関数で想定されている引数を説明しています。

引数 Default 説明
deployment_name text Azure OpenAI Studio での埋め込みモデル デプロイの名前。 この名前は通常、text-embeddings-ada-002 モデルのデプロイを示しています。
input text または text[] ベクター埋め込みを作成する入力テキスト (または入力テキストの配列)。
batch_size integer 100 input 引数が text 値の配列である場合にのみ適用されます。 batch_size によって、同時に処理する配列のレコード数が指定されます。
timeout_ms integer NULL::integer 操作が停止するまでのタイムアウト時間 (ミリ秒単位)。
throw_on_error boolean true 関数がエラー時に例外をスローしてトランザクションの折り返しのロールバックを行うかどうかを示すフラグ。
max_attempts integer 1 エラー発生時の Azure OpenAI への呼び出しの再試行回数。
retry_delay_ms 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_ai 拡張機能の azure_openai.create_embeddings() 関数を使用すると、入力テキストの埋め込みを生成できます。 生成されたベクターをデータベース内の残りのデータと共に格納できるようにするには、データベース内でのベクターのサポートの有効化に関するドキュメントのガイダンスに従って、vector 拡張機能をインストールする必要もあります。

vector 拡張機能は、CREATE EXTENSION コマンドを実行してインストールできます。

CREATE EXTENSION IF NOT EXISTS vector;

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

Margie's 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 つの入力の間のセマンティックの類似性に相関します。