12 ポイント 投稿者 xguru 2020-10-29 | 2件のコメント | WhatsAppで共有
  • OkCupidがオープンソース検索エンジンとしてVespaを選んだ理由

  • デーティングのおすすめ相手をリアルタイムのランキングに応じて変える必要があるが、従来のマッチングシステムでは変化し続けるユーザーの状態を素早く反映するのが難しい

  • ElasticSearchはインメモリの部分更新をサポートしていない

→ ドキュメントの大半は静的だが、ユーザー情報(いいね、人との接続/パス、メッセージング)は動的に継続して変化する

  • Vespa:ビッグデータ向けのオープンソース検索エンジン(データ分析よりもサービング目的に最適化)

→ ドキュメント全体を再インデックスする必要なく、インメモリの部分更新をサポート(ノードあたり1秒に40〜50Kの更新が可能)

→ 柔軟なランキングフレームワークを提供し、クエリ時に処理可能

→ TensorFlowなどの機械学習モデルと直接連携

→ REST呼び出し時にYQL(Yahoo Query Language)を使ったクエリが可能

→ Javaコンポーネントを利用してロジックをカスタマイズ可能

→ 拡張性の面ではシャードを意識する必要がない。ノードを追加/削除するたびにデータが自動的に復旧し、レプリカから再配置される

  • VespaのほうがOkCupidの内部事情により適している

→ OkCupidはユーザーに関する多様な情報を統合して人をマッチングする

→ フィルターと並び替え基準がそれぞれ100個を超え、今も増え続けているため、このワークフローのサポートにVespaが適している

→ データ書き込みとクエリも従来のマッチングシステムと類似している

→ ランキングフレームワークがはるかに柔軟で直感的

→ ElasticSearchの奇妙なクエリ構造より、YQLの表現力のほうが優れている

→ 自動データ配置機能が小規模チームに適している

2件のコメント

 
xguru 2020-11-01

Vespa の歴史と価値に関する韓国語の紹介文

オープンソースの Yahoo Vespa https://web.archive.org/web/20210922122357/…
(2023年現在、ブログが消えてしまったため、Wayback Machine のリンクに差し替えてあります)

「Vespa はオートバイのブランド名でもありますが、Vertical Search Platform の略語でもあります」
「Yahoo が持つ中核技術のうち、決して公開しないのではと思えるものとして常に言及されるものの中でも、Vespa は五本の指に入ります」
「Vespa は検索エンジンを中心に据えた統合コンテンツ処理プラットフォームのコンポーネント群です。簡単に言えば検索エンジンと考えてよいですが、一般的な Solr や Elastic のような検索エンジンよりも、周辺に持つ付属コンポーネントがはるかに多いです。」

 
xguru 2020-10-29

かなり長い記事なので、後半では実際にVespaを適用したOkCupidのシステム構成から検索クエリ(YQL)なども紹介されているため、原文を参照してください。

記事の最後にもありますが、ElasticSearchのほうがはるかに広く使われていて、Vespaはまだコミュニティが大きくないのが欠点です。

ただ、ここで見られるように、継続的に変化しなければならない検索においては、Vespaも優れた代替になり得るように思います。

デート相手のマッチングを例に挙げていますが、eコマース検索も最近はリアルタイムで変化する必要があるため、より良い結果を出せるはずです。