7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Autonomous AI Database:Sharepoint上のファイルに対してRAGを使用した自然言語による検索を実行してみた

7
Posted at

はじめに

こちらの記事の続きとして、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」がアップロードされています。

スクリーンショット 2026-06-10 16.47.47.png

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上のファイルにアクセスしてみた

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?