Elasticsearch コンテンツリポジトリへの接続

ドキュメント、記事、ナレッジベースエントリのインテリジェントな検索を可能にするために、エージェントを Elasticsearch 上のコンテンツリポジトリに接続します。 Elasticsearch と統合することで、エージェントがユーザーとの対話中に関連するコンテンツを検索して返すことができ、応答の精度と有用性が向上します。

あなたのエージェントを Elasticsearch

手順に従って、 Elasticsearch インスタンスに接続してください:

注: 別のナレッジ・ソースがすでに接続されている場合、 Choose knowledge + オプションは表示されません。 ソースを切り替えるには、「 ソースを置き換える 」をクリックし、新しいソースを選択し、「 わかりました 」をクリックして確認します。 ソースを置き換えると、以前のリポジトリの詳細とファイルはすべて削除され、復元できなくなります。

  1. エージェント設定ページで、 知識セクションに移動します。

  2. Choose knowledge +をクリックする。

  3. ソースの追加 ]で[ 新しい知識 ]をクリックします。

  4. を選択し Elasticsearch を選択し、「 次へ」をクリックします。

  5. Elasticsearch urlの下に、 Elasticsearch クラスタのエンドポイント URL を入力します。

  6. Elasticsearch port(オプション )に、 Elasticsearch クラスターに接続するポート番号を入力します。

  7. Choose authentication type から、 Basic authentication または API key を選択します。

    • Basic authentication の場合は、ユーザー名とパスワードを入力してください。
    • API key の場合は、 Elasticsearch API キーを指定する。
  8. 次へ」をクリックして進みます。 Elasticsearch インスタンスからアクセスしたい検索インデックスを構成し、検索結果で使用されるフィールドをマッピングします。

  9. Elasticsearch インデックスに、 Elasticsearch インデックス名を入力する。 複数のインデックスはサポートされていません。

  10. Configure result content セクションで、指定したインデックスのフィールドを検索レスポンスの対応するフィールドにマッピングする:

    1. タイトル: 検索結果のタイトル。 検索結果タイトルとして、コレクション・フィールドの title、name、または同様のタイプを使用します。
    2. 本文: 検索結果の説明。 検索結果の本文として、コレクション・フィールドの abstract、summary、または highlight を使用します。
    3. URL: このフィールドには、検索結果の末尾に含める任意のフッター・コンテンツを取り込むことができます。

    高度 Elasticsearch な設定でクエリ本体を設定してネストされたドキュメントを検索する場合、 タイトル本文、および [ URL フィールド名] が Elasticsearch インデックス内の内部ドキュメントのフィールドから取得されていることを確認する必要があります。 ネストされたクエリの使用に関する詳細については、. Elasticsearchのクエリ本体の構成を参照してください。

    Elasticsearch の詳細設定についてはカスタムフィルターとクエリーボディの設定を参照してください。

  11. 次へ」をクリックして進みます。

  12. ナレッジの詳細セクションで

  13. 設定を保存します。

Elasticsearch の設定を更新

Elasticsearch コンテンツリポジトリの設定を変更するには:

  1. 知識セクションへ。
  2. 選択したナレッジ・ソースの横にある垂直の省略記号 (↪Sm_22EE) をクリックします。
  3. 詳細の編集を選択し、設定を更新する。
  4. 設定を保存します。

Elasticsearch リポジトリを削除する

Elasticsearch コンテンツリポジトリを削除するには:

  1. 知識セクションへ。
  2. 選択したナレッジ・ソースの横にある垂直の省略記号 (↪Sm_22EE) をクリックします。
  3. 削除」をクリックします。

カスタムフィルタとクエリボディの設定

Elasticsearch の詳細設定セクションで、 Elasticsearch のクエリ結果とクエリボディのカスタムフィルタを設定します。 この構成はオプションです。

カスタム結果フィルタの設定

カスタム結果フィルターの設定 Elasticsearch (オプション) フィールドでは、クエリ本文に応じてコンテンツを並べ替えるフィルターを作成できるよう、フィルターをオブジェクトの配列として定義します。 詳細については、 カスタムフィルターの設定を参照してください Elasticsearch

