Upgrade to Pro — share decks privately, control downloads, hide ads and more …

8.0からのkNNはどう変わったのか / How kNN search changed in the Elasticsearch 8.0

Kazuma Arimura
February 16, 2022

8.0からのkNNはどう変わったのか / How kNN search changed in the Elasticsearch 8.0

Kazuma Arimura

February 16, 2022
Tweet

More Decks by Kazuma Arimura

Other Decks in Technology

Transcript

  1.    US事業について
 Got stuff you don’t use? Sell or buy

    almost anything from home. メルカリは、ミッションである「新たな価値を生みだす世界的なマーケットプレイスを創る」ことを目指し、創業翌年から海外展開を推 し進めています。2014年9月にUS事業を開始し、現地の嗜好やマーケットの特徴に合わせたブランディングやUI・UXの改良、配送 網の構築等に取り組んでいます。巨大かつ多様性に富む人口基盤を有するUSでの成功が、メルカリのミッションを実現する上で重 要なマイルストーンであると認識しており、注力しています。
 3 Your Marketplace Factbookより引用

  2. 主な変更点について - Approximate kNNのサポート dense_vector type指定時のオプションが追加 • index : trueにすると、kNN

    Search APIで利用可能に • similarity : ベクトルの類似度計算の際に用いる尺度 ◦ l2_norm, dot_product, cosine をサポート • index_option : ベクトルのindexing algorithmの設定詳細
  3. 主な変更点について - Approximate kNNのサポート dense_vector type指定時のオプションが追加 • index : trueにすると、kNN

    Search APIで利用可能に • similarity : ベクトルの類似度計算の際に用いる尺度 ◦ l2_norm, dot_product, cosine をサポート • index_option : ベクトルのindexing algorithmの設定詳細 前処理を加えることでkNNの計算対象範囲を狭め高速化
  4. 主な変更点について - Approximate kNNのサポート kNNとANNの違い kNN : クエリが与えられた時、全候補に対しベクトル間の類似度を 正確に計算 ANN

    : クエリが与えられた時、近似的に最も近いベクトルを探す ANNで用いられるアルゴリズム例 [1] • Locality Sensitive Hashing • Tree / Space Partitioning • Graph traversal ◦ 今回採用されたHNSWもこの一種
  5. ベンチマーク : 1. インデキシング性能 比較条件 • # docs : 60,000

    • docs/req : 100 • 並列数 : 4 • 比較対象 ◦ index=falseのdense_vector ◦ index=trueのdense_vector
  6. ベンチマーク : 1. インデキシング性能 比較結果 60,000件程度では差異なし 件数が増えると影響あるかも? What's new in

    8.0 # New kNN search API “In exchange for slower indexing and imperfect accuracy, the new kNN search API lets you run approximate kNN searches on larger datasets and at faster speeds.”
  7. ベンチマーク : 2. 検索性能 比較条件 • 対象インデックス : 1で作成したもの(784次元 ×

    60,000件) • Top K : 10 • ANNの際のnum_candidates : 100 ◦ 各shard内で何件候補を選出するか
  8. ベンチマーク : 2. 検索性能 ドキュメント数N倍 kNN ANN 50%ile (original) 60

    ms 9 ms 90%ile (original) 60 ms 10 ms 50%ile (# doc × 2) 119 ms 10 ms 90%ile (# doc × 2) 119 ms 11 ms 50%ile (# doc × 3) 178 ms 11 ms 90%ile (# doc × 3) 179 ms 12 ms kNN(script)はドキュメント数に比例、ANNは穏やか
  9. We are hiring!! • Software Engineer, Search - US App

    https://apply.workable.com/mercari/j/7C11672DDA/ • Engineering Manager, Search - US App https://apply.workable.com/mercari/j/1CDC7D5CEF/
  10. 参考文献 • [1] : [CVPR20 Tutorial] Billion-scale Approximate Nearest Neighbor

    Search https://speakerdeck.com/matsui_528/cvpr20-tutorial-billion-scale-approximate-nearest-neighbor-search • [2] : Hierarchical Navigable Small Worlds (HNSW) https://www.pinecone.io/learn/hnsw/ • [3] : Fashion-MNIST https://github.com/zalandoresearch/fashion-mnist • [4] : kNN Search API | Elasticsearch https://www.elastic.co/guide/en/elasticsearch/reference/8.0/knn-search-api.html