検索拡張生成(RAG)を使用したSelect AI
Select AI with RAGは、セマンティック類似性検索を使用して、指定されたベクトル・ストアからコンテンツを取得することで、自然言語プロンプトを強化します。これにより、特定の最新のコンテンツを使用して幻覚を軽減し、プロンプトに対してより関連性の高い自然言語応答を提供します。
Select AIは、RAG(Retrieval Augmented Generation)プロセスを自動化します。この手法では、AIベクトル検索を使用してエンタープライズ・ソースからデータを取得し、指定した大規模言語モデル(LLM)のユーザー・プロンプトを拡張します。エンタープライズ・データ・ストアからの情報を活用することで、RAGは幻覚を軽減し、根拠のある応答を生成します。
RAGは、ベクトル索引のAIベクトル検索を使用して、指定された質問のセマンティックに類似したデータを検索します。ベクトル・ストアはベクトル埋込みを処理します。ベクトル埋込みは、テキスト、イメージ、オーディオなどの様々なデータ・ポイントの数学的表現です。これらの埋込みにより、データの意味が取得され、効率的な処理と分析が可能になります。ベクトル埋込みおよびAIベクトル検索の詳細は、AIベクトル検索の概要を参照してください。
Select AIは、ベクトル埋込みを使用した類似性検索のために、Oracle Autonomous AI Database 26aiで使用可能なAIベクトル検索と統合されます。
トピック
Select AI RAGのメリット
LLMで使用されるソースを確認することで、クエリを簡素化し、現在のデータで応答精度を高め、透明性を確保します。
-
データのクエリを簡素化し、応答精度を向上: ユーザーは自然言語を使用してエンタープライズ・データをクエリし、エンタープライズ・データから詳細なコンテキストをLLMに提供して、より正確で関連性の高い応答を生成し、LLMの幻覚のインスタンスを減らすことができます。
-
最新の情報: ベクトル・ストアを使用して現在のエンタープライズ情報へのLLMアクセスを提供することで、静的データ・セットでトレーニングされたLLMのコストと時間のかかる微調整が不要になります。
-
シームレスな統合: Oracle AI Vector Searchと統合して、合理化されたデータ処理とパフォーマンスの向上を実現します。
-
自動化されたデータ・オーケストレーション: フルマネージド・ベクトル索引パイプラインでオーケストレーション・ステップを自動化し、新しいデータを効率的に処理します。
-
理解しやすいコンテキスト結果: ベクトル・ストアからLLMで使用されるソースにアクセスして取得し、結果の透明性と信頼性を確保します。統合とアプリケーション開発を容易にするために、データを自然言語テキストまたはJSON形式で表示および抽出します。
ベクトル・ストアの構築
Select AIは、ドキュメントを自動的にチャンクで処理し、埋込みを生成し、指定されたベクトル・ストアに格納し、新しいデータが到着するとベクトル索引を更新します。
- 入力: データは、最初にオブジェクト・ストレージに格納されます。
- Oracle Autonomous Databaseは、入力データまたはドキュメントを取得し、チャンク化して、チャンクを埋込みモデルに送信します。
- 埋込みモデルはチャンク・データを処理し、ベクトル埋込みを返します。
- ベクトル埋込みは、RAGで使用するためにベクトル・ストアに格納されます。コンテンツが追加されると、ベクトル索引が自動的に更新されます。
RAGは、ユーザーの質問に回答するために、エンタープライズ・データベースから関連する情報を取得します。この情報は、ユーザー・プロンプトとともに、指定された大規模言語モデルに提供されます。Select AIは、この追加の企業情報を使用してプロンプトを強化し、LLMの応答を改善します。RAGは、ベクトル・ストアからの最新の企業情報を使用して、応答品質を向上させることができます。
-
入力: ユーザーは、Select AIの
narrateアクションを使用して質問(プロンプトを指定)します。 -
Select AIは、AIプロファイルで指定された埋込みモデルを使用して、プロンプトのベクトル埋込みを生成します。
-
ベクトル検索索引では、質問のベクトル埋込みを使用して、索引付けされた顧客のエンタープライズ・データ(ベクトル・ストアの検索)から一致するコンテンツを検索します。
- ベクトル検索では、Autonomous AI Databaseインスタンスへの入力と同様の上位Kテキストが返されます。
- Autonomous AI Databaseは、ユーザーの質問を含む上位Kのクエリ結果をLLMに送信します。
- LLMは、Autonomous AI Databaseインスタンスに対するレスポンスを返します。
- Autonomous AI Database Select AIは、ユーザーにレスポンスを提供します。
DBMS_CLOUD_AIを使用したベクトル索引の作成および管理
DBMS_CLOUD_AIパッケージを使用して、ベクトル索引を作成および管理し、ベクトル・データベースJSONパラメータを構成します。
ノート:
表データまたはベクトル検索ドキュメントをLLMに送信しない場合、管理者権限を持つユーザーは、特定のデータベースのすべてのユーザーに対してそのようなアクセスを無効にできます。これにより、RAGのnarrateアクションが無効になります。
にリストされているプロバイダのAIプロファイルは、DBMS_CLOUD_AIパッケージを使用して構成できます。
参照:
-
ベクトル索引の作成: CREATE_VECTOR_INDEXプロシージャ。
-
ベクトル索引プロファイルおよびその他のAIプロファイルの管理: DBMS_CLOUD_AIサブプログラムの要約。
-
問合せベクトル索引ビュー: DBMS_CLOUD_AIビュー。
データベース内トランスフォーマ・モデルの使用
Select AI RAGを使用すると、Oracle Database 23aiインスタンスのデータベースにインポートされた事前トレーニング済ONNXトランスフォーマ・モデルを使用して、ドキュメント・チャンクおよびユーザー・プロンプトから埋込みベクトルを生成できます。
ノート:
インポートされたデータベース内トランスフォーマ・モデルでSelect AI RAGを使用するには、事前トレーニングされたONNX形式のトランスフォーマ・モデルをOracle Database 23aiインスタンスにインポートする必要があります。サポートされているAIプロバイダの他のトランスフォーマ・モデルを使用することもできます。この機能の詳細は、「例: データベース内トランスフォーマ・モデルを使用したSelect AI」を参照してください。
例: RAGを使用したSelect AIの設定および使用
This example guides you through setting up credentials, configuring network access, and creating a vector index for integrating OCI Generative AI vector store cloud services with OpenAI using Oracle Autonomous AI Database.
この設定は、ベクトル索引を使用してLLMレスポンスを強化するAIプロファイルを作成することで完了します。最後に、この例では、Select AI narrateアクションを使用します。このアクションは、指定されたベクトル・データベースの情報を使用して拡張されたレスポンスを返します。
次の例は、Oracle Database 23aiでのベクトル索引の構築および問合せを示しています。
--Grants EXECUTE privilege to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_AI to ADB_USER;
--Grants EXECUTE privilege DBMS_CLOUD_PIPELINE to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_PIPELINE to ADB_USER;
-- Create the OpenAI credential
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OPENAI_CRED',
username => 'OPENAI_CRED',
password => '<your_api_key>'
);
END;
/
PL/SQL procedure successfully completed.
-- Append the OpenAI endpoint
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'api.openai.com',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'ADB_USER',
principal_type => xs_acl.ptype_db)
);
END;
/
PL/SQL procedure successfully completed.
-- Create the object store credential
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OCI_CRED',
username => '<your_username>',
password => '<OCI_profile_password>'
);
END;
/
PL/SQL procedure successfully completed.
-- Create the profile with the vector index.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name =>'OPENAI_ORACLE',
attributes =>'{"provider": "openai",
"credential_name": "OPENAI_CRED",
"vector_index_name": "MY_INDEX",
"temperature": 0.2,
"max_tokens": 4096,
"model": "gpt-3.5-turbo-1106"
}');
END;
/
PL/SQL procedure successfully completed.
-- Set profile
EXEC DBMS_CLOUD_AI.SET_PROFILE('OPENAI_ORACLE');
PL/SQL procedure successfully completed.
-- create a vector index with the vector store name, object store location and
-- object store credential
BEGIN
DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
index_name => 'MY_INDEX',
attributes => '{"vector_db_provider": "oracle",
"location": "https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/my_namespace/my_bucket/my_data_folder",
"object_storage_credential_name": "OCI_CRED",
"profile_name": "OPENAI_ORACLE",
"vector_dimension": 1536,
"vector_distance_metric": "cosine",
"chunk_overlap":128,
"chunk_size":1024
}');
END;
/
PL/SQL procedure successfully completed.
-- After the vector index is populated, we can now query the index.
-- Set profile
EXEC DBMS_CLOUD_AI.SET_PROFILE('OPENAI_ORACLE');
PL/SQL procedure successfully completed.
-- Select AI answers the question with the knowledge available in the vector database.
set pages 1000
set linesize 150
SELECT AI narrate how can I deploy an oracle machine learning model;
RESPONSE
To deploy an Oracle Machine Learning model, you would first build your model within the Oracle database. Once your in-database models are built, they become immediately available for use, for instance, through a SQL query using the prediction operators built into the SQL language.
The model scoring, like model building, occurs directly in the database, eliminating the need for a separate engine or environment within which the model and corresponding algorithm code operate. You can also use models from a different schema (user account) if the appropriate permissions are in place.
Sources:
- Manage-your-models-with-Oracle-Machine-Learning-on-Autonomous-Database.txt (https://objectstorage.../v1/my_namespace/my_bucket/my_data_folder/Manage-your-models-with-Oracle-Machine-Learning-on-Autonomous-Database.txt)
- Develop-and-deploy-machine-learning-models-using-Oracle-Autonomous-Database-Machine-Learning-and-APEX.txt (https://objectstorage.../v1/my_namespace/my_bucket/my_data_folder/Develop-and-deploy-machine-learning-models-using-Oracle-Autonomous-Database-Machine-Learning-and-APEX.txt)
例: データベース内トランスフォーマ・モデルを使用したSelect AI
この例では、Oracleオブジェクト・ストレージに格納されている事前トレーニング済トランスフォーマ・モデルをOracle Database 23aiインスタンスにインポートし、Select AIプロファイルでインポート済データベース内モデルを使用して、ドキュメント・チャンクおよびユーザー・プロンプトのベクトル埋込みを生成する方法を示します。
-
Oracle Database 23aiインスタンスにインポートされた事前トレーニング済モデル。
-
オプションで、Oracleオブジェクト・ストレージにアクセスします。
「データベース内のベクトル生成のためのONNX形式の事前トレーニング済モデルのインポート」のステップとブログ「Oracle AI Database 26aiの事前ビルド済埋込み生成モデル」で、事前トレーニング済トランスフォーマ・モデルをデータベースにインポートします。
次の例は、Oracleオブジェクト・ストレージからデータベースに事前設定されたトランスフォーマ・モデルをインポートし、インポートされたモデルを表示する方法を示しています。
- Create a Directory object, or use an existing directory object
CREATE OR REPLACE DIRECTORY ONNX_DIR AS 'onnx_model';
-- Object storage bucket
VAR location_uri VARCHAR2(4000);
EXEC :location_uri := 'https://adwc4pm.objectstorage.us-ashburn-1.oci.customer-oci.com/p/eLddQappgBJ7jNi6Guz9m9LOtYe2u8LWY19GfgU8flFK4N9YgP4kTlrE9Px3pE12/n/adwc4pm/b/OML-Resources/o/';
-- Model file name
VAR file_name VARCHAR2(512);
EXEC :file_name := 'all_MiniLM_L12_v2.onnx';
-- Download ONNX model from object storage into the directory object
BEGIN
DBMS_CLOUD.GET_OBJECT(
credential_name => NULL,
directory_name => 'ONNX_DIR',
object_uri => :location_uri || :file_name);
END;
/
-- Load the ONNX model into the database
BEGIN
DBMS_VECTOR.LOAD_ONNX_MODEL(
directory => 'ONNX_DIR',
file_name => :file_name,
model_name => 'MY_ONNX_MODEL');
END;
/
-- Verify
SELECT model_name, algorithm, mining_function
FROM user_mining_models
WHERE model_name='MY_ONNX_MODEL';
これらの例は、Select AIプロファイル内でデータベース内トランスフォーマ・モデルを使用する方法を示しています。1つのプロファイルはベクトル埋込みを生成するためにのみ構成され、もう1つはSelect AIアクションとベクトル索引作成の両方をサポートします。
前提条件を完了するには、DBMS_CLOUD_AIパッケージを構成するための要件を確認します。
ベクトル埋込みのみを生成する例を次に示します。
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'EMBEDDING_PROFILE',
attributes => '{"provider" : "database",
"embedding_model": "MY_ONNX_MODEL"}'
);
END;
/次に、サポートされているAIプロバイダを指定できる一般的なSelect AIアクションおよびベクトル索引生成の例を示します。この例では、OCI Gen AIプロファイルおよび資格証明を使用します。サポートされるプロバイダのリストについては、を参照してください。ただし、ベクトル埋込みの生成にデータベース内トランスフォーマ・モデルを使用する場合は、embedding_model属性で"database: <MY_ONNX_MODEL>"を使用します。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'GENAI_CRED',
user_ocid => 'ocid1.user.oc1..aaaa...',
tenancy_ocid => 'ocid1.tenancy.oc1..aaaa...',
private_key => '<your_api_key>',
fingerprint => '<your_fingerprint>'
);
END;
/
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OCI_GENAI',
attributes => '{"provider": "oci",
"model": "meta.llama-3.3-70b-instruct",
"credential_name": "GENAI_CRED",
"vector_index_name": "MY_INDEX",
"embedding_model": "database: MY_ONNX_MODEL"}'
);
END;
/この例では、別のスキーマ所有者がモデルを所有している場合、データベース内トランスフォーマ・モデルでSelect AIを使用する方法を示します。embedding_model属性で、モデルの完全修飾名としてschema_name.object_nameを指定します。現在のユーザーがスキーマ所有者であるか、モデルを所有している場合は、スキーマ名を省略できます。
CREATE ANY MINING MODELシステム権限SELECT ANY MINING MODELシステム権限- 特定のモデルに対する
SELECT MINING MODELオブジェクト権限
システム権限を付与するには、ADMIN OPTIONを指定したシステム権限またはGRANT ANY PRIVILEGEシステム権限が付与されている必要があります。
権限を確認するには、Oracle Machine Learning for SQLのシステム権限を参照してください。
次の文により、ADB_USER1は任意のスキーマ内のデータのスコア付けおよびモデルの詳細の表示を許可します(SELECTアクセス権がデータに付与されている場合)。ただし、ADB_USER1は、ADB_USER1スキーマでのみモデルを作成できます。
GRANT CREATE MINING MODEL TO ADB_USER1;
GRANT SELECT ANY MINING MODEL TO ADB_USER1;
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OCI_GENAI',
attributes => '{"provider": "oci",
"credential_name": "GENAI_CRED",
"vector_index_name": "MY_INDEX",
"embedding_model": "database: ADB_USER1.MY_ONNX_MODEL"}'
);
END;
/次の例は、大/小文字を区別するモデル・オブジェクト名を指定する方法を示しています。
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OCI_GENAI',
attributes => '{"provider": "oci",
"credential_name": "GENAI_CRED",
"model": "meta.llama-3.3-70b-instruct",
"vector_index_name": "MY_INDEX",
"embedding_model": "database: \"adb_user1\".\"my_model\""}'
);
END;
/これらの例は、Select AI RAGでデータベース内トランスフォーマ・モデルを使用するためのエンドツーエンドのステップを示しています。1つのプロファイルでは、埋込みベクトルの生成のために排他的に作成されたproviderとしてdatabaseを使用し、もう1つのプロファイルでは、Select AIアクションおよびベクトル索引用に作成されたproviderとしてociを使用します。
前提条件を完了するには、DBMS_CLOUD_AIパッケージを構成するための要件を確認します。
--Grant create any directory privilege to the user
GRANT CREATE ANY DIRECTORY to ADB_USER;
- Create a Directory object, or use an existing directory object
CREATE OR REPLACE DIRECTORY ONNX_DIR AS 'onnx_model';
-- Object storage bucket
VAR location_uri VARCHAR2(4000);
EXEC :location_uri := 'https://adwc4pm.objectstorage.us-ashburn-1.oci.customer-oci.com/p/eLddQappgBJ7jNi6Guz9m9LOtYe2u8LWY19GfgU8flFK4N9YgP4kTlrE9Px3pE12/n/adwc4pm/b/OML-Resources/o/';
-- Model file name
VAR file_name VARCHAR2(512);
EXEC :file_name := 'all_MiniLM_L12_v2.onnx';
-- Download ONNX model from object storage into the directory object
BEGIN
DBMS_CLOUD.GET_OBJECT(
credential_name => NULL,
directory_name => 'ONNX_DIR',
object_uri => :location_uri || :file_name);
END;
/
-- Load the ONNX model into the database
BEGIN
DBMS_VECTOR.LOAD_ONNX_MODEL(
directory => 'ONNX_DIR',
file_name => :file_name,
model_name => 'MY_ONNX_MODEL');
END;
/
-- Verify
SELECT model_name, algorithm, mining_function
FROM user_mining_models
WHERE model_name='MY_ONNX_MODEL';
--Administrator grants EXECUTE privilege to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_AI to ADB_USER;
--Administrator grants EXECUTE privilege DBMS_CLOUD_PIPELINE to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_PIPELINE to ADB_USER;
-- Create the object store credential
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OCI_CRED',
username => '<your_username>',
password => '<OCI_profile_password>'
);
END;
/
PL/SQL procedure successfully completed.
-- Create the profile with Oracle Database.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name =>'EMBEDDING_PROFILE',
attributes =>'{"provider": "database",
"embedding_model": "MY_ONNX_MODEL"
}');
END;
/
PL/SQL procedure successfully completed.
-- Set profile
EXEC DBMS_CLOUD_AI.SET_PROFILE('EMBEDDING_PROFILE');
PL/SQL procedure successfully completed.
この例では、ociをproviderとして使用します。
--Grant create any directory privilege to the user
GRANT CREATE ANY DIRECTORY to ADB_USER;
- Create a Directory object, or use an existing directory object
CREATE OR REPLACE DIRECTORY ONNX_DIR AS 'onnx_model';
-- Object storage bucket
VAR location_uri VARCHAR2(4000);
EXEC :location_uri := 'https://adwc4pm.objectstorage.us-ashburn-1.oci.customer-oci.com/p/eLddQappgBJ7jNi6Guz9m9LOtYe2u8LWY19GfgU8flFK4N9YgP4kTlrE9Px3pE12/n/adwc4pm/b/OML-Resources/o/';
-- Model file name
VAR file_name VARCHAR2(512);
EXEC :file_name := 'all_MiniLM_L12_v2.onnx';
-- Download ONNX model from object storage into the directory object
BEGIN
DBMS_CLOUD.GET_OBJECT(
credential_name => NULL,
directory_name => 'ONNX_DIR',
object_uri => :location_uri || :file_name);
END;
/
-- Load the ONNX model into the database
BEGIN
DBMS_VECTOR.LOAD_ONNX_MODEL(
directory => 'ONNX_DIR',
file_name => :file_name,
model_name => 'MY_ONNX_MODEL');
END;
/
-- Verify
SELECT model_name, algorithm, mining_function
FROM user_mining_models
WHERE model_name='MY_ONNX_MODEL';
–-Administrator Grants EXECUTE privilege to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_AI to ADB_USER;
--Administrator Grants EXECUTE privilege DBMS_CLOUD_PIPELINE to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_PIPELINE to ADB_USER;
-- Create the object store credential
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OCI_CRED',
username => '<your_username>',
password => '<OCI_profile_password>'
);
END;
/
--Create GenAI credentials
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'GENAI_CRED',
user_ocid => 'ocid1.user.oc1..aaaa...',
tenancy_ocid => 'ocid1.tenancy.oc1..aaaa...',
private_key => '<your_api_key>',
fingerprint => '<your_fingerprint>'
);
END;
/
--Create OCI AI profile
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OCI_GENAI',
attributes => '{"provider": "oci",
"model": "meta.llama-3.3-70b-instruct",
"credential_name": "GENAI_CRED",
"vector_index_name": "MY_INDEX",
"embedding_model": "database: MY_ONNX_MODEL"}'
);
END;
/
-- Set profile
EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_GENAI');
PL/SQL procedure successfully completed.
-- create a vector index with the vector store name, object store location and
-- object store credential
BEGIN
DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
index_name => 'MY_INDEX',
attributes => '{"vector_db_provider": "oracle",
"location": "https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/my_namespace/my_bucket/my_data_folder",
"object_storage_credential_name": "OCI_CRED",
"profile_name": "OCI_GENAI",
"vector_dimension": 384,
"vector_distance_metric": "cosine",
"chunk_overlap":128,
"chunk_size":1024
}');
END;
/
PL/SQL procedure successfully completed.
-- Set profile
EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_GENAI');
PL/SQL procedure successfully completed.
-- Select AI answers the question with the knowledge available in the vector database.
set pages 1000
set linesize 150
SELECT AI narrate how can I deploy an oracle machine learning model;
RESPONSE
To deploy an Oracle Machine Learning model, you would first build your model within the Oracle database. Once your in-database models are
built, they become immediately available for use, for instance, through a SQL query using the prediction operators built into the SQL
language.
The model scoring, like model building, occurs directly in the database, eliminating the need for a separate engine or environment within
which the model and corresponding algorithm code operate. You can also use models from a different schema (user account) if the appropriate
permissions are in place.
Sources:
- Manage-your-models-with-Oracle-Machine-Learning-on-Autonomous-Database.txt (https://objectstorage.../v1/my_namespace/my_bucket/
my_data_folder/Manage-your-models-with-Oracle-Machine-Learning-on-Autonomous-Database.txt)
- Develop-and-deploy-machine-learning-models-using-Oracle-Autonomous-Database-Machine-Learning-and-APEX.txt
(https://objectstorage.../v1/my_namespace/my_bucket/my_data_folder/Develop-and-deploy-machine-learning-models-using-Oracle-Autonomous-
Database-Machine-Learning-and-APEX.txt)
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
Oracle Supportへのアクセス
お客様のOracleサポート・サービスへのアクセスおよびご利用は、該当するサービスの注文時に指定された利用条件に従うものとします。

