Elastic検索:セマンティック検索エクスペリエンスの構築

概要


データを取り込む

Elastic Cloudアカウントを作成する

14日間の無料トライアルを開始しましょう。cloud.elastic.coに移動して、アカウントを作成した後は、次の手順に従い、世界中の50以上の対象リージョンのいずれかで最初のElastic Stackを立ち上げる方法についてご覧ください。

[設定の編集]をクリックすると、AWS、Microsoft Azure、Google Cloudなどのクラウドプロバイダーを選択できます。クラウドプロバイダーを選択した後は、関連するリージョンを選択できます。次に、いくつかの異なるハードウェアプロファイルから選択し、ニーズに合わせてデプロイを効果的にカスタマイズできます。さらに、最新バージョンのElasticがあらかじめ選択されています。

デプロイの作成中に、ユーザー名とパスワードが表示されます。統合をインストールするときに必要になるため、必ずこの情報をコピーするかダウンロードしてください。

ElasticのWebクローラーでデータをインジェストする

デプロイを作成したら、データをElasticに取り込みましょう。そのためには、ElasticのWebクローラーを使います。まず、[セマンティック検索エクスペリエンスの構築]タイルを選択します。

次に、セマンティック検索を設定するために、以下のいずれかを開始できるページが表示されます。

  • Elastic Learned Sparse Encoder
  • ベクトル検索
  • NLPエンリッチメント

これらをはじめとする機能はすべて、Elasticsearch Relevance Engine(ESRE)の一部です。

今回は、ガイドのテーマに沿ってElastic Learned Sparse Encoderとベクトル検索の両方でセマンティック検索を設定する方法を説明します。

注:セマンティック検索を使い始めて、テキストを検索する場合は、最初にElastic Learned Sparse Encoderガイドを参照してください。kNNベクトル検索ガイドは、以下の条件のユーザーに適している可能性が高いです。

  • データサイエンスや、そのスキルセットにアクセスできる
  • 組み込みのElastic Learned Sparse Encoderセマンティック検索モデルでは対応しきれないユースケースだと判断した
  • 埋め込みモデルの比較や、場合によってはMLモデルの微調整の経験がある
  • 高速なkNN検索には大量のRAMリソースが必要であると知っている

開始の準備が整ったら、AI検索のパワーを活かすアプリケーションを構築するためのお好みの方法を選択します。

どちらの方法でも、インデックスの作成を選択するところから始まります。ここからWebクローラーを選択して、データのインジェストを開始します。

Webクローラーを設定するには、このガイドツアーを確認するか、以下の指示に従ってください。

インデックスを作成します。今回は、ガイドのテーマに沿ってelastic.co全体のブログをインジェストします。

Web crawler search index

インデックスに名前を付けたら[インデックスの作成]を選択します。次にドメインを検証し、ドメインを追加します。

画面の右下でドメインを追加したら、[編集]を選択し、必要に応じてサブドメインを追加します。

Add a domain to your index次に、[クロールルール]を選択して、以下のようにクロールルールを追加します。*

Manage domains

*クロール対象のページにリンクしているページが存在するため、これらのリンクやその他のリンクを却下するためにルールを追加する必要があります。

 

次に、後でフィールドを選択する際、一部のフィールドでトークン数が512を超えます(body_contentなど)。そこで、抽出ルールを活用して、ブログの中でも関連性のある部分だけを絞り込みます。

抽出ルールを選択したら[コンテンツの抽出ルールの追加]をクリックします。

次に、ルールの説明画面で名前を付け、他の人もこのルールの抽出対象データを理解できるようにします。今回は、ガイドのテーマに沿って"main"と呼びます。

[すべてのURLに適用][コンテンツフィールドの追加]の順に選択すると、フライアウトが表示されます。フライアウトが表示されたら、次の条件を入力して選択します。

  • ドキュメントのフィールド:
    • フィールド名:main
  • ソース:
    • コンテンツの抽出元:HTML要素
    • CSSセレクターまたはXPath式:main
  • コンテンツ
    • コンテンツの使用元:抽出された値
    • 抽出されたコンテンツの格納形式:文字列

これらの条件を入力したら[保存][ルールの保存]の順にクリックします。


ElasticsearchとESREを使用する

Elastic Learned Sparse Encoderでデータをインジェストして検索する

ベクトル検索の開始にあたって求められる上記の推奨条件を確認し、その方法で問題なければ、左側の[kNNベクトル検索でデータを検索する]に移動して、指示に従います。

これではなく、Elasticのすぐに使えるセマンティック検索モデルであるElastic Learned Sparse Encoderを使用する場合は、次の指示をご確認ください。

これを行うには、パイプラインを選択してから画面上部の[コピーとカスタマイズ]を選択して、カスタムパイプラインを開放します。次に、[機械学習の推論パイプライン][デプロイ]を選択して、モデルをダウンロードし、お使いのElasticsearch環境にインストールします。

デプロイが完了したら、[単一スレッドで開始][+推論パイプラインの追加]の順に選択します。次に、以下を実行します。

  1. 新規または既存のパイプラインを選択する
  2. 名前を付ける
  3. 最後に、選択したトレーニング済みのMLモデルのドロップダウンで、[ELSERテキスト拡張]を選択し、[続行]をクリックします。

ここで、ELSERテキスト拡張を適用するフィールドを選択する必要があります。"title"と"main"をソースフィールドとして選択し、[追加]を選択します。

次に、[続行]をクリックします。

[パイプライン結果のテスト]のステップをスキップするために[続行]をクリックし、[パイプラインの作成]をクリックします。

これでパイプラインが作成されたので、右上の[クローリング]を選択してから[このインデックスのすべてのドメインをクローリング]を選択します。

ここからは、探している情報を検索してみましょう。これを行うために推奨される方法は2通りあります。

  • 開発ツールを使用する
  • アプリケーションのエンドポイントとして検索アプリケーション機能を活用する

それぞれ、次のような場面で使用します。

  • (Webアプリケーションなどに)検索を実装しようとしている開発者である場合は、開発ツールを使用して、インデックス済みデータからの検索結果のテストと調整を行うとよいでしょう。
  • 検索エンドポイントを作成して、検索リクエストを独自のアプリケーションから送信し、そのアプリケーションで検索結果を返す場合は、検索アプリケーション機能を使用するとよいでしょう。

次の2つの短い動画を確認して、開発ツールと検索アプリケーション機能の使い方についての概要をご覧ください。このガイドツアーでも同様のことを確認できます。


次のステップ

Elastic Cloudを使用したデータのセマンティック検索を設定するためにお時間を割いていただき、ありがとうございました。Elasticの導入を始めるにあたって、環境全体でデプロイを行うときにユーザーとして管理すべき運用、セキュリティ、データの要素について理解しておいてください。