クエリ・ボディの設定

Configure query body for Elasticsearch (オプション) フィールドに、クエリ本体を入力します。

クエリーボディは、ユーザーリクエストを検索が期待するフォーマットに操作するために使用される。 クエリーフォーム、検索フィールド、フィルター、クエリーサイズをコントロールします。 REST APIでは、クエリボディは、 Elasticsearch に対する _search リクエストの POST ボディを表すオブジェクトである。 クエリーボディには、顧客のクエリーを表す "$QUERY" トークンと、検索設定またはステップレベルで定義されたフィルターの配列を表す "$FILTER" トークンがあります。

デフォルトでは、 Elasticsearch との統合はキーワード検索を使用しますが、クエリボディをエージェントの高度な Elasticsearch 設定として構成することで、以下のような、より高度な検索テクニックを有効にすることができます:

  • ELSERによる意味検索。
  • k-nearest neighbor ( kNN ) 密なベクトル探索。
  • 入れ子になった文書を検索する入れ子クエリ。
  • ハイブリッド検索
  • セマンティック・テキスト・フィールドで検索する。

クエリ本体のさまざまな種類の使用例に関する詳細については、 「クエリ本体の設定」 を参照してください Elasticsearch

API _searchElasticsearch リクエスト本文の詳細については、 ドキュメント Elasticsearch 内の 「検索API 外部ページへのリダイレクト用アイコン。 リクエスト本文 Elasticsearch 」を参照してください。

コンテキスト変数を渡す

Elasticsearch フィルタ・テンプレートでコンテキスト変数を参照することで、フィルタをダイナミックにすることができます。 これにより、ユーザーまたはセッションのコンテキストに基づく値の実行時置換が可能になり、クエリがより柔軟でパーソナライズされたものになります。

仕組み

  • コンテンツリポジトリで、フィルタを設定し、コンテキスト変数をフォーマットで参照する: {context_var}
  • エージェントが実行されると、そこからコンテキストを取得する:
    • ランズエンドポイントペイロード
    • セッションに関連付けられたJWTトークン
  • ナレッジランタイムは、フィルターテンプレートのコンテキスト変数を、コンテキストの実際の値に置き換えます

Elasticsearch フィルタ置換の例

それぞれの例には以下のものが含まれる:

  • filter:動的置換のためのフィルターフィールドに入力された、コンテキスト変数への参照を持つテンプレート。

  • final_filter:コンテキスト変数を実際の値に置き換えた後のテンプレート。 クエリーはデータ検索のために Elasticsearch。

  • context_variable:置換に使われるコンテキスト変数を定義するキーと値のペアのセット。

例 1:

    filter = [{"bool": {"should": [{"match": {"title": "{location}"}},
                                     {"match": {"text": "{name}"}},
                                     {"match": {"id": "{title}"}}]}}]
    context_variable = {"location": "US", "name": "Pooja", "title": "developer"}
    final_filter = [{"bool": {"should": [{"match": {"title": "US"}},
                                              {"match": {"text": "Pooja"}},
                                              {"match": {"id": "developer"}}]}}]

例 2:

    filter = [{"terms":{"title":["dialog","{topic}"]}}]
    context_variable = {"topic": "action"}
    final_filter = [{"terms":{"title":["dialog","action"]}}]

例 3:

    filter = [{"bool": {"should": [{"match": {"title": "{location}"}},
                                     {"match": "{name}"}
                                     ]}}]
    context_variable = {"location": "US", "name": {"text": "Pooja"}}
    final_filter = [{"bool": {"should": [{"match": {"title": "US"}},
                                              {"match": {"text": "Pooja"}},
                                              ]}}]

次のタスク

Elasticsearch に接続した後、リポジトリの接続データや、文書を取得するために提供した設定を変更することができます。

また、エージェントが検索結果をどのように使用するかを微調整したい場合は、 「検索結果の設定の編集」参照してください。