はじめに
マーケットプレイス版Oracle WebCenter Content For OCI(以降WCC For OCI)は、Oracle Cloud Infrastructure上のVMベースのソリューションとして提供されます。WCC For OCIを使用すると、顧客は数回クリックするだけで環境をプロビジョニング/セットアップでき、クラウド上でコンテンツ・ソリューションを提供できるようになります。
詳細は製品ドキュメントおよび概要紹介資料をご確認ください
この記事で説明すること、しないこと
2025年2月にWCC For OCIの14c(14.1.2.0.0) 対応版がリリースされました。また、WCC14c For OCIのみ利用できる新機能としてセマンティック検索(Semantic Search) もあわせてリリースされました
この記事では、WCC14c For OCIのセマンティック検索機能を有効化する手順について説明します
なお、セマンティック検索で利用するOracle Database 23aiのAI Vector Searchに関する説明は割愛します。詳細は以下の製品ドキュメントおよびスライドをご確認ください
WCCのセマンティック検索とは
ユーザーが自然文で検索文を入力すると、WCC側でその意味や文脈を考慮し、関連性の高いコンテンツを検索し、提供します。全文検索のように検索キーワードの取捨選択に時間をかけることなく、効率的な検索ができるようになります
加えて、ユーザーに付与されたアクセス権限により、セマンティック検索の結果が変わります。従来の検索機能と同じで、セマンティック検索もWCCのアクセス権限管理に応じた検索結果を返します
最後に、ユーザーはドキュメントをWCCにアップロードするだけで、特別な操作不要です。セマンティック検索で利用する索引はバックグラウンドで自動的に作成されます
セマンティック検索の利用条件
WCCのセマンティック検索を利用する条件は以下の通りです(※2025年4月21日時点)
- マーケットプレイス版WCC14c For OCIを利用すること
- データベースとしてOracle Database 23aiを利用すること(Oracle Database 23aiの新機能Oracle AI Vector Searchを利用します)
セマンティック検索の構成手順
以下の製品ドキュメントに従って、WCCのセマンティック検索機能を構成・有効化します
作業手順は以下の通りです
- Oracle Database 23ai環境を構築する
- マーケットプレイスからWCC14c For OCIをプロビジョニングする
- セマンティック検索ができるようにWCCを構成する
- 埋め込みモデルをデータベースにロードする
- WCCが使用する埋め込みモデルを指定し、索引を作成する
1. Oracle Database 23ai環境を構築する
OCI上にOracle Database 23aiの環境を作成します。今回は、以下のOCIチュートリアルを参考にAutonomous Transaction Processing - Serverless(以降ATP-S)の環境を作成します
2. マーケットプレイスからWCC14c For OCIをプロビジョニングする
2.1 プロビジョニング
マーケットプレイスからWCC14c For OCIの環境をプロビジョニングします。プロビジョニング時は前の手順で作成したOracle Database 23aiのATP-Sを指定します
プロビジョニング手順を説明したQiita記事が公開されていますので、こちらを参考に作成します
2.2 プロビジョニング完了後の追加作業
プロビジョニング完了後、以下Qiita記事の追加作業をすべて実施します(ローカライゼーションの設定、日本語フォントの追加、全文検索機能の有効化)
WCCのセマンティック検索機能を利用する場合、OracleTextSearch(Oracle DatabaseのOracle Textを利用した全文検索機能)の有効化は必須です
3. セマンティック検索ができるようにWCCを構成する
3.1 Smart Contentコンポーネントを有効化する
-
WCCのネイティブUIにアクセスします。URLは
https://<ロードバランサのパブリックIPアドレス>:16200/cs/
です -
管理ユーザーでサインインします(ここでは
weblogic
ユーザーでサインインしました) -
Fusion Middleware Control(もしくはWebLogic Remote Console)からUCM_Serverを再起動します
3.2 セマンティック検索機能の有効化
- 管理ユーザーでサインインします
- 管理→管理サーバー→一般構成を開きます
- 追加の構成変数 に以下2つのパラメータを追加し、保存をクリックします
IsDataBaseHybridSearchEnabled=True
SemanticSearchSupport=true
- UCM_Serverを再起動します
4. 埋め込みモデルをデータベースにロードする
Oracle Database 23aiは、ONNX形式の埋め込みモデルをデータベース内にロードして、埋め込みベクトルの生成を行うことできます。WCC14c For OCIでは、この機能を利用してセマンティック検索を構成します
データベースにロードするONNX形式の埋め込みモデルの入手方法は2つあります。どちらを使ってもWCCのセマンティック検索は動作しますが、日本語対応を考慮すると2点目の多言語埋め込みモデルのintfloat/multilingual-e5-base の利用をお勧めします
- オラクルが提供するONNXフォーマットのHugging Face all-MiniLM-L12-v2 modelを利用する
- Oracle Machine Learning for Python(OML4Py)を利用して自分でエクスポートした埋め込みモデルを利用する
ここでは、多言語埋め込みモデルのintfloat/multilingual-e5-baseを利用した場合について説明します
4.1 ONNXファイルを生成する
以下Qiita記事を参考に、OML4Pyの環境を作成し、intfloat/multilingual-e5-base のモデルをONNX形式でエクスポートします
4.2 ONNXファイルをオブジェクトストレージにアップロードする
-
エクスポートしたONNX形式のファイル(ここでは
multilingual-e5-base.onnx
)を、オブジェクトストレージのバケットにアップロードします
-
バケットにアップロードした
multilingual-e5-base.onnx
へのURLをメモします -
OCIコンソールを利用し、認証トークンを作成し、メモします。認証トークンの作成方法は以下ドキュメントをご確認ください
4.3 オブジェクトストレージからONNXファイルをATPにロードする
- OCIコンソールのクラウド・シェルを利用して、ATPにSQL Plusで接続できるように環境を準備します。今回は、以下のQiita記事を参考に準備します
- クラウド・シェル上でSQL Plusを起動し、adminユーザーでATPに接続します
satoshi_na@cloudshell:~ (us-chicago-1)$ sqlplus admin@wccmpatps23ai_low
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 21 08:19:48 2025
Version 19.19.0.0.0
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Enter password:
Last Successful login time: Mon Apr 21 2025 08:18:10 +00:00
Connected to:
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.8.0.25.05
SQL>
- 以下のSQLを実行し、WCCが使用するデータベースユーザーに必要な権限を付与します。WCCが利用するデータベースユーザーは
<マーケットプレイス作成時に指定したプレフィックス>_OCS
です。ここではプレフィックスにWCCMP1412
を指定したので、権限を付与するデータベースユーザーはWCCMP1412_OCS
です
GRANT DB_DEVELOPER_ROLE TO WCCMP1412_OCS;
GRANT CREATE MINING MODEL TO WCCMP1412_OCS;
CREATE DIRECTORY STAGING AS 'STAGE';
GRANT READ ON DIRECTORY STAGING TO WCCMP1412_OCS;
GRANT WRITE ON DIRECTORY STAGING TO WCCMP1412_OCS;
- SQL Plus一旦終了し、WCCのデータベースユーザー(ここでは
WCCMP1412_OCS
)で再接続します
satoshi_na@cloudshell:~ (us-chicago-1)$ sqlplus WCCMP1412_OCS@wccmpatps23ai_low
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 21 08:32:59 2025
Version 19.19.0.0.0
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Enter password:
Last Successful login time: Mon Apr 21 2025 08:27:34 +00:00
Connected to:
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.8.0.25.05
SQL>
- オブジェクトストレージにアクセスするためのクレデンシャルを作成します。
username
には認証トークンを発行したユーザー名、password
には前の手順で発行した認証トークンをそれぞれ設定します
begin
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OBJ_STORE_CRED',
username => '<ユーザー名>',
password => '<認証トークン>'
);
end;
/
- オブジェクトストレージからONNXファイルをダウンロードします。
credential_name
には直前の手順で作成したOBJ_STORE_CRED、object_url
にはバケット内のONNXファイルのURLを、それぞれ設定します
BEGIN
DBMS_CLOUD.GET_OBJECT(
credential_name => 'OBJ_STORE_CRED',
object_uri => 'https://objectstorage.us-chicago-1.oraclecloud.com/n/orasejapan/b/atp23ai-bucket/o/multilingual-e5-base.onnx',
directory_name => 'staging',
file_name => 'multilingual-e5-base.onnx'
);
END;
/
- ONNXファイルがダウンロードできたか?を確認します。
multilingual-e5-base.onnx
が表示されることを確認します
SQL> SELECT OBJECT_NAME, CREATED FROM TABLE(DBMS_CLOUD.LIST_FILES('staging'));
OBJECT_NAME
--------------------------------------------------------------------------------
CREATED
---------------------------------------------------------------------------
all_MiniLM_L12_v2.onnx
31-MAR-25 06.27.55.905020 AM +00:00
multilingual-e5-base.onnx
07-APR-25 07.21.55.235137 AM +00:00
SQL>
- ONNXファイルをデータベースにロードします。ここでは、モデル名をmultilinguale5baseと指定しました
BEGIN
DBMS_VECTOR.LOAD_ONNX_MODEL(
'staging',
'multilingual-e5-base.onnx',
'multilinguale5base',
json('{"function":"embedding","input":{"input":["DATA"]}}')
);
END;
/
- ロードしたモデルを確認します。multilinguale5baseがロードされていることを確認します
SQL> SELECT MODEL_NAME, MINING_FUNCTION, ALGORITHM, ALGORITHM_TYPE, round(MODEL_SIZE/1024/1024) MB FROM user_mining_models;
MODEL_NAME
--------------------------------------------------------------------------------
MINING_FUNCTION ALGORITHM ALGORITHM_
------------------------------ ------------------------------ ----------
MB
----------
MULTILINGUALE5BASE
EMBEDDING ONNX NATIVE
270
MINILM_MODEL
EMBEDDING ONNX NATIVE
127
SQL>
- ロードしたモデルmultilinguale5baseを利用した埋め込みベクトルの生成を確認します
SQL> SELECT TO_VECTOR(VECTOR_EMBEDDING( multilinguale5base USING 'こんにちは' as data)) AS embedding;
EMBEDDING
--------------------------------------------------------------------------------
[-1.92252826E-003,3.63082401E-002,-2.13882537E-004,2.37099547E-002,2.24683508E-0
SQL>
以上で埋め込みモデルをデータベースにロードできました
5. WCCが使用する埋め込みモデルを指定し、索引を作成する
-
WCCのネイティブUIに管理ユーザーでサインインします。ここではweblogicユーザーでサインインします
-
EmbeddingModelName
に前の手順でロードしたモデル名(ここではmultilinguale5base)を入力します。その他のパラメータはデフォルト値のままとします -
バックグランドでハイブリッド索引の作成が開始されます。さらに、WCCのユーザーインタフェース上に
Index build in progress. Semantic search might give inconsistent result
のアラートが表示されます
-
アラートをクリックすると、ハイブリッド索引の作成ステータスを確認できます
以上でセマンティック検索の構成は完了です
埋め込みモデルを更新する場合は、Cleanup Data and Hybird Indexをクリックし、既存のハイブリッド索引と関連データを削除します。その後、EmbeddingModeName
に新しい埋め込みモデルの名前を入力し、Update Configurationをクリックします。
この操作により、WCCは新しく設定された埋め込みモデルを使用して、既存のドキュメントに新しい埋め込みベクトルを作成します
動作確認(セマンティック検索の実行)
実際にセマンティック検索をWCCのユーザーインタフェースから実行します。セマンティック検索は、マーケットプレイス版WCC For OCIのみ利用可能なRedwood UIからのみ実行できます
-
WCCのRedwood UIにアクセスします。URLは
https://<ロードバランサのパブリックIPアドレス>:16200/cs?IdcService=REDWOODUI
です -
ユーザー名とパスワードを入力します
-
検索文を自然文で入力します(例:
Oracle Fusion Middlewareの開発計画をおしえて
障害報告のあげかたをおしえて
など)
おわりに
マーケットプレイス版Oracle WebCenter Content 14c For OCIのセマンティック検索機能を有効化する手順を紹介しました。皆さまのお役に立てば幸いです