はじめに
こちらの記事の続きとして、Sharepointのサイト内のファイルに対するベクトル索引をAutonomous AI Database内に作成し、SELECT AI with RAG(RAGを使用した自然言語による検索)を実行してみました。
0. 事前準備
・こちらの記事の1.から5.の手順に従って、Sharepointにアクセスするためのクレデンシャル(SHAREPOINT_CREDENTIAL)が作成されていること
https://qiita.com/500InternalServerError/items/3f7507355ad151225f5a
・Autonomous AI DatabaseがOCI Generative AIにアクセスできるように、適切な動的グループおよびポリシーを作成してあること。
・Autonomous AI Databaseでリソース・プリンシパルが有効になっていること。
EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL();
なお、今回の検索対象となるSharepointのサイトのDocumentsには以下のような内容のExcelファイル「FY26_Qiita_Result.xlsx」がアップロードされています。
1. AIプロファイルの作成
DBMS_CLOUD_AI.CREATE_PROFILEプロシージャを使用して、SELECT AI with RAGで使用するAIプロファイル「RAG_PROFILE」を作成します。
ここではOCI Generatice AI Serviceにアクセスする際の認証にリソース・プリンシパルを使用するため、credential_nameにはOCI$RESOURCE_PRINCIPALを指定します。
また、vector_index_nameには、次のステップで作成するベクトル索引の名前(ここではsharepoint_vector_index)を指定します。
SQL> BEGIN
2 DBMS_CLOUD_AI.CREATE_PROFILE(
3 profile_name =>'RAG_PROFILE',
4 attributes =>'{"provider": "oci",
5 "credential_name": "OCI$RESOURCE_PRINCIPAL",
6 "vector_index_name": "sharepoint_vector_index",
7 "model": "meta.llama-3.3-70b-instruct",
8 "embedding_model": "cohere.embed-v4.0",
9 "temperature": 0,
10 "region": "ap-osaka-1"
11 }'
12 );
13 END;
14 /
PL/SQLプロシージャが正常に完了しました。
SQL>
2. Sharepointのサイト内のファイルに対するベクトル索引の作成
DBMS_CLOUD_AI.CREATE_VECTOR_INDEXプロシージャを使用して、Sharepointのサイト内のファイルに対するベクトル索引を作成します。
locationにはSharepointのURI、object_storage_credential_nameにはSharepointにアクセスするためのクレデンシャル(SHAREPOINT_CREDENTIAL)を指定します。
SQL> BEGIN
2 DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
3 index_name => 'sharepoint_vector_index',
4 attributes => '{"vector_db_provider": "oracle",
5 "location": "sharepoint://tenant_id=71d23856-8757-428a-893f-6360dc0c18c8/site_id=e3da3827-0433-4aa1-89db-70a08f19eca2",
6 "object_storage_credential_name": "SHAREPOINT_CREDENTIAL",
7 "profile_name": "RAG_PROFILE",
8 "vector_table_name": "SharePoint_vector_table",
9 "vector_distance_metric": "cosine",
10 "vector_dimension": 1536,
11 "chunk_overlap": 128,
12 "chunk_size": 1024
13 }'
14 );
15 END;
16 /
PL/SQLプロシージャが正常に完了しました。
SQL>
3. セッションで使用するAIプロファイルの設定
DBMS_CLOUD_AI.SET_PROFILEプロシージャを使用して、セッションで使用するAIプロファイル(ここでは1.で作成したRAG_PROFILE)を設定します。
SQL> EXEC DBMS_CLOUD_AI.SET_PROFILE('RAG_PROFILE');
PL/SQLプロシージャが正常に完了しました。
SQL>
4. RAGを使用した自然言語による検索の実行(SELECT AI with RAG)
SELECT AI NARRATEのあとに自然言語による質問を記述し、RAGを使用した自然言語による検索を実行します。
SQL> SELECT AI NARRATE どの記事のPVが一番多いですか;
RESPONSE
--------------------------------------------------------------------------------
記事のPVが一番多いのは、[OCI]Autonomous AI DatabaseからQiita APIをコールして、自
分が投稿した記事のPVトップ10を調査してみたで、3913PVです。
Sources:
- MainSite/Shared Documents/FY26_Qiita_Result.xlsx (https://xxxxxxxxxx.sharep
oint.com/sites/MainSite/Shared Documents/FY26_Qiita_Result.xlsx)
SQL>
自然言語による問合せに対して、Sharepoint上のファイルを参照して、正しい結果が返されることが確認できました。
参考情報
・Example: Create a Vector Index from SharePoint Files
・検索拡張生成(RAG)を使用したSelect AI
・Autonomous AI DatabaseからSharepoint上のファイルにアクセスしてみた
