Slide 1

Slide 1 text

1 グラフを用いた近似最近傍探索の 理論と応用 松井勇佑 東京大学 YANS第18回シンポジウム チュートリアル 2023/8/30

Slide 2

Slide 2 text

2 松井勇佑 ✓ コンピュータビジョン ✓ 大規模探索 http://yusukematsui.me 東京大学 情報理工学系研究科 講師 @utokyo_bunny ARM 4-bit PQ [Matsui+, ICASSP 22] Relative NN-Descent [Ono & Matsui, ACMMM 23] @matsui528

Slide 3

Slide 3 text

本日の発表 CVPR 2023 Tutorial “Neural Search in Action” のうち松井発表分である ”Theory and Applications of Graph-based Search“ の日本語版 https://matsui528.github.io/cvpr2023_tutorial_neural_search/ https://speakerdeck.com/matsui_528/cvpr23-tutorial-theory-and-applications-of-graph-based-search + NLPに関する内容

Slide 4

Slide 4 text

4 ➢ 背景 ➢ グラフを用いた近似最近傍探索 ✓ 基本 (構築と探索) ✓ 基本的特性 ✓ 特徴的な性質 ➢ 代表的手法 ✓ HNSW, NSG, NGT, Vamana ➢ 議論

Slide 5

Slide 5 text

5 ➢ 背景 ➢ グラフを用いた近似最近傍探索 ✓ 基本 (構築と探索) ✓ 基本的特性 ✓ 特徴的な性質 ➢ 代表的手法 ✓ HNSW, NSG, NGT, Vamana ➢ 議論

Slide 6

Slide 6 text

Search 𝒙1 , 𝒙2 , … , 𝒙𝑁 𝒙𝑛 ∈ ℝ𝐷 6 ➢𝑁 本の𝐷次元データベースベクトル: 𝒙𝑛 𝑛=1 𝑁 最近傍探索 (Nearest Neighbor Search; NN)

Slide 7

Slide 7 text

0.23 3.15 0.65 1.43 Search 0.20 3.25 0.72 1.68 𝒒 ∈ ℝ𝐷 𝒙74 argmin 𝑛∈ 1,2,…,𝑁 𝒒 − 𝒙𝑛 2 2 Result 𝒙1 , 𝒙2 , … , 𝒙𝑁 𝒙𝑛 ∈ ℝ𝐷 7 ➢𝑁 本の𝐷次元データベースベクトル: 𝒙𝑛 𝑛=1 𝑁 ➢クエリ𝒒が与えられたとき、似ているものを データベースベクトル中から探す ➢コンピュータ科学における基本的な処理の1つ ➢ナイーブ解法は線形探索:𝑂 𝑁𝐷 で遅い  最近傍探索 (Nearest Neighbor Search; NN) 「argmax + 内積」もよく使われます。 本発表ではこの部分は気にしません。

Slide 8

Slide 8 text

0.23 3.15 0.65 1.43 Search 0.20 3.25 0.72 1.68 𝒒 ∈ ℝ𝐷 𝒙74 argmin 𝑛∈ 1,2,…,𝑁 𝒒 − 𝒙𝑛 2 2 Result 𝒙1 , 𝒙2 , … , 𝒙𝑁 𝒙𝑛 ∈ ℝ𝐷 近似最近傍探索 (Approximate NN; ANN) ➢より高速な探索 ➢答えは厳密な最近傍でなくてもいい ➢トレードオフ:速度・精度・メモリ消費 ➢色々な分野で発達:CV, NLP, DB, Web, Math, … 8

Slide 9

Slide 9 text

0.23 3.15 0.65 1.43 Search 0.20 3.25 0.72 1.68 𝒒 ∈ ℝ𝐷 𝒙74 argmin 𝑛∈ 1,2,…,𝑁 𝒒 − 𝒙𝑛 2 2 Result 𝒙1 , 𝒙2 , … , 𝒙𝑁 𝒙𝑛 ∈ ℝ𝐷 近似最近傍探索 (Approximate NN; ANN) ➢より高速な探索 ➢答えは厳密な最近傍でなくてもいい ➢トレードオフ:速度・精度・メモリ消費 ➢色々な分野で発達:CV, NLP, DB, Web, Math, … 9 ➢ 今日の話題では 𝑁 < 109 ➢ 全データはメモリに載る

Slide 10

Slide 10 text

10 ユースケース1:マルチモーダル検索 Image are from: https://github.com/haltakov/natural-language-image-search Credit: Photos by Genton Damian, bruce mars, Dalal Nizam, and Richard Burlton on Unsplash

Slide 11

Slide 11 text

11 ユースケース1:マルチモーダル検索 Image are from: https://github.com/haltakov/natural-language-image-search Credit: Photos by Genton Damian, bruce mars, Dalal Nizam, and Richard Burlton on Unsplash CLIP Image Encoder 𝒙1

Slide 12

Slide 12 text

12 ユースケース1:マルチモーダル検索 Image are from: https://github.com/haltakov/natural-language-image-search Credit: Photos by Genton Damian, bruce mars, Dalal Nizam, and Richard Burlton on Unsplash CLIP Image Encoder 𝒙1 , 𝒙2 ,

Slide 13

Slide 13 text

13 ユースケース1:マルチモーダル検索 Image are from: https://github.com/haltakov/natural-language-image-search Credit: Photos by Genton Damian, bruce mars, Dalal Nizam, and Richard Burlton on Unsplash 𝒙1 , 𝒙2 , … , 𝒙𝑁 … CLIP Image Encoder

Slide 14

Slide 14 text

14 ユースケース1:マルチモーダル検索 Image are from: https://github.com/haltakov/natural-language-image-search Credit: Photos by Genton Damian, bruce mars, Dalal Nizam, and Richard Burlton on Unsplash “Two dogs playing in the snow” 0.23 3.15 0.65 1.43 Search 𝒙1 , 𝒙2 , … , 𝒙𝑁 CLIP Text Encoder … CLIP Image Encoder

Slide 15

Slide 15 text

15 ユースケース1:マルチモーダル検索 Image are from: https://github.com/haltakov/natural-language-image-search Credit: Photos by Genton Damian, bruce mars, Dalal Nizam, and Richard Burlton on Unsplash “Two dogs playing in the snow” 0.23 3.15 0.65 1.43 Search 0.20 3.25 0.72 1.68 argmin 𝒒 − 𝒙𝑛 2 2 Result 𝒙1 , 𝒙2 , … , 𝒙𝑁 CLIP Text Encoder … CLIP Image Encoder

Slide 16

Slide 16 text

16 ユースケース1:マルチモーダル検索 Image are from: https://github.com/haltakov/natural-language-image-search Credit: Photos by Genton Damian, bruce mars, Dalal Nizam, and Richard Burlton on Unsplash “Two dogs playing in the snow” 0.23 3.15 0.65 1.43 Search 0.20 3.25 0.72 1.68 argmin 𝒒 − 𝒙𝑛 2 2 Result 𝒙1 , 𝒙2 , … , 𝒙𝑁 CLIP Text Encoder … CLIP Image Encoder ➢ エンコーダーはシステムの精度の上限を決める ➢ 近似最近傍探索は精度・速度・メモリのトレードオフを決める

Slide 17

Slide 17 text

17 ユースケース2:LLM + embedding Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" ChatGPT 3.5 (trained in 2021)

Slide 18

Slide 18 text

18 ユースケース2:LLM + embedding Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" ChatGPT 3.5 (trained in 2021) “I'm sorry, but as an AI language model, I don't have information about the future events.” Ask 

Slide 19

Slide 19 text

19 ユースケース2:LLM + embedding Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" ChatGPT 3.5 (trained in 2021)

Slide 20

Slide 20 text

20 ユースケース2:LLM + embedding Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" ChatGPT 3.5 (trained in 2021) “Damir Sharipzyanov¥n¥n=Career…” “Lviv bid for the 2022 Winter…” … “Chinami Yoshida¥n¥n==Personal…”

Slide 21

Slide 21 text

