セマンティック検索
変更通知を受け取る(購読する)
Liferay DXP 2026.Q1以降で一般提供開始
セマンティック検索は、検索されたフレーズの背後にある意図を評価します。 一方、キーワード検索では、検索されたフレーズをインデックスされたテキストフィールドにマッチさせるもので、意味に基づいてマッチさせることはできません。
Liferay DXP 2026.Q1以降、テキスト埋め込みプロバイダーとしてOpenAIを採用したセマンティック検索が一般提供開始となります。 ベータ版機能フラグ「セマンティック検索追加プロバイダー(LPD-122920)」を有効にすることで、追加のプロバイダー(txtai、Hugging Face Inference Endpoints、Hugging Face Inference Provider)を選択できます。
| 検索語句 | インデックス付きコンテンツ | マッチタイプ |
|---|---|---|
| テクノロジーの最新情報 | Liferayが7.3向けの検索エクスペリエンスをリリース | セマンティック✔ キーワード✘ |
| 新発売 | Liferay Search Experiencesに新機能が追加されました | セマンティック✔ キーワード✔ |
Liferay の (Elasticsearch を基盤とする) のような高度なキーワード検索でも、次のような独創的な技術を採用しているにもかかわらず、インデックス化されたドキュメントとユーザーの意図を一致させることはできません。
- キーワードとドキュメントフィールドをトークン化するための分析。
- 不正確なマッチングを可能にするための曖昧さと緩み。
- 語幹抽出とは、単語を語根に分解して同義語のマッチングを可能にする処理のことです。
- 重要でない単語を無視するためのストップワード。
トークン化されたキーワードや文書フィールドによる検索は、多くの検索ニーズを満たすのに十分です。 検索体験にさらなる向上を求めるなら、セマンティック検索は、キーワード検索で達成できることと、ユーザーが検索に本当に求めていること(検索語句だけでなく、その意図も処理すること)との間のギャップを大きく縮めます。

セマンティック検索により、追加のコンテンツ処理パイプラインが可能。 有効化すると、プラットフォームは入力テキストのベクトル表現であるテキスト埋め込みを生成し、それをElasticsearchのインデックスドキュメントに保存します。 検索時には、ユーザーが入力した検索キーワードも同様のベクトル化および埋め込み処理を経るため、類似性検索が可能になり、ユーザーにとってより意味のある関連性の高い検索結果を提供できます。 以下のコンテンツタイプはテキスト埋め込みをサポートしています。
- ブログのエントリ
- ドキュメント
- ナレッジベースの記事
- 掲示板のメッセージ
- 基本的なウェブコンテンツ記事
- Wikiページ
- DXP 2025.Q4+
オブジェクト(カスタムおよび変更可能なシステムオブジェクト) - DXP 2026.Q1+
基本ドキュメント (CMS) - DXP 2026.Q1+
基本的なWebコンテンツ(CMS) - DXP 2026.Q1+
ブログ (CMS) - DXP 2026.Q1+
外部ビデオ (CMS) - DXP 2026.Q1+
カスタムコンテンツ構造 (CMS)
セマンティック検索はこれらのコンテンツタイプをサポートすることで、類似性に基づく検索結果がアセット全体で一貫して適用されることを保証します。
追加のセマンティック検索プロバイダーを有効にする
ベータ版機能 (LPD-122920)
OpenAIがお客様のユースケースに適さない場合は、ベータ版機能フラグを使用して追加のプロバイダーを有効にしてください。
-
グローバルメニュー (
)を開き、 コントロールパネル → インスタンス設定をクリックします。 -
プラットフォーム → 機能フラグ セクションを開きます。
-
ベータ版のエントリで、セマンティック検索の追加プロバイダー(LPD-122920)を有効にします。

