この記事について
OCIマーケットプレイスより提供されているOracle WebCenter Content 14c For OCI(以下、WCC14c For OCI)では、Oracle Database 23aiのAI Vector Searchを活用したセマンティック検索が利用できます。このセマンティック検索をREST APIから利用する方法を紹介します
なお、セマンティック検索の有効化条件や設定手順についての説明は割愛します。以下のQiita記事をご確認いただけると幸いです
今回の検証環境は以下のとおりです
- マーケットプレイス版WCC14c For OCI バージョン25.8.1
- Oracle Database 23ai (ATP-Serverless)
- セマンティック検索機能は有効化済(上記Qiita記事参照)
マーケットプレイス版Oracle WebCenter Content For OCIとは
マーケットプレイス版Oracle WebCenter Content For OCIは、Oracle Cloud Infrastructure上のVMベースのソリューションとして提供されます。WCC For OCIを使用すると、顧客は数回クリックするだけで環境をセットアップでき、クラウド上でコンテンツの管理・検索・共有などをすぐに利用開始できます
詳細は製品ドキュメントおよび概要紹介資料をご確認ください
WCC14c For OCIのセマンティック検索
従来型の全文検索と違い、セマンティック検索ではユーザーが入力した自然言語を解析し、意味的な近さに基づいて関連性の高いコンテンツを返します。これにより、検索キーワードの正確な入力に時間をかけずに、必要な情報を効率よく検索可能です
REST APIが定義されていないサービスの呼び出し方法
最初に、セマンティック検索のREST APIの有無を確認するため、製品ドキュメントを確認します。
全文検索やメタデータ検索のためのREST APIは提供されていますが、セマンティック検索(Semantic Search)のためのREST APIは提供されていないことが確認できます
このような場合に利用するのが、Generic RESTと言われるREST APIです
-
Generic GET API
GET /documents/wcc/api/v1.1/generic/invoke- https://docs.oracle.com/en/cloud/paas/webcenter-content/webcenter-content-api/index.html#generic-get-api
-
Generic POST API
POST /documents/wcc/api/v1.1/generic/invoke- https://docs.oracle.com/en/cloud/paas/webcenter-content/webcenter-content-api/index.html#generic-post-api
名前の通り、RESTのGETリクエストを実行するAPIと、POSTリクエストを実行するAPIがそれぞれ定義されています。この時に実行するのが、WCCのサービスになります
WCCのサービスとは?
WCCのサービスについては、製品ドキュメントに記載があります。日本語翻訳版はこちらです
<※日本語翻訳版より一部引用>
サービスとは、Oracle WebCenter Contentシステムで実行される関数またはプロシージャです。クライアントがOracle WebCenter Contentのシステムと通信したりOracle WebCenter Content Serverのデータベースにアクセスするには、Oracle WebCenter Contentのサービスをコールする(サービス・リクエストを行う)ことが唯一の方法です。
具体的にいうと、WebブラウザでWCCを利用する際のURLのパラメータとして追加されるIdcService=XXXのXXXがサービス に相当します。以下のスクリーンショットの場合、IdcService=DOC_INFOの「DOC_INFO」がサービスになります
また、サービスの実行には、パラメータ(サービス・パラメータ) が必要になる場合があります。上記スクリーンショットの場合、dID=577およびdDocName=WCC000956がパラーメータに相当します。なお、パラメータの要否はサービス毎に異なります
セマンティック検索を実行するサービスを確認する
セマンティック検索は、Redwood UIの検索メニューからAI検索を選択して実行します。この時のブラウザのURLはIdcService=REDWOODUIのままで、セマンティック検索のサービスがわかりません。
このような場合はWebブラウザの開発ツール(Developer Tools)等を利用し、セマンティック検索実行時のURLを確認します。以下確認例です
サービス名は GET_SEMANTIC_SEARCH_RESULTS、問い合わせ文のパラメータはprompt=XXXXX であることを確認します。なお、promptパラメータに設定する問い合わせ文はURL用にエンコードされています
Generic RESTを利用してセマンティック検索を実行する
Generic RESTを利用してセマンティック検索を実行します。今回はGeneric GET APIを使います
実行時に指定するサービスはGET_SEMANTIC_SEARCH_RESULTSです。問い合わせ文は「Oracle Fusion Middlewareの開発計画についておしえて」とします。なお、promptパラメータに設定する問い合わせ文はURL用にエンコードされています
以下、crulコマンドの実行例です
curl -k \
'https://wcchost:port/documents/wcc/api/v1.1/generic/invoke?IdcService=GET_SEMANTIC_SEARCH_RESULTS&prompt=Oracle%20Fusion%20Middleware%E3%81%AE%E9%96%8B%E7%99%BA%E8%A8%88%E7%94%BB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%8A%E3%81%97%E3%81%88%E3%81%A6' \
-H 'Authorization: <Auth info>'
レスポンスは以下のイメージです。SearchResults にセマンティック検索の実行結果がスコアの高い順にソートされて返ってくることが確認できます
{
"securityFilter": "Internal, Public",
"resultCount": "20",
"thresholdScore": "50",
"refreshSubjects": "",
"localizedForResponse": "1",
"dUser": "demouser",
"UseForwardOnlyCursor": "",
"baseTable": "ots1HybridText",
"IdcService": "GET_SEMANTIC_SEARCH_RESULTS",
"UserDateFormat": "iso8601",
"UserTimeZone": "UTC",
"IsQueryObjectPersistent": "",
"sortOrder": "DESC",
"sortField": "jt.score",
"changedSubjects": "",
"dDocAccount": "",
"prompt": "Oracle Fusion Middlewareの開発計画についておしえて",
"SearchMode": "document",
"search_text": "Oracle Fusion Middlewareの開発計画についておしえて",
"searchConfig": "{\"hybrid_index_name\":\"ots1HybridText_IN\",\"vector\":{\"search_text\":\"Oracle Fusion Middlewareの開発計画についておしえて\",\"search_mode\":\"DOCUMENT\",\"aggregator\":\"MAX\"},\"return\":{\"topN\":20,\"values\":[\"rowid\",\"score\"]}}",
"idcToken": "1757059574050:758259513182CAD7506A4165DCD531F4",
"UserAttribInfo": [
{
"dUserName": "demouser",
"AttributeInfo": "account,Sales/Div1,3,account,#none,15,role,Employee,15,role,guest,15,role,authenticated,15"
}
],
"SearchResults": [
{
"dDocName": "WCC000024",
"dDocTitle": "fusion-middleware-statement-of-direction-ja",
"dDocType": "Document",
"dSecurityGroup": "Public",
"dInDate": "2025-03-31 06:46:27Z",
"xLibraryGUID": "62B66F5E201272A25CEB0049BD197B93",
"dRevisionID": "1",
"dDocCreator": "weblogic",
"dWebExtension": "pdf",
"dDocCreatedDate": "2025-03-31 06:47:18Z",
"dCreateDate": "2025-03-31 06:47:18Z",
"dOriginalName": "fusion-middleware-statement-of-direction-ja.pdf",
"dFormat": "application/pdf",
"dDocAuthor": "weblogic",
"VaultFileSize": "423983",
"dDocLastModifier": "weblogic",
"xWebFlag": "idcnull",
"dOutDate": "",
"dExtension": "pdf",
"dDocLastModifiedDate": "2025-03-31 06:47:18Z",
"URL": "/cs/groups/public/documents/document/d2nj/mdaw/~edisp/wcc000024.pdf",
"WebFileSize": "423983",
"dDocOwner": "weblogic",
"dID": "28",
"dDocAccount": "idcnull",
"xIdcProfile": "idcnull",
"score": "92.63"
},
{
"dDocName": "WCC000025",
"dDocTitle": "WCCForOCI_NewFeatures",
"dDocType": "Document",
"dSecurityGroup": "Public",
"dInDate": "2025-03-31 06:54:33Z",
"xLibraryGUID": "62B66F5E201272A25CEB0049BD197B93",
"dRevisionID": "1",
"dDocCreator": "demouser",
"dWebExtension": "pdf",
"dDocCreatedDate": "2025-03-31 06:55:34Z",
"dCreateDate": "2025-03-31 06:55:34Z",
"dOriginalName": "WCCForOCI_NewFeatures.pptx",
"dFormat": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"dDocAuthor": "demouser",
"VaultFileSize": "5970420",
"dDocLastModifier": "demouser",
"xWebFlag": "idcnull",
"dOutDate": "",
"dExtension": "pptx",
"dDocLastModifiedDate": "2025-03-31 06:55:34Z",
"URL": "/cs/groups/public/documents/document/d2nj/mdaw/~edisp/wcc000025.pdf",
"WebFileSize": "5006306",
"dDocOwner": "demouser",
"dID": "29",
"dDocAccount": "idcnull",
"xIdcProfile": "idcnull",
"score": "88.16"
},
{
"dDocName": "WCC000725",
"dDocTitle": "wcc release note",
"dDocType": "Document",
"dSecurityGroup": "Public",
"dInDate": "2025-05-29 02:12:00Z",
"xLibraryGUID": "62B66F5E201272A25CEB0049BD197B93",
"dRevisionID": "1",
"dDocCreator": "weblogic",
"dWebExtension": "pdf",
"dDocCreatedDate": "2025-05-29 02:13:48Z",
"dCreateDate": "2025-05-29 02:13:48Z",
"dOriginalName": "release-notes-webcenter-content.pdf",
"dFormat": "application/pdf",
"dDocAuthor": "weblogic",
"VaultFileSize": "151522",
"dDocLastModifier": "weblogic",
"xWebFlag": "idcnull",
"dOutDate": "",
"dExtension": "pdf",
"dDocLastModifiedDate": "2025-05-29 02:13:48Z",
"URL": "/cs/groups/public/documents/document/d2nj/mdaw/~edisp/wcc000725.pdf",
"WebFileSize": "151522",
"dDocOwner": "weblogic",
"dID": "540",
"dDocAccount": "idcnull",
"xIdcProfile": "idcnull",
"score": "87.15"
},
<------------- 一部省略 ------------->
{
"dDocName": "WCC000693",
"dDocTitle": "デモ資料その2",
"dDocType": "Document",
"dSecurityGroup": "Public",
"dInDate": "2025-07-24 03:31:00Z",
"xLibraryGUID": "62B66F5E201272A25CEB0049BD197B93",
"dRevisionID": "3",
"dDocCreator": "weblogic",
"dWebExtension": "pdf",
"dDocCreatedDate": "2025-05-02 06:46:14Z",
"dCreateDate": "2025-07-24 03:31:34Z",
"dOriginalName": "デモ資料その2.pptx",
"dFormat": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"dDocAuthor": "weblogic",
"VaultFileSize": "50586",
"dDocLastModifier": "weblogic",
"xWebFlag": "idcnull",
"dOutDate": "",
"dExtension": "pptx",
"dDocLastModifiedDate": "2025-07-24 03:31:34Z",
"URL": "/cs/groups/public/documents/document/d2nj/mdaw/~edisp/wcc000693.pdf",
"WebFileSize": "53268",
"dDocOwner": "weblogic",
"dID": "572",
"dDocAccount": "idcnull",
"xIdcProfile": "idcnull",
"score": "84.16"
}
]
}
まとめ
WCC14c For OCIのセマンティック検索をREST APIから実行する方法を紹介しました。REST APIが提供されていないサービスを実行する場合は、Generic REST(GETもしくはPOST)の利用をご検討ください。
なお、REST APIが定義済のサービスであっても、このGeneric RESTで実行することができます。結果、WCCの「ほぼすべて」のサービスがこのGeneric RESTで実行できます。覚えておくと便利だと思います
マーケットプレイス版WCC14c For OCIの関連ドキュメント