21 ユースケース2:LLM + embedding 𝒙1 , Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" ChatGPT 3.5 (trained in 2021) “Damir Sharipzyanov¥n¥n=Career…” “Lviv bid for the 2022 Winter…” … “Chinami Yoshida¥n¥n==Personal…” Text Encoder

Slide 22

Slide 22 text

22 ユースケース2:LLM + embedding 𝒙1 , 𝒙2 , Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" ChatGPT 3.5 (trained in 2021) “Damir Sharipzyanov¥n¥n=Career…” “Lviv bid for the 2022 Winter…” … “Chinami Yoshida¥n¥n==Personal…” Text Encoder

Slide 23

Slide 23 text

23 ユースケース2:LLM + embedding 𝒙1 , 𝒙2 , … , 𝒙𝑁 Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" ChatGPT 3.5 (trained in 2021) “Damir Sharipzyanov¥n¥n=Career…” “Lviv bid for the 2022 Winter…” … “Chinami Yoshida¥n¥n==Personal…” Text Encoder

Slide 24

Slide 24 text

24 ユースケース2:LLM + embedding 0.23 3.15 0.65 1.43 𝒙1 , 𝒙2 , … , 𝒙𝑁 Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" ChatGPT 3.5 (trained in 2021) “Damir Sharipzyanov¥n¥n=Career…” “Lviv bid for the 2022 Winter…” … Text Encoder “Chinami Yoshida¥n¥n==Personal…” Text Encoder

Slide 25

Slide 25 text

25 ユースケース2:LLM + embedding 0.23 3.15 0.65 1.43 0.20 3.25 0.72 1.68 argmin 𝒒 − 𝒙𝑛 2 2 Result 𝒙1 , 𝒙2 , … , 𝒙𝑁 Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" ChatGPT 3.5 (trained in 2021) Search “Damir Sharipzyanov¥n¥n=Career…” “Lviv bid for the 2022 Winter…” … Text Encoder “Chinami Yoshida¥n¥n==Personal…” Text Encoder “List of 2022 Winter Olympics medal winners…”

Slide 26

Slide 26 text

26 ユースケース2:LLM + embedding 0.23 3.15 0.65 1.43 0.20 3.25 0.72 1.68 argmin 𝒒 − 𝒙𝑛 2 2 Result 𝒙1 , 𝒙2 , … , 𝒙𝑁 Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" Search Update “Damir Sharipzyanov¥n¥n=Career…” “Lviv bid for the 2022 Winter…” … Text Encoder “Chinami Yoshida¥n¥n==Personal…” Text Encoder “Who won curling gold at the 2022 Winter Olympics? Use the bellow articles: List of 2022 Winter Olympics medal winners…” “List of 2022 Winter Olympics medal winners…” ChatGPT 3.5 (trained in 2021)

Slide 27

Slide 27 text

27 ユースケース2:LLM + embedding 0.23 3.15 0.65 1.43 0.20 3.25 0.72 1.68 argmin 𝒒 − 𝒙𝑛 2 2 Result 𝒙1 , 𝒙2 , … , 𝒙𝑁 Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" “Niklas Edin, Oskar Eriksson, …” Search Update ☺ “Damir Sharipzyanov¥n¥n=Career…” “Lviv bid for the 2022 Winter…” … Text Encoder “Chinami Yoshida¥n¥n==Personal…” Text Encoder “Who won curling gold at the 2022 Winter Olympics? Use the bellow articles: List of 2022 Winter Olympics medal winners…” “List of 2022 Winter Olympics medal winners…” ChatGPT 3.5 (trained in 2021)

Slide 28

Slide 28 text

28 ユースケース2:LLM + embedding 0.23 3.15 0.65 1.43 0.20 3.25 0.72 1.68 argmin 𝒒 − 𝒙𝑛 2 2 Result 𝒙1 , 𝒙2 , … , 𝒙𝑁 Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" “Niklas Edin, Oskar Eriksson, …” Search Update ☺ “Damir Sharipzyanov¥n¥n=Career…” “Lviv bid for the 2022 Winter…” … Text Encoder “Chinami Yoshida¥n¥n==Personal…” Text Encoder “Who won curling gold at the 2022 Winter Olympics? Use the bellow articles: List of 2022 Winter Olympics medal winners…” “List of 2022 Winter Olympics medal winners…” ChatGPT 3.5 (trained in 2021) Embedding+探索はLLMに知識を 追加するもっとも簡単な方法

Slide 29

Slide 29 text

29 ユースケース2:LLM + embedding 0.23 3.15 0.65 1.43 0.20 3.25 0.72 1.68 argmin 𝒒 − 𝒙𝑛 2 2 Result 𝒙1 , 𝒙2 , … , 𝒙𝑁 Texts are from: https://github.com/openai/openaicookbook/blob/main/examples/Question_answering_using_embeddings.ipynb Icon credit: https://ja.wikipedia.org/wiki/ChatGPT "Who won curling gold at the 2022 Winter Olympics?" “Niklas Edin, Oskar Eriksson, …” Search Update ☺ “Damir Sharipzyanov¥n¥n=Career…” “Lviv bid for the 2022 Winter…” … Text Encoder “Chinami Yoshida¥n¥n==Personal…” Text Encoder “Who won curling gold at the 2022 Winter Olympics? Use the bellow articles: List of 2022 Winter Olympics medal winners…” “List of 2022 Winter Olympics medal winners…” ChatGPT 3.5 (trained in 2021) Embedding+探索はLLMに知識を 追加するもっとも簡単な方法 Vector DB???

Slide 30

Slide 30 text

30 技術を議論する際の3つのレベル Milvus Pinecone Qdrant ScaNN (4-bit PQ) [Guo+, ICML 2020] アルゴリズム ➢ 科学技術論文 ➢ 数学の話(が多い) ➢ 多くの場合、by 研究者 ライブラリ ➢ アルゴリズムの実装 ➢ 普通、探索機能のみ ➢ By 研究者、開発者、など サービス (例: vector DB) ➢ ライブラリ + (メタデータ扱い、 サービング、スケーリング、 IO、CRUD、など) ➢ 普通、by 会社 Product Quantization + Inverted Index (PQ, IVFPQ) [Jégou+, TPAMI 2011] Hierarchical Navigable Small World (HNSW) [Malkov+, TPAMI 2019] Weaviate Vertex AI Matching Engine faiss NMSLIB hnswlib Vald ScaNN jina

Slide 31

Slide 31 text

31 技術を議論する際の3つのレベル Milvus Pinecone Qdrant ScaNN (4-bit PQ) [Guo+, ICML 2020] アルゴリズム ➢ 科学技術論文 ➢ 数学の話(が多い) ➢ 多くの場合、by 研究者 ライブラリ ➢ アルゴリズムの実装 ➢ 普通、探索機能のみ ➢ By 研究者、開発者、など サービス (例: vector DB) ➢ ライブラリ + (メタデータ扱い、 サービング、スケーリング、 IO、CRUD、など) ➢ 普通、by 会社 Weaviate Vertex AI Matching Engine NMSLIB hnswlib Vald ScaNN jina 1つのライブラリは複数の アルゴを実装することもある  “faissは速い” ☺ “faissのPQは速い” Product Quantization + Inverted Index (PQ, IVFPQ) [Jégou+, TPAMI 2011] Hierarchical Navigable Small World (HNSW) [Malkov+, TPAMI 2019] faiss

Slide 32

Slide 32 text

32 技術を議論する際の3つのレベル Milvus Pinecone Qdrant ScaNN (4-bit PQ) [Guo+, ICML 2020] アルゴリズム ➢ 科学技術論文 ➢ 数学の話(が多い) ➢ 多くの場合、by 研究者 ライブラリ ➢ アルゴリズムの実装 ➢ 普通、探索機能のみ ➢ By 研究者、開発者、など サービス (例: vector DB) ➢ ライブラリ + (メタデータ扱い、 サービング、スケーリング、 IO、CRUD、など) ➢ 普通、by 会社 Product Quantization + Inverted Index (PQ, IVFPQ) [Jégou+, TPAMI 2011] Weaviate Vertex AI Matching Engine Vald ScaNN jina 1つのアルゴリズムは複数のライブラリに 実装されていることがある Hierarchical Navigable Small World (HNSW) [Malkov+, TPAMI 2019] faiss NMSLIB hnswlib

