【勉強会メモ】Search Engineering Tech Talk 2019 Summer


はじめに

先日 検索技術勉強会 に参加しました。
その際個人的に印象に残った点をまとめます。

イベント概要

Search Engineering Tech Talk 2019 Summer

検索技術勉強会の目的は、「検索」/「検索システム」にまつわる技術や手法に関して共有できる場を提供することです。
検索エンジンごとの勉強会などもありますが、検索エンジンには関係なく、「検索」というシステム、サービスを作る上で共通の解決すべき課題があります。
これらの課題をみんながどのように解決しているのかといった知識を共有できる場になればと思っています。

発表

「うどん」の検索結果には何を出すべきか / 李晟圭さん

  • Suggest
    • Suggestの目的はユーザが求めているものとRettyが持っている情報のマッピング(ID化)
    • エリアにも店名にもなりうる問題
      • 例.恵比寿 ざぶとん うどん
      • UIで対応(エリアと店名それぞれの入力枠を設ける)
    • 入力内容や時間帯によってはレコメンド要素の強いサジェストが可能
      • 例.エリア入力
        • 恵比寿 -> 恵比寿 焼肉 焼鳥
      • 例.時間帯が「お昼」の場合
        • 恵比寿 -> 恵比寿 カフェ ランチ
  • Search
    • 店名にもジャンルにもなりうるものをどう検索結果として表示するか
      • 例.うどん(五反田のカレーの名店)
      • 店名もジャンルもどちらも出す
      • どちらも一致した場合は店名を優先
    • 駅で探す場合の表示順は距離によるスコアリング
      • 駅によって距離をチューニング
      • 単純に駅近だとチェーン店だらけの可能性となる
      • チェーン店ではない新しい店の発見を促したい
      • 都心と地方の駅では店の密集度や範囲が変わってくる

Elasticsearch における類似度ベクトル検索のベストプラクティスを求めて / 伊藤敬彦さん

  • Elasticsearchのベクトル関連検索パッケージはないか?
  • Faissが速度も精度もよいとのこと
    • でもElasticsearchで実現させたい
  • この記事によると、Luceneが提供するkd木を使用したプラグインがあるみたい
    • このプラグインとさっきのElasticsearchのベクトル関連検索パッケージを利用すれば高速検索が実現できそう
      • 最初にkd木でざっくり検索しておいて、コサイン類似度を検索してランキングし直す
      • word2vecで10万単語のベクトル(8次元、200次元)をElasticsearchへ投入して確認してみる
      • 結果として速度も精度も思いのほか良い
      • Luceneを再ビルドすれば絞込みベクトルの大きさ(デフォルト8)を変更できるっぽい

検索の運用って 難しいよねって話 / 凡人ぷろぐらまさん

  • 属人化した状況では障害時の対応が大変
  • マニュアル作成や知見の共有を行い個人依存しないようにする
  • 環境の構築から経験してもらい環境の苦手意識を減らす
    • Dockerを使うことでラクに構築できるようになった

おわりに

  • 同じ検索ワードでも検索対象(エリア、ジャンル、目的、店舗)によって、それぞれ工夫ポイントがある
  • kd木、類似度ベクトル等これまで関わりのなかった分野だが非常に興味深い
  • 知見は共有してなるべく特定の人に依存しないですむ「仕組み化」が重要