ポータルプロパティを使用して追加のプロバイダーを有効にするには、 portal-ext.propertiesに以下を追加します。
feature.flag.LPS-122920=true
環境変数を使用してセマンティック検索を有効にするには、設定に以下を追加してください。
LIFERAY_FEATURE_PERIOD_FLAG_PERIOD__UPPERCASEL__UPPERCASEP__UPPERCASES__MINUS__NUMBER1__NUMBER2__NUMBER2__NUMBER9__NUMBER2__NUMBER0_=true
セマンティック検索を設定するには、
- モデルを選択するか、独自のモデルを作成してください。
- テキスト埋め込みプロバイダを有効にし、Liferayで設定します。
- テキスト埋め込みをインデックス化する。
- ベクトル化された検索語句と文書間の類似性検索を実行するための検索ブループリントを作成します。
モデルの選択
適切に訓練されたモデルが最も重要である:インデックスのデータは、選択したモデルにとって適切でなければならない。 事前学習済みモデルを使うのは便利ですが、実運用で使用する前に、データに合わせて微調整が必要になる場合があります。 徹底的なテストを実施することによってのみ、選択したモデルが適切であるかどうかを知ることができる。
例えば、ユーザーが「スケートはどのように動くのか?海洋生物学に基づいて訓練されたモデルは、レクリエーションに基づいて訓練されたモデルとは異なる結果をもたらす。
OpenAI は、Liferay DXP 2026.Q1 以降、サポートされているテキスト埋め込みプロバイダーとして利用可能になり、いくつかの事前学習済み埋め込みモデルを提供します。
Hugging Face モデル ハブ は、 ベータ版 テキスト埋め込みプロバイダー (txtai、Hugging Face Inference Provider、または Hugging Face Inference Endpoints) のいずれかで使用できる、事前学習済みのドメイン固有のモデルの大規模なコレクションを提供します。
テキスト埋め込みのインデックス作成
テキスト埋め込みは、次の場合にインデックス化する必要があります。
-
セマンティック検索を初めて有効化します。
-
セマンティック検索の設定で、テキスト埋め込みプロバイダー、モデル、ベクトルの次元、またはテキスト切り捨て戦略を変更します。
テキスト埋め込みをインデックス化するには、[インデックスアクション] 画面を使用し、[セマンティック検索システム] または [インスタンス設定] の [アセットエントリクラス名] 設定で有効にしているモデルタイプのみに対して [ 再インデックス ] ボタンをクリックします。
セマンティック検索の設定
テキスト埋め込みプロバイダの設定以外にも、セマンティック検索のための追加設定オプションが利用可能です。 コントロールパネル → インスタンス設定 → セマンティック検索(検索カテゴリ内)にアクセスしてください。
テキスト埋め込みプロバイダーの設定については、 セマンティック検索の有効化で説明しています。
インデックス設定には以下の項目が含まれます。
最大文字数: テキスト埋め込みプロバイダに送信する最大文字数を設定します。 デフォルトでは、最大500文字がベクトル表現への変換のために送信されます。 理想的な値は、使用しているテキスト埋め込みプロバイダーとモデルによって異なります。 例えば、 OpenAI モデル は 8192 トークンをサポートしていますが、 Hugging Face モデル ハブ の人気のある BERT モデルの多くは 512 トークンを処理できます。 特定のモデルのトークン制限に何文字を設定するかを検討する際には、2つの一般的な経験則が目安となります。1つは単語の約4分の3、もう1つはトークンは約4文字であるということです。 ただし、これはあくまで概算です。 正しい値はテストによって決定する必要があります。
テキスト切り捨て戦略: 変換前のサンプルをテキストの先頭 (デフォルト)、中間、または末尾から抽出するかどうかを選択します。 この設定は、ソーステキストが最大文字数を超える場合にのみ適用されます。 戦略と最大文字数に応じて、タイトル/件名とコンテンツ/本文の一部を使用してテキスト埋め込みを生成できます。 切り捨て戦略を設定する際は、オブジェクトエントリ固有の文書構造を必ず考慮してください。 オブジェクトのメインコンテンツを保持する nestedFieldArray の大部分を含めるには、切り捨て戦略として Middle を選択することを検討してください。 ドキュメントの構造を調べるには、検索インサイトウィジェットの応答文字列を使用できます。 レスポンス内のドキュメント構造をより分かりやすくするために、スコアの説明を無効にしてください。 詳細については、 インデックス付きフィールドの探索 を参照してください。
タイプ: 変換するコンテンツタイプを選択します。 検索エンジンが、お客様のユースケースに必要な特定のアセットを処理するように、選択内容を確認し、必要に応じて調整してください。
- 現在サポートされているのは、基本的なウェブコンテンツ記事のみです。
- 標準搭載の基本文書タイプとカスタム文書タイプがサポートされています。
言語: 変換する言語とローカライズを選択します。 デフォルトでは、リストされているすべての言語が選択されています。 Ctrl + Click を使用してリストから複数の言語を選択します。
言語を有効にしても、その言語に対応した文埋め込みが作成されるとは限りません。 その言語はサイト上で利用可能でなければならない。 システム/インスタンス設定で言語が有効になっており、サイト内で利用可能であっても、特定のコンテンツに翻訳が存在しない場合は、デフォルトの翻訳を使用してテキスト埋め込みが作成されます。
テキスト埋め込みキャッシュタイムアウト: 変換された検索キーワードのキャッシュタイムアウトをミリ秒単位で設定します。 キャッシュがタイムアウト時間内であれば、Liferay はテキスト埋め込みプロバイダからキーワードのテキスト埋め込みを要求しません。 デフォルトのタイムアウト時間は604800ミリ秒(約10分)です。
Liferayにおけるセマンティック検索の理解
Liferay のセマンティック検索は
-
完全なセマンティック検索とは、検索ブループリントで通常のインデクサーを無効にし、テキスト埋め込みのみを使用して関連コンテンツを検索する機能です。
-
ハイブリッド型意味検索とは、まずキーワード検索を行い、テキスト埋め込みを用いて検索結果を再評価する手法である。
セマンティック検索とその複雑な仕組みを包括的に理解することは、この簡潔な説明の範囲を超える。 ここでは、Liferayのハイブリッドセマンティック検索の実装がどのように機能するかを説明するとともに、セマンティック検索のいくつかの基本的な概念についても解説します。
セマンティック検索は、インデックス作成時と検索時の両方でLiferayの検索に影響を与え、コンテンツ処理に新たなレベルをもたらします。
インデックス作成段階におけるセマンティック検索
- まず、通常のコンテンツ処理が行われます。
- [Liferay] Liferay のコンテンツは検索エンジンに送信され、データタイプに応じて処理されます。テキストは適切に分析され、インデックスに保存されます。
- [Liferay] 追加のセマンティック検索処理が行われます:
- システム/インスタンス設定での設定に従って、テキストスニペットはLiferayからテキスト埋め込みプロバイダに送信されます。
- 最大文字数とテキスト切り捨て戦略によって、テキスト埋め込みプロバイダーに送信されるスニペットが決まります。
- Liferayは、ブログ記事、ナレッジベース記事、Wikiページ、基本Webコンテンツ記事のタイトルとコンテンツを選択します。 メッセージボードのメッセージの場合、件名と本文のフィールドが処理されます。
- オブジェクトエントリの場合、Liferayは検索可能なフィールドから結合された生テキストを選択して処理します。
- [テキスト埋め込みプロバイダー] まず、スニペットは設定されたモデルに従って処理され、そのパラメータに従ってスニペットがトークン化されます。 各埋め込みプロバイダーとモデルは、処理できるトークンの最大数を指定します。 これは、システム/インスタンス設定の「セマンティック検索」→「最大文字数」設定で設定された文字数によって影響を受けます。
- [テキスト埋め込みプロバイダー] トランスフォーマーが使用するモデルに基づいて、テキスト埋め込みと呼ばれるソースのベクトル表現が作成されます。
- [Liferay] テキスト埋め込み処理の結果は、各文書のdense_vectorフィールドとしてLiferay Company Indexに格納される1.
- システム/インスタンス設定での設定に従って、テキストスニペットがテキスト埋め込みプロバイダに送信され、テキスト埋め込みが行われ、トランスフォーマーが使用するモデルに基づいてベクトル表現が作成されます。 テキスト埋め込み処理の結果は、各ドキュメントの1 に対して dense_vector フィールドとして Liferay Company Index に格納されます。
- システム/インスタンス設定での設定に従って、テキストスニペットはLiferayからテキスト埋め込みプロバイダに送信されます。
検索フェーズにおけるセマンティック検索
- 定期的なキーワードマッチングが発生します。
- 検索バーウィジェットに入力された検索語句は、Liferayの検索フレームワークによって受信され、分析および追加処理のために検索エンジンに送信され、検索エンジン内の既存のインデックス文書と照合されます。照合された文書は関連性に基づいてスコアリングされ、追加処理(強調表示、要約、権限の追加フィルタリングなど)のためにLiferayに返されます。
- 追加のセマンティック検索処理が行われます。
- 検索語句はテキスト埋め込みプロバイダに送信され、ベクトル表現( テキスト埋め込み)が作成されます。 キーワード検索の関連性に基づいてスコアリングされた検索結果を表示する前に、ウィンドウ制限設定内で取得された結果は、検索フレーズのベクトル表現とインデックス文書のベクトル表現を比較することによって再スコアリングされます。 新しいスコアが計算され、その結果はエンドユーザーが利用できるよう検索ページに返されます。 詳細については、Elastic の ベクトル検索とは何か を参照してください。
-
ドキュメント内のフィールドを検査するには、 ドキュメント形式で結果を表示 設定、または ブループリントの検索プレビュー 機能を使用します。
↩ ↩