検索のパラメータチューニングを効率化するツールについて

TVerでバックエンドやデータ基盤を担当している黒瀬です。

こちらは、TVer Advent Calendar 2022の2日目の記事です。

今回はTVerの検索基盤のパラメータチューニングを効率化する内部確認用の管理ツールについてご紹介いたします。

背景と課題

現在、TVerではAmazon OpenSearch Serviceで構築した検索基盤によって、キーワード検索の機能を提供しています*1

このキーワード検索は、TVerで公開されているコンテンツのうち、タイトルなどのメタデータがマッチするものを検索し、その関連度に応じて検索結果への表示や順序を制御しています。

例えば、キーワードによくマッチするものを関連度が大きいものとして、検索結果の上位に表示するようにしています。

ここで、関連度の計算においては、コンテンツのメタデータごとに関連度の重みづけを行っていますが、この重みづけ如何によっては、一見してキーワードとの関連が分かりづらいコンテンツが表示されたり、逆に関連があるにも関わらず検索結果に出てきにくいコンテンツが発生したりします。

そのため、この重みづけ=パラメータの調整は何度も検索結果などを勘案しつつ、随時更新していくことが必要です。

ところが、従来この重みづけは次のような実装になっていました。

  • 課題1: ビルド時に固定されており、そのため重みづけを外から変更する手段がない
  • 課題2: 本番環境にリリースする前に重みづけによる検索結果の挙動を確認する手段がない

そのため、パラメータ調整の結果を評価するにも、毎回本番環境へデプロイしては確認するといった手間が必要となり、簡便な調整方法がありませんでした。

アプローチ

そこで、既存の仕組みをできるだけ活用しつつパラメータ調整をする仕組みとして、パラメータをブラウザのUIで操作できる内部確認用の管理ツールを作成しました。

バックエンドとしては、検索リクエストにパラメータを指定することでパラメータを調整することができるエンドポイントを用意しました。これにより、上記の課題1をまず解決しています。

構成図

次に、本番環境と同じデータを対象に検索しつつ、重みづけを変更しながら検索結果を確認できるツールをフロントエンドに用意することで、上記の課題2を解決しました。これは、コンテンツのメタデータごとの重みづけをスライダーで調整するUI・検索リクエストを送信するボタン、およびそれによって検索されたコンテンツ一覧の表示領域で構成されており、そのフロントエンドからパラメータ調整用のエンドポイントへリクエストする仕組みになっています。

パラメータチューニングツールの画面例(サービスで設定されている実際のパラメータとは異なります)

このツールの使い方は簡単で、各スライダーを所望の値に指定してボタンを押すだけで、画面の下部にそのパラメータで検索した場合にどんな検索結果が返ってくるかがすぐにわかるようになっています。

これにより、検索の挙動を調整する必要が出た際に、スライダーを調整してはその検索結果を現行のものと比較し、結果が改善されたかどうかをすぐにフィードバックとして得られるようになり、パラメータチューニングが大きく省力化されました。

今後の展望

ノイズとなる検索結果のコンテンツを省きつつ出すべきコンテンツは出すためには、さらに他の観点でも検索結果を評価する仕組みが必要と考えています。

例えば、あるコンテンツがヒットした理由であったり、OpenSearchへの検索オプションを変更した際にどのような効果が出るかといった点です。

これらについても、本番環境へのログインなどせずに簡単に遂行できるような仕組みを用意することで、迅速にサービス改善ができるのではないかと考えており、今後取り組んでいきます。

*1:Amazon OpenSearch Serviceへのデータ取り込みについては、こちらの資料も併せてご覧ください。techblog.tver.co.jp