すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:rds_ai 拡張機能で提供される AI 機能を使用する

最終更新日:Jun 18, 2025

ApsaraDB for PostgreSQL は、Qwen やテキスト埋め込みモデルなど、Alibaba Cloud Model Studio の高度なモデルを統合する rds_ai 拡張機能のサポートを導入しました。 この拡張機能により、LLM ベースの Q&A サービス、テキストからベクトルへの変換、上位 N 個の類似ベクトルの取得、および検索拡張生成 (RAG) ベースの Q&A サービスなど、幅広いアプリケーションが可能になります。 さらに、rds_ai 拡張機能を通じてカスタムモデルをデプロイして、RDS for PostgreSQL でさまざまな AI 駆動型アプリケーションを開発できます。 このトピックでは、この拡張機能をデプロイして AI 機能を使用する方法について説明します。

前提条件

  • RDS インスタンスのメジャーエンジンバージョンとマイナーエンジンバージョンが、次の表の要件を満たしていること。

    メジャーエンジンバージョン

    マイナーエンジンバージョン

    PostgreSQL 16

    20241230 以降

    PostgreSQL 14、PostgreSQL 15、および PostgreSQL 17

    20250430 以降

    マイナーエンジンバージョンの更新方法の詳細については、「マイナーエンジンバージョンの更新」をご参照ください。

  • RDS インスタンスに特権アカウントが作成されていること。 特権アカウントの作成方法の詳細については、「アカウントの作成」をご参照ください。

  • Alibaba Cloud Model Studio がアクティブ化されており、API キーが利用可能であること。 詳細については、「API キーの取得」をご参照ください。

Network configurations

デフォルトでは、RDS for PostgreSQL インスタンスは内部ネットワーク経由でのみリソースにアクセスできます。 そのため、RDS インスタンスが外部モデルにアクセスできるようにするには、RDS インスタンスが存在する仮想プライベートクラウド (VPC) の NAT ゲートウェイを作成する必要があります。 NAT ゲートウェイの詳細については、「インターネット NAT ゲートウェイの SNAT 機能を使用してインターネットにアクセスする」をご参照ください。

rds_ai の作成と削除

重要