Slide 33

Slide 33 text

33 技術を議論する際の3つのレベル Milvus Pinecone Qdrant アルゴリズム ➢ 科学技術論文 ➢ 数学の話(が多い) ➢ 多くの場合、by 研究者 ライブラリ ➢ アルゴリズムの実装 ➢ 普通、探索機能のみ ➢ By 研究者、開発者、など サービス (例: vector DB) ➢ ライブラリ + (メタデータ扱い、 サービング、スケーリング、 IO、CRUD、など) ➢ 普通、by 会社 Product Quantization + Inverted Index (PQ, IVFPQ) [Jégou+, TPAMI 2011] Hierarchical Navigable Small World (HNSW) [Malkov+, TPAMI 2019] Weaviate Vertex AI Matching Engine faiss NMSLIB hnswlib Vald jina 1ライブラリ=1アルゴ もよくある ScaNN (4-bit PQ) [Guo+, ICML 2020] ScaNN

Slide 34

Slide 34 text

34 技術を議論する際の3つのレベル Pinecone Qdrant ScaNN (4-bit PQ) [Guo+, ICML 2020] アルゴリズム ➢ 科学技術論文 ➢ 数学の話(が多い) ➢ 多くの場合、by 研究者 ライブラリ ➢ アルゴリズムの実装 ➢ 普通、探索機能のみ ➢ By 研究者、開発者、など サービス (例: vector DB) ➢ ライブラリ + (メタデータ扱い、 サービング、スケーリング、 IO、CRUD、など) ➢ 普通、by 会社 Product Quantization + Inverted Index (PQ, IVFPQ) [Jégou+, TPAMI 2011] Vertex AI Matching Engine NMSLIB Vald ScaNN jina 1つのサービスは複数のライブラリを 使うことがある … また、アルゴリズムを フルスクラッチすること もある (例: Goで書き直す) Hierarchical Navigable Small World (HNSW) [Malkov+, TPAMI 2019] faiss hnswlib Milvus Weaviate

Slide 35

Slide 35 text

35 技術を議論する際の3つのレベル Milvus Pinecone Qdrant ScaNN (4-bit PQ) [Guo+, ICML 2020] アルゴリズム ➢ 科学技術論文 ➢ 数学の話(が多い) ➢ 多くの場合、by 研究者 ライブラリ ➢ アルゴリズムの実装 ➢ 普通、探索機能のみ ➢ By 研究者、開発者、など サービス (例: vector DB) ➢ ライブラリ + (メタデータ扱い、 サービング、スケーリング、 IO、CRUD、など) ➢ 普通、by 会社 Product Quantization + Inverted Index (PQ, IVFPQ) [Jégou+, TPAMI 2011] Hierarchical Navigable Small World (HNSW) [Malkov+, TPAMI 2019] Weaviate Vertex AI Matching Engine faiss NMSLIB hnswlib Vald ScaNN jina 今回は主にアルゴリズムを 解説します

Slide 36

Slide 36 text

36 𝑁 109 106 billion-scale million-scale Locality Sensitive Hashing (LSH) Tree / Space Partitioning Graph traversal 0.34 0.22 0.68 0.71 0 1 0 0 ID: 2 ID: 123 0.34 0.22 0.68 0.71 Space partition Data compression ➢ k-means ➢ PQ/OPQ ➢ Graph traversal ➢ etc… ➢ Raw data ➢ Scalar quantization ➢ PQ/OPQ ➢ etc… Look-up-based Hamming-based Linear-scan by Asymmetric Distance … Linear-scan by Hamming distance Inverted index + data compression For raw data: Acc. ☺, Memory:  For compressed data: Acc. , Memory: ☺

Slide 37

Slide 37 text

37 𝑁 109 106 billion-scale million-scale Locality Sensitive Hashing (LSH) Tree / Space Partitioning Graph traversal 0.34 0.22 0.68 0.71 0 1 0 0 ID: 2 ID: 123 0.34 0.22 0.68 0.71 Space partition Data compression ➢ k-means ➢ PQ/OPQ ➢ Graph traversal ➢ etc… ➢ Raw data ➢ Scalar quantization ➢ PQ/OPQ ➢ etc… Look-up-based Hamming-based Linear-scan by Asymmetric Distance … Linear-scan by Hamming distance Inverted index + data compression For raw data: Acc. ☺, Memory:  For compressed data: Acc. , Memory: ☺ 今日のトピック

Slide 38

Slide 38 text

38 𝑁 109 106 billion-scale million-scale Locality Sensitive Hashing (LSH) Tree / Space Partitioning Graph traversal 0.34 0.22 0.68 0.71 0 1 0 0 ID: 2 ID: 123 0.34 0.22 0.68 0.71 Space partition Data compression ➢ k-means ➢ PQ/OPQ ➢ Graph traversal ➢ etc… ➢ Raw data ➢ Scalar quantization ➢ PQ/OPQ ➢ etc… Look-up-based Hamming-based Linear-scan by Asymmetric Distance … Linear-scan by Hamming distance Inverted index + data compression For raw data: Acc. ☺, Memory:  For compressed data: Acc. , Memory: ☺ 松井CVPR20/MIRU2019 のチュートリを参照 ➢ https://speakerdeck.com/matsui_528/c vpr20-tutorial-billion-scale- approximate-nearest-neighbor-search ➢ https://speakerdeck.com/matsui_528/ji n-si-zui-jin-bang-tan-suo-falsezui-qian- xian 今日のトピック

Slide 39

Slide 39 text

39 𝑁 109 106 billion-scale million-scale Locality Sensitive Hashing (LSH) Tree / Space Partitioning Graph traversal 0.34 0.22 0.68 0.71 0 1 0 0 ID: 2 ID: 123 0.34 0.22 0.68 0.71 Space partition Data compression ➢ k-means ➢ PQ/OPQ ➢ Graph traversal ➢ etc… ➢ Raw data ➢ Scalar quantization ➢ PQ/OPQ ➢ etc… Look-up-based Hamming-based Linear-scan by Asymmetric Distance … Linear-scan by Hamming distance Inverted index + data compression For raw data: Acc. ☺, Memory:  For compressed data: Acc. , Memory: ☺ CVPR23チュートリのマーティン スライドを参照 松井CVPR20/MIRU2019 のチュートリを参照 ➢ https://speakerdeck.com/matsui_528/c vpr20-tutorial-billion-scale- approximate-nearest-neighbor-search ➢ https://speakerdeck.com/matsui_528/ji n-si-zui-jin-bang-tan-suo-falsezui-qian- xian 今日のトピック https://matsui528.github.io/cvpr 2023_tutorial_neural_search/ass ets/pdf/billion_scale_ann.pdf

Slide 40

Slide 40 text

40 ➢ 探索が活きる場面 ✓ 難しい問題を大規模だが単純な探索問題に落とし込めるとき ✓ 例:複雑な画像認識器 vs 単純kNN認識 ✓ 例:LLM + fine-tuning vs LLM + embedding ➢ 「大量データ」は世の中に案外ない ✓ 画像検索の場合、1 billion毎の意味のある画像は、実際は中々ない ✓ NLPでは1 billionの単語はありうる→相対的に探索が活きやすい?? 探索技術とNLPは相性が良い?? [Asai+, ACL 2023 Tutorial] Subset Retrieval Nearest Neighbor Machine Translation [Deguchi, Watanabe, Matsui, Utiyama, Tanaka, Sumita, ACL 2023]

Slide 41

Slide 41 text

41 ➢ 背景 ➢ グラフを用いた近似最近傍探索 ✓ 基本 (構築と探索) ✓ 基本的特性 ✓ 特徴的な性質 ➢ 代表的手法 ✓ HNSW, NSG, NGT, Vamana ➢ 議論

Slide 42

Slide 42 text

42 グラフ探索 ➢ データが全部メモリに載るなら、デファクトの方式 ➢ 実データに対し高速で高精度 ➢ billion級(メモリに載らない)でもやはり重要 ✓ グラフ探索アルゴリズムはbillion級探索システムの ビルディングブロック Images are from [Malkov+, Information Systems, 2013] ➢ クエリに向かってグラフを辿る ➢ 直感的に見えるが、結構ムズい ➢ アルゴリズムを詳細に見ます

Slide 43

Slide 43 text

43 グラフ探索 ➢ データが全部メモリに載るなら、デファクトの方式 ➢ 実データに対し高速で高精度 ➢ billion級(メモリに載らない)でもやはり重要 ✓ グラフ探索アルゴリズムはbillion級探索システムの ビルディングブロック Images are from [Malkov+, Information Systems, 2013] ➢ クエリに向かってグラフを辿る ➢ 直感的に見えるが、結構ムズい ➢ アルゴリズムを詳細に見ます 本チュートリの目的は、グラフ探索を ブラックボックスにしないこと

Slide 44

Slide 44 text

44 構築 Images are from [Malkov+, Information Systems, 2013] and [Subramanya+, NeruIPS 2019] 逐次追加アプローチ 改善アプローチ ➢ 現在のグラフに新しい 要素を逐次追加する ➢ 初期グラフを何度も改善する

Slide 45

Slide 45 text

45 構築 Images are from [Malkov+, Information Systems, 2013] and [Subramanya+, NeruIPS 2019] 逐次追加アプローチ 改善アプローチ ➢ 現在のグラフに新しい 要素を逐次追加する ➢ 初期グラフを何度も改善する

Slide 46

Slide 46 text

46 Images are from [Malkov+, Information Systems, 2013] 𝒙13 Graph of 𝒙1 , … , 𝒙90 構築:逐次追加アプローチ ➢1つのノードは、1本のデータベースベクトル

Slide 47

Slide 47 text

47 𝒙13 𝒙91 Graph of 𝒙1 , … , 𝒙90 Images are from [Malkov+, Information Systems, 2013] 構築:逐次追加アプローチ ➢1つのノードは、1本のデータベースベクトル ➢新しいベクトルに対し、

Slide 48

Slide 48 text

48 𝒙13 𝒙91 Graph of 𝒙1 , … , 𝒙90 Images are from [Malkov+, Information Systems, 2013] 構築:逐次追加アプローチ ➢1つのノードは、1本のデータベースベクトル ➢新しいベクトルに対し、近傍ノードにエッジを張る

Slide 49

Slide 49 text

49 𝒙13 𝒙91 Graph of 𝒙1 , … , 𝒙90 Images are from [Malkov+, Information Systems, 2013] 構築:逐次追加アプローチ ➢1つのノードは、1本のデータベースベクトル ➢新しいベクトルに対し、近傍ノードにエッジを張る

Slide 50

Slide 50 text

構築:逐次追加アプローチ 50 ➢1つのノードは、1本のデータベースベクトル ➢新しいベクトルに対し、近傍ノードにエッジを張る 𝒙13 𝒙91 Graph of 𝒙1 , … , 𝒙90 Images are from [Malkov+, Information Systems, 2013] ➢ たくさんエッジを持つノードがあれば、エッジを削る ➢ 様々な戦略がある(例:RNG-pruning)

Slide 51

Slide 51 text

51 構築 Images are from [Malkov+, Information Systems, 2013] and [Subramanya+, NeruIPS 2019] 逐次追加アプローチ 改善アプローチ ➢ 現在のグラフに新しい 要素を逐次追加する ➢ 初期グラフを何度も改善する

Slide 52

Slide 52 text

52 Images are from [Subramanya+, NeruIPS 2019] 構築:改善アプローチ ➢ まず初期グラフを作る(例:ランダムグラフや近似kNNグラフ) ➢ それを何度も改善する(エッジを消したり足したり)

Slide 53

Slide 53 text

53 構築:改善アプローチ Images are from [Subramanya+, NeruIPS 2019] ➢ まず初期グラフを作る(例:ランダムグラフや近似kNNグラフ) ➢ それを何度も改善する(エッジを消したり足したり) ➢ ある程度疎である必要アリ(密すぎると遅い) ➢ ショートカットのために、たまに「長い」エッジがあると良い

Slide 54

Slide 54 text

54 探索 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M ➢ クエリが来る Candidates (size = 3) Close to the query 説明のため、ノードに アルファベットを振りました

Slide 55

Slide 55 text

55 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query 探索 ➢ クエリが来る ➢ エントリポイント(例: )から始める。 M

Slide 56

Slide 56 text

56 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M ➢ クエリが来る ➢ エントリポイント(例: )から始める。qまでの距離を記録 Candidates (size = 3) Close to the query M M 23.1 探索

Slide 57

Slide 57 text

57 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query 23.1 M 探索

Slide 58

Slide 58 text

58 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query M 23.1 探索 1st iteration

Slide 59

Slide 59 text

59 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query M 23.1 Best Best 探索 ➢ 未チェックの最良候補を選ぶ( ) M

Slide 60

Slide 60 text

60 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query M 23.1 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! M

Slide 61

Slide 61 text

61 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query 23.1 Best Best M check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す M

Slide 62

Slide 62 text

62 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query 23.1 Best N M check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 M

Slide 63

Slide 63 text

63 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query Best N J 11.1 N 15.3 K 19.4 M 23.1 check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 M

Slide 64

Slide 64 text

64 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query Best N J 11.1 N 15.3 K 19.4 M 23.1 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 M

Slide 65

Slide 65 text

65 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query Best N J 11.1 N 15.3 K 19.4 M 23.1 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) M

Slide 66

Slide 66 text

66 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query Best ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) N M J 11.1 N 15.3 K 19.4 探索

Slide 67

Slide 67 text

67 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N J 11.1 N 15.3 K 19.4 探索

Slide 68

Slide 68 text

68 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N J 11.1 N 15.3 K 19.4 探索 2nd iteration

Slide 69

Slide 69 text

69 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N J 11.1 N 15.3 K 19.4 Best Best 探索 ➢ 未チェックの最良候補を選ぶ( ) J

Slide 70

Slide 70 text

70 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N J 11.1 N 15.3 K 19.4 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! J

Slide 71

Slide 71 text

71 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N J 11.1 N 15.3 K 19.4 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す J

Slide 72

Slide 72 text

72 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N J 11.1 N 15.3 K 19.4 Best 13.2 9.7 check! Already visited 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 J

Slide 73

Slide 73 text

73 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N Best 13.2 9.7 J 11.1 N 15.3 B 2.3 G 3.5 I 9.7 F 10.2 L 13.2 check! Already visited 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 J

Slide 74

Slide 74 text

74 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N Best J 11.1 N 15.3 B 2.3 G 3.5 I 9.7 F 10.2 L 13.2 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 J

Slide 75

Slide 75 text

75 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N Best J 11.1 N 15.3 B 2.3 G 3.5 I 9.7 F 10.2 L 13.2 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) J

Slide 76

Slide 76 text

76 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N Best B 2.3 G 3.5 I 9.7 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) J

Slide 77

Slide 77 text

77 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N B 2.3 G 3.5 I 9.7 探索

Slide 78

Slide 78 text

78 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N B 2.3 G 3.5 I 9.7 探索 3rd iteration

Slide 79

Slide 79 text

79 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N B 2.3 G 3.5 I 9.7 Best Best 探索 ➢ 未チェックの最良候補を選ぶ( ) B

Slide 80

Slide 80 text

80 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N B 2.3 G 3.5 I 9.7 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! B

Slide 81

Slide 81 text

81 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N B 2.3 G 3.5 I 9.7 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す B

Slide 82

Slide 82 text

82 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N B 2.3 G 3.5 I 9.7 Best 0.5 2.1 check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 B

Slide 83

Slide 83 text

83 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N Best 0.5 2.1 C 0.5 D 2.1 A 3.6 B 2.3 G 3.5 I 9.7 check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 B

Slide 84

Slide 84 text

84 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 A 3.6 B 2.3 G 3.5 I 9.7 Best 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 B

Slide 85

Slide 85 text

85 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 A 3.6 B 2.3 G 3.5 I 9.7 Best 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) B

Slide 86

Slide 86 text

86 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) B

Slide 87

Slide 87 text

87 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 探索

Slide 88

Slide 88 text

88 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 探索 4th iteration

Slide 89

Slide 89 text

89 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best Best 探索 ➢ 未チェックの最良候補を選ぶ( ) C

Slide 90

Slide 90 text

90 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! C

Slide 91

Slide 91 text

91 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す C

Slide 92

Slide 92 text

92 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best check! Already visited Already visited Already visited Already visited 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 C

Slide 93

Slide 93 text

93 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) C

Slide 94

Slide 94 text

94 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 探索

Slide 95

Slide 95 text

95 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 探索 5th iteration

Slide 96

Slide 96 text

96 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best Best 探索 ➢ 未チェックの最良候補を選ぶ( ) D

Slide 97

Slide 97 text

97 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! D

Slide 98

Slide 98 text

98 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す D

Slide 99

Slide 99 text

99 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best check! Already visited Already visited 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 D

Slide 100

Slide 100 text

100 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best check! Already visited Already visited H 3.9 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 D

Slide 101

Slide 101 text

101 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best H 3.9 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 D

Slide 102

Slide 102 text

102 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best H 3.9 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) D

Slide 103

Slide 103 text

103 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 Best 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) D

Slide 104

Slide 104 text

104 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 ➢ 全候補はチェック済み。終わり。 ➢ ここでは がクエリ( )に一番近い C 探索

Slide 105

Slide 105 text

105 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 ➢ 全候補はチェック済み。終わり。 ➢ ここでは がクエリ( )に一番近い C 探索 最終出力1:候補集合 ➢ ここからtopkを選択

Slide 106

Slide 106 text

106 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 ➢ 全候補はチェック済み。終わり。 ➢ ここでは がクエリ( )に一番近い C 探索 最終出力1:候補集合 ➢ ここからtopkを選択 最終出力2:チェックノード ➢ つまり、探索経路

Slide 107

Slide 107 text

107 Images are from [Malkov+, Information Systems, 2013] A B C D E F G H I J K L N M Candidates (size = 3) Close to the query N C 0.5 D 2.1 B 2.3 ➢ 全候補はチェック済み。終わり。 ➢ ここでは がクエリ( )に一番近い C 探索 最終出力1:候補集合 ➢ ここからtopkを選択 最終出力2:チェックノード ➢ つまり、探索経路 最終出力3:訪問フラグ ➢ それぞれのノードに対し、 訪れたかどうか

Slide 108

Slide 108 text

108 ➢ 背景 ➢ グラフを用いた近似最近傍探索 ✓ 基本 (構築と探索) ✓ 基本的特性 ✓ 特徴的な性質 ➢ 代表的手法 ✓ HNSW, NSG, NGT, Vamana ➢ 議論

Slide 109

Slide 109 text

109 基本的特性:速度 ➢ アイテム比較は𝑂 𝐷 ➢ 全体の計算量 ~ #item_comparison ∼ length_of_search_path * average_outdegree 𝒒 ∈ ℝ𝐷 𝒙13 ∈ ℝ𝐷 start query start query start query 1st path 2nd path 3rd path 2.1 1.9 outdegree = 1 outdegree = 2 outdegree = 2 #item_comparison = 3 * (1 + 2 + 2)/3 = 5 2.4

Slide 110

Slide 110 text

110 基本的特性:速度 ➢ アイテム比較は𝑂 𝐷 ➢ 全体の計算量 ~ #item_comparison ∼ length_of_search_path * average_outdegree 𝒒 ∈ ℝ𝐷 𝒙13 ∈ ℝ𝐷 start query start query start query 1st path 2nd path 3rd path 2.1 1.9 outdegree = 1 outdegree = 2 outdegree = 2 #item_comparison = 3 * (1 + 2 + 2)/3 = 5 2.4 探索を高速化するには、、、 (1) 探索経路を短くする? ➢ 例:たまに長いエッジ(ショートカット) ➢ 例:階層構造 (2) グラフを疎にする? ➢ 例:冗長エッジを削る

Slide 111

Slide 111 text

111 A D C B query 基本的特性:候補サイズ E start Candidates (size = 1) C A D C B query E start Candidates (size = 3) C D E size = 1: Greedy search size > 1: Beam search ➢ 候補サイズが大きい➡精度良いが遅い ➢ トレードオフを担うオンラインパラメータ ➢ HNSWでは“ef”と呼ばれる 速いが、局所解 遅いが、より良い解

Slide 112

Slide 112 text

112 疑似コード ➢ 全ての論文が全然違う疑似コードを載せている ➢ 原則は同じだが詳細が異なる ➢ ヒント:データ構造を明示するかどうか NSG [Cong+, VLDB 19] DiskANN [Subramanya+, NeurIPS 19] Learning to route [Baranchuk+, ICML 19]

Slide 113

Slide 113 text

113 疑似コード ➢ 全ての論文が全然違う疑似コードを載せている ➢ 原則は同じだが詳細が異なる ➢ ヒント:データ構造を明示するかどうか NSG [Cong+, VLDB 19] DiskANN [Subramanya+, NeurIPS 19] Learning to route [Baranchuk+, ICML 19] NSG [Cong+, VLDB 19] DiskANN [Subramanya+, NeurIPS 19] Learning to route [Baranchuk+, ICML 19] 配列を明示的にソート 候補は集合で保持 候補はヒープで保持。 自動的にソート 候補は配列で保持 ソートの際「closest L points」と表現

Slide 114

Slide 114 text

114 疑似コード ➢ 全ての論文が全然違う疑似コードを載せている ➢ 原則は同じだが詳細が異なる ➢ ヒント:データ構造を明示するかどうか NSG [Cong+, VLDB 19] DiskANN [Subramanya+, NeurIPS 19] Learning to route [Baranchuk+, ICML 19] NSG [Cong+, VLDB 19] DiskANN [Subramanya+, NeurIPS 19] Learning to route [Baranchuk+, ICML 19] 単に“check” チェック済みアイテムは集合で管理 (この“visit”は我々のノテーションでは”check”)

Slide 115

Slide 115 text

115 疑似コード ➢ 全ての論文が全然違う疑似コードを載せている ➢ 原則は同じだが詳細が異なる ➢ ヒント:データ構造を明示するかどうか NSG [Cong+, VLDB 19] DiskANN [Subramanya+, NeurIPS 19] Learning to route [Baranchuk+, ICML 19] 訪問済みアイテムは単に”visited” 隠れデータ構造(配列)で管理 訪問済みアイテムは 集合で管理

Slide 116

Slide 116 text

116 疑似コード ➢ 全ての論文が全然違う疑似コードを載せている ➢ 原則は同じだが詳細が異なる ➢ ヒント:データ構造を明示するかどうか NSG [Cong+, VLDB 19] DiskANN [Subramanya+, NeurIPS 19] Learning to route [Baranchuk+, ICML 19] 終了条件???

Slide 117

Slide 117 text

117 疑似コード ➢ 全ての論文が全然違う疑似コードを載せている ➢ 原則は同じだが詳細が異なる ➢ ヒント:データ構造を明示するかどうか NSG [Cong+, VLDB 19] DiskANN [Subramanya+, NeurIPS 19] Learning to route [Baranchuk+, ICML 19] 今回のトークではこのNSGを元に少し修正したものを紹介: ➢ 候補は自動ソート配列で管理 ➢ 終了条件は「全候補がチェックされたら」

Slide 118

Slide 118 text

118 疑似コード ➢ 全ての論文が全然違う疑似コードを載せている ➢ 原則は同じだが詳細が異なる ➢ ヒント:データ構造を明示するかどうか NSG [Cong+, VLDB 19] DiskANN [Subramanya+, NeurIPS 19] Learning to route [Baranchuk+, ICML 19] フォーマルな(?)定義が出来ればみんな嬉しい

Slide 119

Slide 119 text

119 ➢ 背景 ➢ グラフを用いた近似最近傍探索 ✓ 基本 (構築と探索) ✓ 基本的特性 ✓ 特徴的な性質 ➢ 代表的手法 ✓ HNSW, NSG, NGT, Vamana ➢ 議論

Slide 120

Slide 120 text

120 基本グラフ Images are from an excellent survey paper [Wang+, VLDB 2021] ➢ 多くのグラフ手法があるが、基本となる4つのグラフがある ➢ これらの基本グラフは(1)構築に時間がかかり、(2) 密であることが多い ➢ 各手法は、どれかの基本グラフを発展させたものであることが多い

Slide 121

Slide 121 text

121 基本グラフ Images are from an excellent survey paper [Wang+, VLDB 2021] ➢ 多くのグラフ手法があるが、基本となる4つのグラフがある ➢ これらの基本グラフは(1)構築に時間がかかり、(2) 密であることが多い ➢ 各手法は、どれかの基本グラフを発展させたものであることが多い 原則: ➢ 密すぎない:密グラフは探索遅い ➢ しかし適度に密:各点は到達可能

Slide 122

Slide 122 text

122 基本グラフ Images are from an excellent survey paper [Wang+, VLDB 2021] ➢ 多くのグラフ手法があるが、基本となる4つのグラフがある ➢ これらの基本グラフは(1)構築に時間がかかり、(2) 密であることが多い ➢ 各手法は、どれかの基本グラフを発展させたものであることが多い 原則: ➢ 密すぎない:密グラフは探索遅い ➢ しかし適度に密:各点は到達可能 有名なドロネーグラフ ☺ 必ず正解にたどり着く  𝐷が大きいとほとんど全結合グラフ

Slide 123

Slide 123 text

123 基本グラフ Images are from an excellent survey paper [Wang+, VLDB 2021] ➢ 多くのグラフ手法があるが、基本となる4つのグラフがある ➢ これらの基本グラフは(1)構築に時間がかかり、(2) 密であることが多い ➢ 各手法は、どれかの基本グラフを発展させたものであることが多い 原則: ➢ 密すぎない:密グラフは探索遅い ➢ しかし適度に密:各点は到達可能 相対近傍グラフ(Relative Neighborhood Graph; RNG) [Toussaint, PR 80] ➢ 定義:𝑥 と 𝑦 間にエッジがあるとき、「lune」の間に点が無い ➢ 冗長なエッジを削れる ➢ 一般に有名ではないが、ANNではよく使われる ➢ あとで振り返ります

Slide 124

Slide 124 text

124 基本グラフ Images are from an excellent survey paper [Wang+, VLDB 2021] ➢ 多くのグラフ手法があるが、基本となる4つのグラフがある ➢ これらの基本グラフは(1)構築に時間がかかり、(2) 密であることが多い ➢ 各手法は、どれかの基本グラフを発展させたものであることが多い 原則: ➢ 密すぎない:密グラフは探索遅い ➢ しかし適度に密:各点は到達可能 K近傍グラフ ☺ 近傍点の数を制限できる(最大K)なのでグラフを疎にできる  各点に到達可能かわからない

Slide 125

Slide 125 text

125 基本グラフ Images are from an excellent survey paper [Wang+, VLDB 2021] ➢ 多くのグラフ手法があるが、基本となる4つのグラフがある ➢ これらの基本グラフは(1)構築に時間がかかり、(2) 密であることが多い ➢ 各手法は、どれかの基本グラフを発展させたものであることが多い 原則: ➢ 密すぎない:密グラフは探索遅い ➢ しかし適度に密:各点は到達可能 最小全域木(Minimum Spanning Tree; MST) ☺ グローバルな接続性が確保。かつ次数も小さい  ショートカット無し

Slide 126

Slide 126 text

126 グラフ探索方式 Images are from an excellent survey paper [Wang+, VLDB 2021] ➢ めちゃくちゃたくさんある ➢ 基本的な構造:良いグラフを設計 + ビームサーチ(先ほど述べたアルゴ)

Slide 127

Slide 127 text

127 開始点は重要 Start here? Start here? v.s. ➢ 良い開始点から始める ➡ 経路が短い ➡ 高速な探索 ➢ 良い開始点を見つけることそのものもANN ➢ 小さいANN問題を解く:by tree [NST; Iwasaki+, arXiv 18], hash [Effana; Fu+, arXiv 16] or LSH [LGTM; Arai+, DEXA 21]

Slide 128

Slide 128 text

128 エッジ選択:RNG-pruning A Aを追加する際、 どうエッジを張る? A All neighbors? ➢ エッジ多すぎ ➢ 探索遅くなる A Top-K? ➢ 到達できない ➢ 精度低い A   ☺ たぶんこいつら はつながってる なのでこの枝は なくてもヨシ RNG-pruning: 良い感じ のエッジ

Slide 129

Slide 129 text

129 C B D A Aが来た。B, C, D, Eの どれにエッジを張る? ? ? ? E エッジ選択:RNG-pruning

Slide 130

Slide 130 text

130 C B D A E エッジ選択:RNG-pruning

Slide 131

Slide 131 text

131 B D A C E エッジ選択:RNG-pruning Aの最近傍

Slide 132

Slide 132 text

132 C B D A E エッジ選択:RNG-pruning Aの最近傍 ➢ Aの全ての近傍点について、 と を比べる ➢ もし が一番短ければ、エッジを張る

Slide 133

Slide 133 text

133 C B D A ➢ Aの全ての近傍点について、 と を比べる ➢ もし が一番短ければ、エッジを張る 今回は近傍点が無い。なのでエッジを張る E エッジ選択:RNG-pruning Aの最近傍

Slide 134

Slide 134 text

134 C B D A done E エッジ選択:RNG-pruning

Slide 135

Slide 135 text

135 C B D A Aの第二近傍 done E エッジ選択:RNG-pruning

Slide 136

Slide 136 text

136 C B D A done E エッジ選択:RNG-pruning Aの第二近傍 ➢ Aの全ての近傍点について、 と を比べる ➢ もし が一番短ければ、エッジを張る

Slide 137

Slide 137 text

137 C B D A done エッジ選択:RNG-pruning 一番短い!エッジ張らない E Aの第二近傍 ➢ Aの全ての近傍点について、 と を比べる ➢ もし が一番短ければ、エッジを張る

Slide 138

Slide 138 text

138 C B D A done done E エッジ選択:RNG-pruning

Slide 139

Slide 139 text

139 C B D A done done エッジ選択:RNG-pruning Aの第三近傍 E

Slide 140

Slide 140 text

140 C B D A done done エッジ選択:RNG-pruning E Aの第三近傍 ➢ Aの全ての近傍点について、 と を比べる ➢ もし が一番短ければ、エッジを張る

Slide 141

Slide 141 text

141 C B D A done done エッジ選択:RNG-pruning 一番短い!エッジ張る E Aの第三近傍 ➢ Aの全ての近傍点について、 と を比べる ➢ もし が一番短ければ、エッジを張る

Slide 142

Slide 142 text

142 C B D A done done done E エッジ選択:RNG-pruning

Slide 143

Slide 143 text

143 C B D A done done done E エッジ選択:RNG-pruning Aの第四近傍

Slide 144

Slide 144 text

144 C B D A done done done E エッジ選択:RNG-pruning Aの第四近傍 ➢ Aの全ての近傍点について、 と を比べる ➢ もし が一番短ければ、エッジを張る

Slide 145

Slide 145 text

145 C B D A done done done E エッジ選択:RNG-pruning Aの第四近傍 一番短い!エッジ張らない ➢ Aの全ての近傍点について、 と を比べる ➢ もし が一番短ければ、エッジを張る

Slide 146

Slide 146 text

146 C B D A done done done E done エッジ選択:RNG-pruning

Slide 147

Slide 147 text

147 C B D A done done done E done ➢ RNG-pruningは効果的なエッジ削減法。 色々な方式で広く使われる Pros: 実装が簡単 Cons: 距離計算が多いので時間はかかる エッジ選択:RNG-pruning

Slide 148

Slide 148 text

148 ➢ 背景 ➢ グラフを用いた近似最近傍探索 ✓ 基本 (構築と探索) ✓ 基本的特性 ✓ 特徴的な性質 ➢ 代表的手法 ✓ HNSW, NSG, NGT, Vamana ➢ 議論

Slide 149

Slide 149 text

149 Hierarchical Navigable Small World; HNSW [Malkov and Yashunin, TPAMI, 2019] ➢ グラフを階層的に作る [Malkov and Yashunin, TPAMI, 2019] ➢ RNG-pruningにより、#edge per nodeを固定する ➢ 最も有名。実データにとても強い 疎なグラフで探索 より密なグラフの同じ点に移動 繰り返す

Slide 150

Slide 150 text

150 ➢ 多くのサービスの標準的ANNアルゴリズム ✓ milvus, weaviate, qdrant, vearch, elasticsearch, OpenSearch, vespa, redis, Lucene… ➢ 有名な3つの実装 ✓ NMSLIB (オリジナル) ✓ hnswlib (NMSLIBから必要部分を取り出した軽量実装) ✓ Faiss (faissチームによる再実装) Hierarchical Navigable Small World; HNSW [NMSLIB] https://github.com/nmslib/nmslib [hnswlib] https://github.com/nmslib/hnswlib [Faiss] https://github.com/facebookresearch/faiss/blob/main/faiss/IndexHNSW.h

Slide 151

Slide 151 text

151 https://www.facebook.com/groups/faissusers/posts/917143142043306/?comment_id=917533385337615&reply_comment_id=920542105036743 Any implementation difference between NMSLIB, hnswlib, and faiss-hnsw? My view on the implementation differences (I might forgot something): 1) nmslib’s HNSW requires internal index conversion step (from nmslib’s format to an internal one) to have good performance, and after the conversion the index cannot be updated with new elements. nmslib also has a simple "graph diversification" postprocessing after building the index (controlled by the "post" parameter) and sophisticated queue optimizations which makes it a bit faster compared to other implementations. Another advantage of nmslib is out-of-the box support for large collection of distance functions, including some exotic distances. 2) hnswlib is a header-only C++ library reimplementation of nmslib's hnsw. It does not have the index conversion step, thus - the Pros (compared to nmslib): much more memory efficient and faster at build time. It also supports index insertions, element updates (with incremental graph rewiring - added recently) and fake deletions (mark elements as deleted to avoid returning them during the graph traversal). Cons (compared to nnmslib): It is a tad slower than nmslib due to lack of graph postprocessing and queue optimization; out-of-the box version supports only 3 distance functions, compared to many distance functions in nmslib. Overall, I've tried to keep hnswlib as close as possible to a distributed index (hence no index postprocessing). 3) Faiss hnsw is a different reimplementation. It has its own algorithmic features, like having the first elements in the upper layers on the structure (opposed to random in other implementations). It is a bit more memory efficient compared to hnswlib with raw vectors and optimized for batch processing. Due to the latter it is noticeably slower at single query processing (opposed to nmslib or hnswlib) and generally a bit slower for batch queries (the last time I’ve tested, but there were exceptions). The implementation also supports incremental insertions (also preferably batched), quantized data and two-level encoding, which makes it much less memory hungry and the overall best when memory is a big concern. Yury Malkov (HNSW論文の 著者) Faisbook上のFaiss User Forumでの議論 注意:この議論は2020のものなので、現在のライブラリと異なるかもです

Slide 152

Slide 152 text

152 ➢ HNSW詳細については多数の技術ブログあり https://www.pinecone.io/learn/hnsw/ James Briggs, PINECONE, Faiss: The Missing Manual, 6. Hierarchical Navigable Small Worlds (HNSW) Hierarchical Navigable Small World; HNSW https://zilliz.com/blog/hierarchical- navigable-small-worlds-HNSW Frank Liu, zilliz, Vector Database 101, Hierarchical Navigable Small Worlds (HNSW) https://towardsdatascience.com /ivfpq-hnsw-for-billion-scale- similarity-search-89ff2f89d90e Peggy Chang, IVFPQ + HNSW for Billion-scale Similarity Search

Slide 153

Slide 153 text

153 Navigating Spreading-out Graph (NSG) ➢ Monotonic RNG ➢ 「HNSWより少し精度良い」ことが多々ある ➢ AlibabaのTaobaoで使われてるらしい RNG Monotonic RNG ➢ RNGの定義は“lune中に点ナシ” ➢ “p -> q”の経路は長い  Monotonic RNGはより 多くのエッジを張れる [Fu+, VLDB 19] Images are from [Fu+, VLDB 19]

Slide 154

Slide 154 text

154 Navigating Spreading-out Graph (NSG) ➢ オリジナル実装: ➢ Faissにも実装がある ➢ もしfaiss-hnswを使っていて ✓ もう少し精度が欲しいが別ライブラリ使いたくない ✓ faissのhnswと同じインタフェースがいい ✓ …という場合、試す価値アリ https://github.com/ZJULearning/nsg IndexHNSWFlat(int d, int M, MetricType metric) IndexNSGFlat(int d, int R, MetricType metric) [Fu+, VLDB 19]

Slide 155

Slide 155 text

155 Neighborhood Graph and Tree (NGT) ➢ 構築時に範囲探索を使う ➢ 開始点をVP-treeで求める ➢ 現在ann-benchmarksでベスト方式は NGTベースのもの ➢ 量子化もサポート ➢ Repository: ➢ Yahoo Japanが開発 ➢ Valdに使われている [Iwasaki+, arXiv 18] Image are from the original repository https://github.com/yahoojapan/NGT

Slide 156

Slide 156 text

156 DiskANN (Vamana) ➢ Vamana: グラフを用いた探索手法名 ➢ DiskANN: Vamanaを用いたDisk-friendlyな探索システム ➢ MSR Indiaより ➢ 巨大データでは試す価値アリ(このチュートリのフォーカスではないですが) ➢ 同じチーが活発に開発中(特殊機能持ち探索方式) ✓ Data update: FreshDiskANN [Singh+, arXiv 21] ✓ Filter: Filtered-DiskANN [Gollapudi+, WWW 23] [Subramanya+, NeurIPS 19] https://github.com/microsoft/DiskANN

Slide 157

Slide 157 text

157 ➢ 背景 ➢ グラフを用いた近似最近傍探索 ✓ 基本 (構築と探索) ✓ 基本的特性 ✓ 特徴的な性質 ➢ 代表的手法 ✓ HNSW, NSG, NGT, Vamana ➢ 議論

Slide 158

Slide 158 text

158 ただの探索?Vector DB? ➢ Vector DBの会社は「Vector DBはイケてる!」と言ってます ➢ 自分の考え: ➢ どのvector DB? ➡ まだ結論無し(みんな戦っている) ➢ クリーン軽量APIが良いなら、Jina AIのdocarrayおよびvectordb もいいかも(CVPR23チュートリのHanのトーク参照) ✓ https://weaviate.io/blog/vector-library-vs-vector-database ✓ https://codelabs.milvus.io/vector-database-101-what-is-a-vector-database/index#2 ✓ https://zilliz.com/learn/what-is-vector-database 一番単純なnumpy only探索を試す 遅い? HNSW in faissのような 速いANNを試す Try Vector DB 速度のみが問題であれば、 単にライブラリを使えばいい https://matsui528.github.io/cvpr2023_tutorial_neural_search/assets/pdf/CVPR2023%20Tutorial_%20Neural%20Search%20i n%20Action%20-%20Representing,%20transiting%20&%20searching%20multimodal%20data,%20Han%20Xiao.pdf

Slide 159

Slide 159 text

159 有用リソース ➢ Vector DB会社は有用ブログシリーズを多数執筆 ➢ Pinecone Blog ✓ https://www.pinecone.io/learn/ ➢ Weaviate Blog ✓ https://weaviate.io/blog ➢ Jina AI Blog ✓ https://jina.ai/news/ ➢ Zilliz Blog ✓ https://zilliz.com/blog ➢ Romain Beaumont Blog ✓ https://rom1504.medium.com/

Slide 160

Slide 160 text

160 過去3年の進展 ➢ 以前CVPR 2020でチュートリアルをしてから3年たった ➢ この3年でANN分野はどう進展したか? Y. Matasui, “Billion-scale Approximate Nearest Neighbor Search”, CVPR 2020 Tutorial ➢ Slide: https://speakerdeck.com/matsui_528/cvpr20-tutorial-billion-scale- approximate-nearest-neighbor-search ➢ Video: https://youtu.be/SKrHs03i08Q

Slide 161

Slide 161 text

161 過去3年の進展 ➢ 以前CVPR 2020でチュートリアルをしてから3年たった ➢ この3年でANN分野はどう進展したか? Y. Matasui, “Billion-scale Approximate Nearest Neighbor Search”, CVPR 2020 Tutorial ➢ Slide: https://speakerdeck.com/matsui_528/cvpr20-tutorial-billion-scale- approximate-nearest-neighbor-search ➢ Video: https://youtu.be/SKrHs03i08Q ➢ 基本技術は同じ(HNSWとIVFPQ!) ➢ HNSWは今でもデファクト(多くの論文がHNSWを超 えたと主張しているにもかかわらず) ➢ ディスクまで考慮する話が増えている印象 ➢ LLM応用のためVector DBがなぜか急に大注目 ➢ LLMを考えると次元Dは~1000ぐらい(~100ではなく) ➢ GPU-ANNは強いが、思ったより広まっていない。LLM 応用などではやはりCPUでやりたい ➢ コンペ開催 (SISAP、bigann-benchmarks 2021、2023) ➢ 新しいbillion-scale datasets ➢ アルゴ的にはちょっと落ち着いた印象がある。グラフ 探索を超えたブレイクスルー方式が待たれる・・!?

Slide 162

Slide 162 text

162 過去3年の進展 ➢ 以前CVPR 2020でチュートリアルをしてから3年たった ➢ この3年でANN分野はどう進展したか? Y. Matasui, “Billion-scale Approximate Nearest Neighbor Search”, CVPR 2020 Tutorial ➢ Slide: https://speakerdeck.com/matsui_528/cvpr20-tutorial-billion-scale- approximate-nearest-neighbor-search ➢ Video: https://youtu.be/SKrHs03i08Q ➢ 基本技術は同じ(HNSWとIVFPQ!) ➢ HNSWは今でもデファクト(多くの論文がHNSWを超 えたと主張しているにもかかわらず) ➢ ディスクまで考慮する話が増えている印象 ➢ LLM応用のためVector DBがなぜか急に大注目 ➢ LLMを考えると次元Dは~1000ぐらい(~100ではなく) ➢ GPU-ANNは強いが、思ったより広まっていない。LLM 応用などではやはりCPUでやりたい ➢ コンペ開催 (SISAP、bigann-benchmarks 2021、2023) ➢ 新しいbillion-scale datasets ➢ アルゴ的にはちょっと落ち着いた印象がある。グラフ 探索を超えたブレイクスルー方式が待たれる・・!? ➢ SISAPコンペのいくつかのタスクで2位獲得 ➢ 近くレポート公開 Team UTokyo: Yutaro Oguri & Yusuke Matsui

Slide 163

Slide 163 text

163 ◼ [Jégou+, TPAMI 2011] H. Jégou+, “Product Quantization for Nearest Neighbor Search”, IEEE TPAMI 2011 ◼ [Guo+, ICML 2020] R. Guo+, “Accelerating Large-Scale Inference with Anisotropic Vector Quantization”, ICML 2020 ◼ [Malkov+, TPAMI 2019] Y. Malkov+, “Efficient and Robust Approximate Nearest Neighbor search using Hierarchical Navigable Small World Graphs,” IEEE TPAMI 2019 ◼ [Malkov+, IS 13] Y, Malkov+, “Approximate Nearest Neighbor Algorithm based on Navigable Small World Graphs”, Information Systems 2013 ◼ [Fu+, VLDB 19] C. Fu+, “Fast Approximate Nearest Neighbor Search With The Navigating Spreading-out Graphs”, 2019 ◼ [Subramanya+, NeurIPS 19] S. J. Subramanya+, “DiskANN: Fast Accurate Billion-point Nearest Neighbor Search on a Single Node”, NeurIPS 2019 ◼ [Baranchuk+, ICML 19] D. Baranchuk+, “Learning to Route in Similarity Graphs” ◼ [Wang+, VLDB 21] M. Wang+, “A Comprehensive Survey and Experimental Comparison of Graph-Based Approximate Nearest Neighbor Search”, VLDB 2021 ◼ [Toussaint, PR 80] G. T. Toussaint, “The Relative Neighbouhood Graph of A Finite Planar Set”, Pattern Recognition 1980 ◼ [Fu+, arXiv 16] C. Fu and D. Cai, “Efanna: An Extremely Fast Approximate Nearest Neighbor Search Algorithm based on knn Graph”, arXiv 2016 ◼ [Arai+, DEXA 21] Y. Arai+, “LGTM: A Fast and Accurate kNN Search Algorithm in High-Dimensional Spaces”, DEXA 2021 ◼ [Iwasaki+, arXiv 18] M. Iwasaki and D. Miyazaki, “Optimization if Indexing Based on k-Nearest Neighbor Graph for Proximity Search in High-dimensional Data”, arXiv 2018 ◼ [Singh+, arXiv 21] A. Singh+, “FreshDiskANN: A Fast and Accurate Graph-Based ANN Index for Streaming Similarity Search”, arXiv 2021 ◼ [Gollapudi+, WWW 23] S. Gollapudi+, “Filtered-DiskANN: Graph Algorithms for Approximate Nearest Neighbor Search with Filters”, WWW 2023 Reference

Slide 164

Slide 164 text

164 Reference ◼ [Pinecone] https://www.pinecone.io/ ◼ [Milvus] https://milvus.io/ ◼ [Qdrant] https://qdrant.tech/ ◼ [Weaviate] https://weaviate.io/ ◼ [Vertex AI Matching Engine] https://cloud.google.com/vertex-ai/docs/matching-engine ◼ [Vald] https://vald.vdaas.org/ ◼ [Vearch] https://vearch.github.io/ ◼ [Elasticsearch] https://www.elastic.co/jp/blog/introducing-approximate-nearest-neighbor-search-in-elasticsearch-8-0 ◼ [OpenSearch] https://opensearch.org/docs/latest/search-plugins/knn/approximate-knn/ ◼ [Vespa] https://vespa.ai/ ◼ [Redis] https://redis.com/solutions/use-cases/vector-database/ ◼ [Lucene] https://lucene.apache.org/core/9_1_0/core/org/apache/lucene/util/hnsw/HnswGraphSearcher.html ◼ [SISAP] SISAP 2023 Indexing Challenge https://sisap-challenges.github.io/ ◼ [Bigann-benchmarks] Billion-Scale Approximate Nearest Neighbor Search Challenge: NeurIPS'21 competition track https://big-ann-benchmarks.com/

Slide 165

Slide 165 text

165 ➢ 背景 ➢ グラフを用いた近似最近傍探索 ✓ 基本 (構築と探索) ✓ 基本的特性 ✓ 特徴的な性質 ➢ 代表的手法 ✓ HNSW, NSG, NGT, Vamana ➢ 議論 謝辞 ➢ フィードバックを頂いた天方大地先生、小野直樹君、金海智大君に感謝を申し上げます。 ➢ 本研究はJST AIP加速課題JPMJCR23U2の支援を受けたものです。