生成AIエージェントのためのOracle Databaseガイドライン
OCI生成AIエージェントでデータを使用できるようにするには、次のデータ・オプションがあります:
- オブジェクト・ストレージ・データ: データ・ファイルをOCIオブジェクト・ストレージにアップロードし、生成AIエージェントがデータを自動的に収集できるようにします。このオプションは、サービス管理です。データ・ファイルがオブジェクト・ストレージにある場合は、このトピックをスキップします。
- OpenSearchデータ: エージェントが使用するOpenSearchデータを使用して、独自の(BYO)取り込みおよび索引付けされたOCI検索を使用します。このオプションがある場合は、このトピックをスキップしてください。
- Oracle Databaseベクトル・ストア: Oracle Base Database 23aiまたはAutonomous Database 23aiベクトル・ストアから生成AIエージェントに独自の(BYO)ベクトル埋込みを使用します。このトピックでは、Oracle Base Database 23ai、Autonomous Database 23aiおよびデータベース・ツールをすでに理解している場合に、このオプションに関するガイドラインを示します。
- 「米国中西部(シカゴ)」リージョンで次のステップを実行します。生成AIエージェントは、このリージョンでのみ使用できます。
生成AIエージェントはデータベースを管理しないため、生成AIエージェントがデータベースに接続できるように既存のデータベースを設定する必要があります。次の要件
- データベース表
- 次のフィールドを使用してOracle Database 23ai表を作成します。
必須フィールド
DOCID
: 各レコードまたはドキュメントに割り当てられたIDBODY
: エージェントで検索する実際のコンテンツVECTOR
:body
コンテンツに基づいて埋込みモデルから生成されるベクトル
オプションのフィールド
CHUNKID
: チャンク化されたドキュメントのID。ドキュメントが512トークンより大きい場合。URL
: コンテンツのURL参照(使用可能な場合)。TITLE
:body
コンテンツのタイトル
- データベース関数
-
ファンクションは、パラメータを取ることができ、値を戻すサブプログラムです。各問合せからベクトル検索結果を返すことができるデータベース関数を設定する必要があります。要件は次のとおりです。
入力パラメータ
p_query
: 問合せ文字列top_k
: 最上位結果の数
戻り型
SYS_REFCURSOR
要件
-
関数の問合せフィールドに使用する埋込みモデルは、表の
BODY
コンテンツをベクトル埋込みに変換する埋込みモデルと同じである必要があります。 -
ファンクションの戻りフィールドは、表の必須フィールド(
DOCID
、BODY
およびSCORE
)およびオプション・フィールド(CHUNKID
、TITLE
およびURL
)と一致する必要があります。BODY
コンテンツは埋込みモデルによって処理され、各コンテンツに対してVECTOR
が生成されます。この関数は、問合せベクトルと各VECTOR
の間の距離を計算し、top_k
行を返します。SCORE
フィールドは、問合せベクトルとBODY
のVECTOR
の間の距離を表します。 -
ファンクションの戻りフィールド名が表フィールド名と一致しない場合は、ファンクションの別名を使用する必要があります。
例
次に、データベース関数の例を示します。
create or replace FUNCTION RETRIEVAL_FUNC (p_query IN VARCHAR2,top_k IN NUMBER) RETURN SYS_REFCURSOR IS v_results SYS_REFCURSOR; query_vec VECTOR; BEGIN query_vec := dbms_vector.utl_to_embedding( p_query, json('{ "provider": "OCIGenAI", "credential_name": "OCI_VECTOR_CREDENTIAL", "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-english-v3.0" }') ); OPEN v_results FOR select l.id as DOCID, lv.chunk_id as CHUNKID, l.file_name as TITLE, 'https://objectstorage.us-chicago-1.oraclecloud.com/n/{namespace}/b/{bucket_name}/o/' || l.file_name as URL, lv.chunk_txt as BODY, vector_distance(embed_vector, query_vec) AS SCORE from legislation_vector lv, legislation l where l.id = lv.id order by SCORE fetch first top_k rows only; RETURN v_results; END;
次に、ネットワークに関する高度なガイドラインを示します。
- ネットワーキング要件
-
- OCIの仮想クラウド・ネットワーク(VCN)のプライベート・サブネットにデータベースを追加します。
- サブネットのイングレス・ルールの次のプロパティを設定します:
- ソース・タイプ: CIDR
- ソースCIDR: VCNのIPv4 CIDRブロック(10.0.0.0/16など)
- IPプロトコル: TCP
- ソース・ポート範囲: すべて
- 宛先ポート範囲: 1521-1522
- セキュリティ要件
-
- Vaultの作成: データベースのシークレットを保存します。
- ボールトをデータベースと同じコンパートメントに作成します。
データベース・ツール・サービスを使用して、OCI内のOracleデータベースへの再利用可能な接続を作成できます。データベースの接続を作成するには、次のガイドラインに従います。
- Oracle Base Database 23ai接続のガイドライン
-
生成AIエージェントは、相互TLS (mTLS)認証なしで設定された接続を持つプライベート・エンドポイントを介してのみOracleベース・データベース23aiにアクセスできます。次のタスクを実行して、プライベート・エンドポイント・アクセスを持つデータベース接続を作成します:
-
次の情報も収集します。
コンソールでナビゲーション・メニューを開き、「Oracle Database」、「Oracle Base Database Service」の順に選択します。データベース・システム名をクリックしてから、データベース名を選択します。次のステップの接続情報に使用する次のプロパティをコピーします。- データベース・システム
- Database
- データベース・ホーム
-
左側で、「プラガブル・データベース」を選択し、プラガブル・データベース名をクリックします。「PDB接続」をクリックし、接続文字列を「長い」形式でコピーします。
長い形式の接続文字列の例:
(DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.62)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=xxx_pdb1.xxx.dbsvcn.oraclevcn.com)))
-
次のプロパティを使用して、接続を作成します。
- 「データベースの選択」オプションを使用して、「Oracleベース・データベース」を選択します。
- 「データベース・システム」、「データベース・ホーム」および「データベース」を選択します。
- 「プラガブル・データベース」を選択します。
- 「ユーザー名」および「ロール」を入力します。データベース・ユーザーに必要な権限があること、最初のトピックで準備したデータベース機能を実行できること、および適切なロールが割り当てられていることを確認します。たとえば、ユーザー名
SYS
の場合は、SYSDBA
ロールを割り当てます。 - 「ユーザー・パスワード・シークレット」で、「パスワード・シークレットの作成」を選択し、前の項で作成したボールトにパスワードを格納するシークレットを作成します。
- 「接続文字列」に、ステップ1のプラガブル・データベースの長い形式を貼り付けます。
- プライベート・ネットワークを介してデータベースにアクセスのボックスにチェックマークを入れます。
- 「プライベート・エンドポイントの選択」を選択します。
- 「プライベート・エンドポイントの作成」をクリックし、「サブネット」でデータベースのプライベート・サブネットを選択して、「作成」をクリックします。
- 「Wallet形式」で、
None
を選択して相互TLS (mTLS)認証なしで接続を作成します。
-
- Autonomous Database 23ai接続のガイドライン
-
生成AIエージェントは、相互TLS (mTLS)認証なしで設定された接続を持つプライベート・エンドポイントを介してのみAutonomous Database 23aiにアクセスできます。次のタスクを実行して、プライベート・エンドポイント・アクセスを持つデータベース接続を作成します:
- コンソールで、ナビゲーション・メニューを開き、「Oracle Database」、「Autonomous Database」の順に選択します。
- 次のプロパティで自律型データベースを作成します:
- ネットワーク・アクセスの選択: 「プライベート・エンドポイント・アクセスのみ」を選択します。
- 相互TLS (mTLS)認証が必要: ボックスを選択解除します。
-
自律型データベースがある場合は、データベースの詳細ページに移動し、「その他のアクション」を選択して、「ネットワーク・アクセスの更新」をクリックします。「プライベート・エンドポイント・アクセスのみ」を選択し、「更新」をクリックします。次に、自律型データベースの詳細ページの「ネットワーク」で、相互TLS (mTLS)認証について、「編集」をクリックし、ボックスを選択解除して「保存」をクリックします。
-
データベースの詳細ページから、次の情報を収集します。
- データベース名
- 「ネットワーク」セクションで:
- プライベート・エンドポイントIP
- プライベート・エンドポイントURL
- 「データベース接続」をクリックし、TNS名のリストで、
_high
で終わるTNS名を検索し、その接続文字列をコピーします。
-
次のプロパティを使用して、接続を作成します。
- 「データベースの選択」オプションを使用して、「Oracle Autonomous Database」を選択します。
- 「データベース」を選択します。
- 必要な権限を持つ「ユーザー名」を入力し、最初のトピックで準備したデータベース機能を実行できます。
- 「ユーザー・パスワード・シークレット」で、「パスワード・シークレットの作成」を選択し、前の項で作成したボールトにパスワードを格納するシークレットを作成します。
- 「接続文字列」に、データベース詳細ページのデータベース接続情報からコピーした接続文字列である
_high
で終わる接続文字列を貼り付けます。接続を更新し、再試行回数を20から3に減らし、プライベート・エンドポイントURLのホストをプライベート・エンドポイントIPに置き換えます。接続文字列の例:
(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522) (host=<private-endpoint-URL>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com)) (security=(ssl_server_dn_match=no)))
更新された接続文字列の例:
(description= (retry_count=3)(retry_delay=3)(address=(protocol=tcps)(port=1522) (host=<private-endpoint-IP>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com)) (security=(ssl_server_dn_match=no)))
- プライベート・ネットワークを介してデータベースにアクセスのボックスにチェックマークを入れます。
- 「プライベート・エンドポイントの選択」を選択します。
- 「プライベート・エンドポイントの作成」をクリックし、「サブネット」でデータベースのプライベート・サブネットを選択して、「作成」をクリックします。
- 「Wallet形式」で、
None
を選択して相互TLS (mTLS)認証なしで接続を作成します。