rds_ai 拡張機能を作成する前に、RDS for PostgreSQL インスタンスが前提条件で説明されている要件を満たしていることを確認してください。

  • [プラグイン] ページで rds_ai 拡張機能を作成および削除する

    1. ApsaraDB RDS コンソールにログインし、[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDS インスタンスを見つけて、その ID をクリックします。

    2. 左側のナビゲーション [ウィンドウ] で、[プラグイン] をクリックします。

    3. [拡張マーケットプレイス] タブの rds_ai セクションで、[インストール] をクリックします。

    4. 表示されるダイアログ [ボックス] で、データベースとアカウントを選択します。 次に、[インストール] をクリックして、選択したデータベースに rds_ai 拡張機能を作成します。

    (オプション) rds_ai 拡張機能が不要になった場合は、[拡張機能の管理] タブの [インストール済みの拡張機能] ページで削除できます。

  • SQL 文を実行して rds_ai 拡張機能を作成および削除する

    • 拡張機能を作成する

      CREATE EXTENSION IF NOT EXISTS rds_ai CASCADE;
      説明
      • 上記の文を実行する権限を持っているのは、特権アカウントのみです。 特権アカウントの作成方法の詳細については、「アカウントの作成」をご参照ください。

      • rds_ai 拡張機能を作成すると、pgvector 拡張機能と pgsql-http 拡張機能が自動的に作成されます。

      • SELECT * FROM pg_extension; 文を実行して、作成された拡張機能を表示できます。

    • 拡張機能を削除する

      DROP EXTENSION rds_ai;

デフォルトモデルを使用して AI 機能を実装する

rds_ai 拡張機能は、次の表に示すデフォルトモデルをサポートしています。 また、要件に基づいてカスタムモデルを作成することもできます。

インターフェースタイプ

パラメーター

データ型

デフォルトモデル

プロンプト API

rds_ai.default_prompt_model

enum

  • Qwen-Plus (デフォルト値)

  • Qwen-Max

  • Qwen-Turbo

埋め込み API

rds_ai.default_embed_model

enum

text-embedding-v3

説明

拡張機能のデフォルトモデルを変更するには、shared_preload_libraries パラメーターの[実行値]に rds_ai を追加します。 インスタンスパラメーターの構成方法の詳細については、「ApsaraDB for PostgreSQL インスタンスのパラメーターを変更する」をご参照ください。

たとえば、shared_preload_libraries パラメーターの[実行値]'pg_stat_statements,auto_explain,rds_ai' に設定できます。

rds_ai 拡張機能のデフォルトモデルは、次の AI 機能を提供できます。

基本設定

  1. rds_ai を使用して大規模言語モデル (LLM) を呼び出す前に、API キーを構成します。

    -- 指定されたモデルの API キーを構成します。
    SELECT rds_ai.update_model('qwen-plus', 'token', 'sk-****'); 
    
    -- rds_ai.model_list で指定されたすべてのモデルの API キーを構成します。
    SELECT rds_ai.update_model(model_name,'token','sk-****') FROM rds_ai.model_list;
  2. 次の文を実行して、デフォルトモデルの URL を構成します。

    --qwen-plus モデル
    SELECT rds_ai.update_model('qwen-plus', 'uri', 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation'); 
    
    --qwen-max モデル
    SELECT rds_ai.update_model('qwen-max', 'uri', 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation'); 
    
    --qwen-turbo モデル
    SELECT rds_ai.update_model('qwen-turbo', 'uri', 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation'); 
    
    --text-embedding-v3 モデル
    SELECT rds_ai.update_model('text-embedding-v3', 'uri', 'https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding'); 
  3. rds_ai 拡張機能は pgsql-http 拡張機能を使用してモデルをリモートで呼び出します。 次の文を実行してタイムアウト設定を構成し、長時間実行されている呼び出しを中断します。

    説明

    次のタイムアウト設定は、現在のセッションでのみ使用できます。 新しい接続を確立するときは、再度構成する必要があります。

    -- リクエストのタイムアウト期間をミリ秒単位で構成します。
    SET http.timeout_msec TO 200000;
    
    SELECT http.http_set_curlopt('CURLOPT_TIMEOUT', '200000');
    
    -- 接続のタイムアウト期間を構成します。
    SELECT http.http_set_curlopt('CURLOPT_CONNECTTIMEOUT_MS', '200000');

LLM ベースの Q&A

デフォルトでは、rds_ai 拡張機能はQwen が提供するテキスト生成モデルを使用して、LLM ベースの Q&A を実装します。

  1. (オプション) LLM ベースの Q&A の実装に使用するデフォルトモデルを構成します。 デフォルトでは、Qwen-Plus モデルが使用されます。

    説明

    拡張機能のデフォルトモデルを変更するには、shared_preload_libraries パラメーターの[実行値]に rds_ai を追加します。 インスタンスパラメーターの構成方法の詳細については、「ApsaraDB for PostgreSQL インスタンスのパラメーターを変更する」をご参照ください。

    たとえば、shared_preload_libraries パラメーターの[実行値]'pg_stat_statements,auto_explain,rds_ai' に設定できます。

    SET rds_ai.default_prompt_model TO "qwen-max" ;
  2. rds_ai.prompt 関数を使用して、Q&A サービスのデフォルトモデルを呼び出します。

    コマンドの例:

    SELECT rds_ai.prompt('ジャガイモ、ナス、大根を使った料理のレシピを教えてください。');

    完全なコマンド:

    SELECT rds_ai.prompt(
      model_name=>'qwen-plus', -- Q&A サービスに使用する LLM を指定します。
      content=>'ジャガイモ、ナス、大根を使った料理のレシピを教えてください。',  -- 質問を指定します。
      args=>'{"top_p": 0.7}'::jsonb -- モデルの呼び出しに必要なパラメーターを指定します。
    );

テキストからベクトルへの変換

デフォルトでは、rds_ai 拡張機能は text-embedding-v3 モデルを使用して、テキストをベクトルに変換します。

  1. 入力テキストをベクトルに変換します。

    • パラメーターを指定せずに rds_ai.embed 関数を呼び出して、入力テキストをベクターに変換できます。 デフォルトでは、テキストは密ベクターに変換されます。

      SELECT rds_ai.embed(
          'The quality of the clothes is excellent, very beautiful, worth the wait, I like it and will buy here again' -- 変換するテキストを指定します。
      );
    • 入力テキストをスパース ベクターに変換するためのパラメーターを指定することもできます。

      -- デフォルトで 250,002 次元のスパース ベクターに入力テキストを変換します。
      SELECT rds_ai.embed(
          content=>'The quality of the clothes is excellent, very beautiful, worth the wait, I like it and will buy here again',
          args=>'{"output_type": "sparse"}'::jsonb -- 変換のためのパラメーターを指定します。
      );
  2. 指定されたテーブルにベクトルを保存します。

    1. ベクトルを保存するテーブルを作成します。この例では、test_embed という名前のテーブルを作成します。

      CREATE TABLE test_embed(a text, b vector(1024), c sparsevec(250002));
    2. 変換するテキストをテーブルに挿入します。

      INSERT INTO test_embed (a) values ('hello world');
    3. rds_ai.embed 関数を使用して、text-embedding-v3 モデルを呼び出し、テキストをベクトルに変換します。次に、ベクトルを test_embed テーブルに書き込みます。

      • 密ベクトルをテーブルに書き込みます。

        UPDATE test_embed 
        SET b = rds_ai.embed(a, '{"output_type": "dense"}'::jsonb)::vector;
      • 疎ベクトルをテーブルに書き込みます。

        UPDATE test_embed 
        SET c = rds_ai.embed(a, '{"output_type": "sparse"}'::jsonb)::sparsevec;

上位 N 件の類似ベクター取得

デフォルトでは、rds_ai 拡張機能は text-embedding-v3 モデルを使用して類似ベクターを取得します。

  1. テストテーブルを作成します。

    -- test_rag という名前のテストテーブルを作成します。
    CREATE TABLE test_rag (
        id SERIAL PRIMARY KEY,
        chunk TEXT
    );
    
    -- テキストチャンクから変換されたベクターを格納するための埋め込み列を追加します。
    ALTER TABLE test_rag ADD COLUMN embedding VECTOR(1024);
    
    UPDATE test_rag SET embedding=rds_ai.embed(chunk)::vector;
  2. 埋め込みのためのベクターインデックスを作成します。

    説明

    作成するベクターインデックスに vector_cosine_ops クラスを指定する必要があります。

    -- HNSW アルゴリズムに基づいてベクターインデックスを作成します。
    CREATE INDEX ON test_rag USING hnsw (embedding vector_cosine_ops);
    -- IVFFlat アルゴリズムに基づいてベクターインデックスを作成します。
    CREATE INDEX ON test_rag USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
  3. rds_ai.retrieve 関数を使用して text-embedding-v3 モデルを呼び出し、テストテーブル内のベクターを取得します。

    サンプルコマンド:

    SELECT * FROM rds_ai.retrieve
    ('Why is PostgreSQL the most advanced open source database',
    'public', 'test_rag', 'chunk', 'embedding');

    完全なコマンド:

    SELECT * FROM rds_ai.retrieve
    (
      embed_model=>'text-embedding-v3', -- ベクター取得に使用するモデルを指定します。
      question=>'Why is PostgreSQL the most advanced open source database',
      source_schema=>'public', -- 取得するベクターを格納するテーブルのスキーマを指定します。
      source_table=>'test_rag', -- 取得するベクターを格納するテーブルを指定します。
      chunk_col=>'chunk', -- チャンクテキストを格納する列を指定します。
      vector_col=>'embedding', -- ベクターを格納する列を指定します。
      -- 以下のデフォルトパラメータを指定します。
      topn=>10, -- ベクター取得の上位 N 値を指定します。
      embed_args=>'{}'::jsonb, -- モデルに必要なパラメータを指定します。
      distance_type=>'cosine' -- ベクター間の距離を計算するために使用されるアルゴリズムを指定します。有効な値:L1、L2、cosine、および negative。
    );

RAG ベースの Q&A

デフォルトでは、rds_ai 拡張機能は text-embedding-v3 モデルと Qwen が提供するテキスト生成モデル を使用して、RAG ベースの Q&A サービスを実装します。

サンプルコマンド:

-- rds_ai は、ベクター関連の操作に text-embedding-v3 モデルを使用します。 rds_ai で使用されるテキスト生成モデルは、rds_ai.default_prompt_model パラメーターによって指定されます。
SELECT * FROM rds_ai.rag
('Why is PostgreSQL the most advanced open source database', 
'public', 'test_rag', 'chunk', 'embedding');

完全なコマンド:

SELECT * FROM rds_ai.rag
(
  embed_model=>'text-embedding-v3', -- RAG ベースの Q&A サービスに使用されるベクターモデルを指定します。
  prompt_model=>'qwen-plus', -- RAG ベースの Q&A に使用されるプロンプトモデルを指定します。
  question=>'Why is PostgreSQL the most advanced open source database',
  source_schema=>'public', -- 取得するベクターを格納するテーブルのスキーマを指定します。
  source_table=>'test_rag', -- 取得するベクターを格納するテーブルを指定します。
  chunk_col=>'chunk', -- チャンクテキストを格納する列を指定します。
  vector_col=>'embedding', -- ベクターを格納する列を指定します。
  -- 以下のデフォルトパラメーターを指定します。
  topn=>10,
  embed_args=>'{}'::jsonb,  -- RAG ベースの Q&A に使用されるベクターモデルに必要なパラメーターを指定します。
  prompt_args=>'{}'::jsonb, -- RAG ベースの Q&A に使用されるプロンプトモデルに必要なパラメーターを指定します。
  distance_type=>'L2' -- ベクター間の距離を計算するために使用されるアルゴリズムを指定します。 有効な値: L1、L2、cosine、および内積。
);

カスタムモデルを使用して AI 機能を実装する

重要

カスタムモデルを追加する際に問題が発生した場合は、お問い合わせください

メタデータテーブル rds_ai.model_list にモデルのレコードを挿入することで、カスタムモデルを追加できます。次の表に、rds_ai.model_list テーブルに含まれるフィールドを示します。

フィールド

データ型

説明

model_name

name

モデルの名前。このフィールドは、rds_ai.model_list テーブルのプライマリキーです。

request_type

text

このモデルを呼び出すために送信される HTTP リクエストのメソッド。

request_header

http.http_header[]

認証情報を含む HTTP リクエストヘッダー。このフィールドのデータ型は、pgsql-http 拡張機能によって定義されます。

uri

text

モデルの URL。

content_type

text

リクエストのコンテンツタイプ。例: application/json。

content_template

text

リクエストボディのテンプレート。モデルを呼び出すときは、テンプレート内のプレースホルダーを実際の値に置き換える必要があります。

json_path

text

レスポンスを解決し、必要な情報を取得するために使用される SQL 文。

token

text

ヘッダーで指定されたトークン。

基本操作

  • カスタムモデルを追加する

    SELECT rds_ai.add_model(
        'test-model',                   -- モデル名
        'POST',                         -- HTTP リクエストメソッド
        ARRAY[('Authorization', 'Bearer %s')]::http.http_header[], -- http_header
        'https://****.com',           -- リクエストで指定されたモデル URL
        'application/json',            -- リクエストのコンテンツタイプ
        '{"key":"%s"}',               -- リクエストボディのテンプレート
        'SELECT %L'          -- レスポンスを解決するために使用される SQL 文
    );
  • カスタムモデルを使用する

    • 次のコマンドは、rds_ai.raw_invoke_model 関数を使用して、メタデータテーブルの設定に基づいて Qwen-Plus を呼び出す方法を示しています。リクエストでは、テンプレートを満たすために配列が指定されています。完全なレスポンスが返されます。

      SELECT * FROM
      rds_ai.raw_invoke_model('qwen-plus', ARRAY['who are you']);
    • 次のコマンドは、rds_ai.invoke_model 関数を使用して、メタデータテーブルの設定に基づいて Qwen-Plus を呼び出す方法を示しています。Qwen-Plus に指定された json_path フィールドに基づいて、レスポンスから特定のフィールドが解決され、返されます。

      SELECT * FROM
      rds_ai.invoke_model('qwen-plus', ARRAY['who are you']);
  • カスタムモデルを削除する

    SELECT rds_ai.del_model('test-model');

RAG ベースの PAI モデルを追加する

RAG ベースの PAI モデルを追加するには、RDS for PostgreSQL インスタンスと Platform for AI(PAI)の Elastic Algorithm Service(EAS)モジュールを同じ VPC にデプロイし、rds_ai の設定で PAI の VPC エンドポイントを設定することをお勧めします。また、RDS for PostgreSQL インスタンスの VPC エンドポイントを使用して、PAI の EAS モジュールに接続する必要があります。このようにして、異なるサービスは VPC 内でのみ通信し、データセキュリティを確保します。

  1. PAI の EAS モジュールに RAG ベースのサービスをデプロイします。詳細については、「PAI の EAS モジュールと ApsaraDB RDS for PostgreSQL を使用して RAG ベースの LLM チャットボットをデプロイする」をご参照ください。

  2. RAG ベースのサービスの呼び出し情報を取得します。

    1. RAG ベースのサービスの名前をクリックして、[サービスの詳細] ページに移動します。

    2. [基本情報] セクションで、[エンドポイント情報を表示] をクリックします。

    3. [呼び出し方法] ダイアログボックスで、サービスのエンドポイントとトークンを取得します。

  3. RAG ベースの PAI モデルを追加します。

    SELECT rds_ai.add_model(
        'pai-rag',      -- モデル名
        'POST',         -- HTTP リクエストメソッド
        ARRAY[('Authorization','%s')]::http.http_header[],  -- リクエストヘッダー
        'http://rds-pai-rag-demo.****.cn-hangzhou.pai-eas.aliyuncs.com/service/query',  -- リクエストで指定されたモデル URL
        'application/json',  -- リクエストのコンテンツタイプ
        '{
            "question": "%s"
        }',  -- リクエストボディのテンプレート
        'SELECT (%L::jsonb->''answer'')::text'  -- レスポンスを解決するために使用される SQL 文
    );
    説明
  4. RAG ベースの PAI モデルのトークンを設定します。

    SELECT rds_ai.update_model('pai-rag', 'token','MTFkYjMwZjgzYzA1YmE2N2YyNWMxM2NkNDVjMjEzNjYxMDAzMzE5****');
  5. (オプション) RAG ベースの PAI モデルをテストします。

    サンプルコマンド

    SELECT rds_ai.invoke_model('pai-rag', ARRAY['どのパラメーターが WAL ログの蓄積につながる可能性がありますか']);

RAG ベースの Function Compute モデルを追加する

  1. Function Compute に AgentCraft アプリケーションをデプロイします。

  2. エージェントを作成し、エージェントの[クライアントアクセス情報] を設定します。

  3. RAG ベースの Function Compute モデルを追加します。

    SELECT rds_ai.add_model(
        'fc-rag',      -- モデル名
        'POST',         -- HTTP リクエストメソッド
        ARRAY[('Authorization','Bearer %s')]::http.http_header[],  -- リクエストヘッダー
        'https://agentcrckend-de-obnhjsknam.cn-hangzhou.fcapp.run/v1/chat/completions',  -- リクエストで指定されたモデル URL
        'application/json',  -- リクエストのコンテンツタイプ
        '{ 
            "messages":[ { "role": "user", "content": "%s" } ], 
            "stream": false, 
            "max_tokens": 1024 
         }', 
        'SELECT (%L::jsonb->''choices''->0->''message''->>''content'')::text'  -- レスポンスを解決するために使用される SQL 文
    );
    説明

    上記の例の URL を、/completions が追加された実際のモデル URL に置き換えます。

  4. RAG ベースの Function Compute モデルのトークンを設定します。

    SELECT rds_ai.update_model('fc-rag', 'token','8UiGAziWgYGPxM3qR5sAChBfDJRt****');
  5. (オプション) RAG ベースの Function Compute モデルをテストします。

    サンプルコマンド:

    SELECT rds_ai.invoke_model('fc-rag', ARRAY['どのパラメーターが WAL ログの蓄積につながる可能性がありますか']);

rds_ai が提供する関数

rds-ai.raw_invoke_model: カスタムモデルを呼び出し、完全な HTTP 応答を返します。

rds-ai.raw_invoke_model(
    model_name TEXT, 
    params_list TEXT[]
) 
RETURNS http.http_response

パラメーター

データ型

説明

model_name

text

モデルの名前。

'qwen-plus'

param_list

text[]

呼び出すモデルの content_template フィールドで指定されたパラメーターを含む順次リスト。

ARRAY['who are you', '{}']

rds-ai.invoke_model: カスタムモデルを呼び出し、json_path フィールドに指定された SQL 文を使用して HTTP 応答から解決された結果を返します。

rds-ai.invoke_model(
    model_name TEXT, 
    params_list TEXT[]
) 
RETURNS http.http_response

パラメーター

データ型

説明

model_name

text

モデルの名前。

'qwen-plus'

param_list

text[]

呼び出すモデルの content_template フィールドで指定されたパラメーターを含む順次リスト。

ARRAY['who are you', '{}']

rds_ai.embed: 指定されたモデルを使用して、指定されたテキストをベクトルに変換し、json_path フィールドに指定された SQL 文を使用して HTTP 応答から解決された結果を返します。

rds_ai.embed(
    model_name TEXT, 
    content TEXT, 
    args jsonb DEFAULT '{}' 
) RETURNS text

パラメーター

データ型

説明

model_name

text

モデルの名前。

説明

model_name パラメーターが指定されていない場合、text-embedding-v3 が呼び出されます。

'text-embedding-v3'

content

text

ベクトルに変換するテキスト。

'who are you'

args

jsonb

モデルの呼び出しに必要なパラメーター。

'{"output_type": "dense"}'

rds_ai.prompt: 指定されたモデルを呼び出して、プロンプトベースの操作を実行します。

rds_ai.prompt(
    model_name TEXT, 
    content TEXT, 
    args jsonb DEFAULT '{}'
) 
RETURNS text

パラメーター

データ型

説明

model_name

text

モデルの名前。

説明

model_name パラメーターが指定されていない場合、Qwen-Plus が呼び出されます。

'qwen-plus'

content

text

ベクトルに変換するテキスト。

'who are you'

args

jsonb

モデルの呼び出しに必要なパラメーター。

'{"top_p": 0.2}'

rds_ai.retrieve: 指定されたモデルを呼び出して、指定されたテキストに基づいて保存されているベクトルを取得します。

rds_ai.retrieve(
    model_name TEXT, 
    question TEXT, 
    source_schema TEXT, 
    source_table TEXT, 
    chunk_col TEXT, 
    vector_col TEXT, 
    topn INT DEFAULT 10, 
    embed_args jsonb DEFAULT '{}', 
    distance_type TEXT DEFAULT 'L2'
) 
RETURNS TABLE(chunk TEXT, distance float);

パラメーター

データ型

説明

model_name

text

モデルの名前。

説明

model_name パラメーターが指定されていない場合、text-embedding-v3 が呼び出されます。

'text-embedding-v3'

question

text

ベクトルを取得する基準となるテキスト。

'who are you'

source_schema

text

取得するベクトルを格納するテーブルのスキーマ。

'public'

source_table

text

取得するベクトルを格納するテーブルの名前。

'vec_tbl'

chunk_col

text

チャンクテキストを格納する列。

'chunk'

vector_col

text

テーブルのベクトル列。

'vec'

topn

int

ベクトル検索の上位 N の値。デフォルト値:10。

20

embed_args

jsonb

テキストからベクトルへの変換に必要なパラメーター。このパラメーターは、rds_ai.embed 関数の args パラメーターと同じ役割を果たします。

'{"output_type": "dense"}'

distance_type

text

ベクトル間の距離を計算するために使用されるアルゴリズム。デフォルト値:L2。

'L1'

rds_ai.rag: 指定されたモデルを呼び出して、ベクトル検索の結果に対してプロンプトベースの操作を実行します。

rds_ai.rag(
    embed_model TEXT,
    prompt_model TEXT,
    question TEXT,
    source_schema TEXT,
    source_table TEXT,
    chunk_col TEXT,
    vector_col TEXT,
    topn INT DEFAULT 10,
    embed_args jsonb DEFAULT '{}',
    prompt_args jsonb DEFAULT '{}',
    distance_type TEXT DEFAULT 'L2'
) 
returns text

パラメーター

データ型

説明

embed_model

text

モデルの名前。

説明

model_name パラメーターが指定されていない場合、Qwen-Plus が呼び出されます。

'qwen-plus'

question

text

ベクトルを取得する基準となるテキスト。

'who are you'

source_schema

text

取得するベクトルを格納するテーブルのスキーマ。

'public'

source_table

text

取得するベクトルを格納するテーブルの名前。

'vec_tbl'

chunk_col

text

チャンクテキストを格納する列。

'chunk'

vector_col

text

テーブルのベクトル列。

'vec'

topn

int

ベクトル検索の上位 N の値。デフォルト値: 10。

20

embed_args

jsonb

テキストからベクトルへの変換に必要なパラメーター。このパラメーターは、rds_ai.embed 関数の args パラメーターと同じ役割を果たします。

'{"output_type": "dense"}'

prompt_args

jsonb

プロンプトベースの操作に必要なパラメーター。このパラメーターは、rds_ai.prompt 関数の args パラメーターと同じ役割を果たします。

'{"top_p": 0.2}'

distance_type

text

ベクトル間の距離を計算するために使用されるアルゴリズム。デフォルト値:L2。

'L1'

rds_ai.show_models: 設定済みモデルのメタデータを表示します。

rds_ai.show_models() 
RETURNS setof rds_ai.model_list

rds_ai.del_model: モデルを削除します。

rds_ai.del_model (model_name text) 
RETURNS void

パラメーター

データ型

説明

model_name

text

削除するモデルの名前。

'qwen-plus'

rds_ai.add_model: モデルを追加します。

rds_ai.add_model(
    model_name TEXT,
    request_type TEXT,
    request_header http.http_header[],
    uri TEXT,
    content_type TEXT,
    content_template TEXT,
    json_path TEXT
) 
RETURNS TEXT

パラメーター

データ型

説明

model_name

text

追加するモデルの名前。

'text-embedding-v3'

request_type,

text

リクエストメソッド。

'POST'

request_header

http.http_header[]

HTTP リクエストのヘッダー。実際の使用では、token フィールドの値を使用してプレースホルダーを置き換えます。

ARRAY[('Authorization', 'Bearer %s')]

uri

text

モデルの URL。

'https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding'

content_type

text

リクエストのコンテンツタイプ。

'application/json'

content_template

text

リクエストボディのテンプレート。 rds-ai.invoke_model 関数を呼び出すときは、param_list パラメーターの値を使用してテンプレート内のパラメーターを置き換えます。 [parameters] パラメーターの値は JSON 形式です。

'{

"model": "text-embedding-v3",

"input": {"texts": ["%s"]},

"parameters": %s

}'

json_path

text

レスポンスを解決するために使用される SQL 文。 rds-ai.invoke_model 関数を呼び出すと、SQL 文を使用して content_template の値に含まれる JSON データが解決されます。

SQL 文の設定方法がわからない場合は、パラメーター値を 'SELECT %L' に設定します。

'SELECT %L'

rds_ai.update_model: 設定済みモデルのメタデータを更新します。

rds_ai.update_model(
    model_name TEXT,
    config_name TEXT, 
    value TEXT
) 
RETURNS void

パラメーター

データ型

説明

model_name

text

メタデータを更新するモデルの名前。

'text-embedding-v3'

config_name

text

更新するフィールド。更新できるフィールドの詳細については、rds_ai.add_model セクションで説明されているフィールドを参照してください。

'uri'

value

text

更新するフィールドの新しい値。

'https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding'