Slide 1

Slide 1 text

スライド:https://bit.ly/49WgRfs 1 近似最近傍探索とVector DBの 理論的背景 松井勇佑 情報理工学系研究科 電子情報学専攻 講師 UTokyo ARC 第3回サロン 2023/11/21

Slide 2

Slide 2 text

スライド:https://bit.ly/49WgRfs 2 松井勇佑 ✓ コンピュータビジョン ✓ 大規模探索 ✓ データ構造+機械学習 http://yusukematsui.me 東京大学 情報理工学系研究科 電子情報学専攻 講師 @utokyo_bunny ARM 4-bit PQ [Matsui+, ICASSP 22] Relative NN-Descent [Ono & Matsui, ACMMM 23] @matsui528 Fast Partitioned Learned Bloom Filter [Sato & Matsui, NeurIPS 23]

Slide 3

Slide 3 text

スライド:https://bit.ly/49WgRfs 3 ➢ 導入:埋め込み+探索+LLMのデモ ➢ 近傍探索・Vector DBの理論 ➢ 今後の展望

Slide 4

Slide 4 text

スライド:https://bit.ly/49WgRfs 4 ➢ 導入:埋め込み+探索+LLMのデモ ➢ 近傍探索・Vector DBの理論 ➢ 今後の展望

Slide 5

Slide 5 text

スライド:https://bit.ly/49WgRfs 5 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  LLMへ知識を追加したい

Slide 6

Slide 6 text

スライド:https://bit.ly/49WgRfs 6 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation) 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 7

Slide 7 text

スライド:https://bit.ly/49WgRfs 7 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…” 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation)

Slide 8

Slide 8 text

スライド:https://bit.ly/49WgRfs 8 𝒙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 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation)

Slide 9

Slide 9 text

スライド:https://bit.ly/49WgRfs 9 𝒙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 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation)

Slide 10

Slide 10 text

スライド:https://bit.ly/49WgRfs 10 𝒙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 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation)

Slide 11

Slide 11 text

スライド:https://bit.ly/49WgRfs 11 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 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation)

Slide 12

Slide 12 text

スライド:https://bit.ly/49WgRfs 12 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…” 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation)

Slide 13

Slide 13 text

スライド:https://bit.ly/49WgRfs 13 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) 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation)

Slide 14

Slide 14 text

スライド:https://bit.ly/49WgRfs 14 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) 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation)

Slide 15

Slide 15 text

スライド:https://bit.ly/49WgRfs 15 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) 埋め込み+探索はLLMに知識を追加 するもっとも簡単な方法 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation)

Slide 16

Slide 16 text

スライド:https://bit.ly/49WgRfs 16 DEMO1: OpenAI Playground (OpenAIに全投げのウェブサービス) https://platform.openai.com/playground?assistant 

Slide 17

Slide 17 text

スライド:https://bit.ly/49WgRfs 17 DEMO1: OpenAI Playground (OpenAIに全投げのウェブサービス) 検索をオン オリンピック情報をアップロード https://platform.openai.com/playground?assistant ☺ アップした情報を参照している

Slide 18

Slide 18 text

スライド:https://bit.ly/49WgRfs 18 DEMO1: OpenAI Playground (OpenAIに全投げのウェブサービス) 検索をオン オリンピック情報をアップロード https://platform.openai.com/playground?assistant ☺ アップした情報を参照している

Slide 19

Slide 19 text

スライド:https://bit.ly/49WgRfs 19 DEMO2: 手元でやる(疑似コード) # Embed knowledge texts = [ "Chinami Yoshida¥n¥n==Persona...", "Lviv bid for the 2022 Winter...", ... ] features = encode(texts) # Embed a question question = "2022のオリンピックでカーリングで金メダルをとったのは誰?" query_feature = encode(question) # Search ids = search(query_feature, features) # Add results to the question question += "以下の情報を使っていいです。" for id in ids: question += texts[id] # Ask LLM result = LLM.ask(question) https://github.com/openai/openai-cookbook/blob/main/examples/Question_answering_using_embeddings.ipynb を参考

Slide 20

Slide 20 text

スライド:https://bit.ly/49WgRfs 20 DEMO2: 手元でやる(疑似コード) # Embed knowledge texts = [ "Chinami Yoshida¥n¥n==Persona...", "Lviv bid for the 2022 Winter...", ... ] features = encode(texts) # Embed a question question = "2022のオリンピックでカーリングで金メダルをとったのは誰?" query_feature = encode(question) # Search ids = search(query_feature, features) # Add results to the question question += "以下の情報を使っていいです。" for id in ids: question += texts[id] # Ask LLM result = LLM.ask(question) https://github.com/openai/openai-cookbook/blob/main/examples/Question_answering_using_embeddings.ipynb を参考 ➢ エンコーダはなんでもいい ➢ 古典方式(BM25とか)もアリ ➢ モダン方式でもいい(がGPUいる) ➢ OpenAI APIでもいい(GPUいらない がお金かかる) ➢ エンコーダはなんでもいい ➢ 古典方式(BM25とか)もアリ ➢ モダン方式でもいい(がGPUいる) ➢ OpenAI APIでもいい(GPUいらない がお金かかる) ここをどう準備 するか? 探索はCPUでもGPUでもいい (精度 vs 速度 vs メモリ vs お金) 手元でやるならGPU必要。利用可能なモデルを準備(e.g., LLaMa) OpenAI APIならGPUいらないがお金かかる

Slide 21

Slide 21 text

スライド:https://bit.ly/49WgRfs 21 DEMO2: 手元でやる(疑似コード) # Embed knowledge texts = [ "Chinami Yoshida¥n¥n==Persona...", "Lviv bid for the 2022 Winter...", ... ] features = encode(texts) # Embed a question question = "2022のオリンピックでカーリングで金メダルをとったのは誰?" query_feature = encode(question) # Search ids = search(query_feature, features) # Add results to the question question += "以下の情報を使っていいです。" for id in ids: question += texts[id] # Ask LLM result = LLM.ask(question) https://github.com/openai/openai-cookbook/blob/main/examples/Question_answering_using_embeddings.ipynb を参考 ➢ エンコーダはなんでもいい ➢ 古典方式(BM25とか)もアリ ➢ モダン方式でもいい(がGPUいる) ➢ OpenAI APIでもいい(GPUいらない がお金かかる) ➢ エンコーダはなんでもいい ➢ 古典方式(BM25とか)もアリ ➢ モダン方式でもいい(がGPUいる) ➢ OpenAI APIでもいい(GPUいらない がお金かかる) ここをどう準備 するか? 探索はCPUでもGPUでもいい (精度 vs 速度 vs メモリ vs お金) 手元でやるならGPU必要。利用可能なモデルを準備(e.g., LLaMa) OpenAI APIならGPUいらないがお金かかる ➢ 埋め込み+探索部分は古典的 エンジニアリングみが強い ➢ APIコールとの兼ね合い ✓ 簡単だが毎度お金かかる ✓ 研究で使う場合の再現性?

Slide 22

Slide 22 text

スライド:https://bit.ly/49WgRfs 22 ➢ 導入:埋め込み+探索+LLMのデモ ➢ 近傍探索・Vector DBの理論 ➢ 今後の展望

Slide 23

Slide 23 text

スライド:https://bit.ly/49WgRfs 23 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) 埋め込み+探索はLLMに知識を追加 するもっとも簡単な方法 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation)

Slide 24

Slide 24 text

スライド:https://bit.ly/49WgRfs 24 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) 埋め込み+探索はLLMに知識を追加 するもっとも簡単な方法 埋め込み+探索+LLM(RAG; Retrieval Augmented Generation) ➢ (近似)最近傍探索問題そのもの ➢ 速度・精度・メモリのトレードオフ ➢ Vector DB??

Slide 25

Slide 25 text

スライド:https://bit.ly/49WgRfs 25 技術を議論する際の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 26

Slide 26 text

スライド:https://bit.ly/49WgRfs 26 技術を議論する際の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 27

Slide 27 text

スライド:https://bit.ly/49WgRfs 27 技術を議論する際の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 28

Slide 28 text

スライド:https://bit.ly/49WgRfs 28 技術を議論する際の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 29

Slide 29 text

スライド:https://bit.ly/49WgRfs 29 技術を議論する際の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 30

Slide 30 text

スライド:https://bit.ly/49WgRfs 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

スライド:https://bit.ly/49WgRfs 31 𝑁 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 32

Slide 32 text

スライド:https://bit.ly/49WgRfs 32 𝑁 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 33

Slide 33 text

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

Slide 34

Slide 34 text

スライド:https://bit.ly/49WgRfs 34 探索 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 35

Slide 35 text

スライド:https://bit.ly/49WgRfs 35 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 36

Slide 36 text

スライド:https://bit.ly/49WgRfs 36 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 37

Slide 37 text

スライド:https://bit.ly/49WgRfs 37 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 38

Slide 38 text

スライド:https://bit.ly/49WgRfs 38 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 39

Slide 39 text

スライド:https://bit.ly/49WgRfs 39 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 40

Slide 40 text

スライド:https://bit.ly/49WgRfs 40 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 41

Slide 41 text

スライド:https://bit.ly/49WgRfs 41 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 42

Slide 42 text

スライド:https://bit.ly/49WgRfs 42 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 43

Slide 43 text

スライド:https://bit.ly/49WgRfs 43 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 44

Slide 44 text

スライド:https://bit.ly/49WgRfs 44 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 45

Slide 45 text

スライド:https://bit.ly/49WgRfs 45 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 46

Slide 46 text

スライド:https://bit.ly/49WgRfs 46 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 47

Slide 47 text

スライド:https://bit.ly/49WgRfs 47 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 48

Slide 48 text

スライド:https://bit.ly/49WgRfs 48 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 49

Slide 49 text

スライド:https://bit.ly/49WgRfs 49 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 50

Slide 50 text

スライド:https://bit.ly/49WgRfs 50 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 51

Slide 51 text

スライド:https://bit.ly/49WgRfs 51 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 52

Slide 52 text

スライド:https://bit.ly/49WgRfs 52 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 53

Slide 53 text

スライド:https://bit.ly/49WgRfs 53 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 54

Slide 54 text

スライド:https://bit.ly/49WgRfs 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 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 55

Slide 55 text

スライド:https://bit.ly/49WgRfs 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 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 56

Slide 56 text

スライド:https://bit.ly/49WgRfs 56 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 57

Slide 57 text

スライド:https://bit.ly/49WgRfs 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 N B 2.3 G 3.5 I 9.7 探索

Slide 58

Slide 58 text

スライド:https://bit.ly/49WgRfs 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 N B 2.3 G 3.5 I 9.7 探索 3rd iteration

Slide 59

Slide 59 text

スライド:https://bit.ly/49WgRfs 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 N B 2.3 G 3.5 I 9.7 Best Best 探索 ➢ 未チェックの最良候補を選ぶ( ) B

Slide 60

Slide 60 text

スライド:https://bit.ly/49WgRfs 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 N B 2.3 G 3.5 I 9.7 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! B

Slide 61

Slide 61 text

スライド:https://bit.ly/49WgRfs 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 N B 2.3 G 3.5 I 9.7 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す B

Slide 62

Slide 62 text

スライド:https://bit.ly/49WgRfs 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 N B 2.3 G 3.5 I 9.7 Best 0.5 2.1 check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 B

Slide 63

Slide 63 text

スライド:https://bit.ly/49WgRfs 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 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 64

Slide 64 text

スライド:https://bit.ly/49WgRfs 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 N C 0.5 D 2.1 A 3.6 B 2.3 G 3.5 I 9.7 Best 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 B

Slide 65

Slide 65 text

スライド:https://bit.ly/49WgRfs 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 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 66

Slide 66 text

スライド:https://bit.ly/49WgRfs 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 N C 0.5 D 2.1 B 2.3 Best 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) B

Slide 67

Slide 67 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 探索

Slide 68

Slide 68 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 探索 4th iteration

Slide 69

Slide 69 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best Best 探索 ➢ 未チェックの最良候補を選ぶ( ) C

Slide 70

Slide 70 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! C

Slide 71

Slide 71 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す C

Slide 72

Slide 72 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best check! Already visited Already visited Already visited Already visited 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 C

Slide 73

Slide 73 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) C

Slide 74

Slide 74 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 探索

Slide 75

Slide 75 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 探索 5th iteration

Slide 76

Slide 76 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best Best 探索 ➢ 未チェックの最良候補を選ぶ( ) D

Slide 77

Slide 77 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! D

Slide 78

Slide 78 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best Best check! 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す D

Slide 79

Slide 79 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best check! Already visited Already visited 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 D

Slide 80

Slide 80 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best check! Already visited Already visited H 3.9 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 D

Slide 81

Slide 81 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best H 3.9 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 D

Slide 82

Slide 82 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best H 3.9 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) D

Slide 83

Slide 83 text

スライド:https://bit.ly/49WgRfs 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 C 0.5 D 2.1 B 2.3 Best 探索 ➢ 未チェックの最良候補を選ぶ( ) チェック! ➢ 隣接点を探す ➢ qへの距離を記録 ➢ 候補を調整 (size=3) D

Slide 84

Slide 84 text

スライド:https://bit.ly/49WgRfs 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 B 2.3 ➢ 全候補はチェック済み。終わり。 ➢ ここでは がクエリ( )に一番近い C 探索

Slide 85

Slide 85 text

スライド:https://bit.ly/49WgRfs 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 B 2.3 ➢ 全候補はチェック済み。終わり。 ➢ ここでは がクエリ( )に一番近い C 探索 最終出力1:候補集合 ➢ ここからtopkを選択

Slide 86

Slide 86 text

スライド:https://bit.ly/49WgRfs 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 ➢ 全候補はチェック済み。終わり。 ➢ ここでは がクエリ( )に一番近い C 探索 最終出力1:候補集合 ➢ ここからtopkを選択 最終出力2:チェックノード ➢ つまり、探索経路

Slide 87

Slide 87 text

スライド:https://bit.ly/49WgRfs 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 ➢ 全候補はチェック済み。終わり。 ➢ ここでは がクエリ( )に一番近い C 探索 最終出力1:候補集合 ➢ ここからtopkを選択 最終出力2:チェックノード ➢ つまり、探索経路 最終出力3:訪問フラグ ➢ それぞれのノードに対し、 訪れたかどうか

Slide 88

Slide 88 text

スライド:https://bit.ly/49WgRfs 88 基本的特性:速度 ➢ アイテム比較は𝑂 𝐷 ➢ 全体の計算量 ~ #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 89

Slide 89 text

スライド:https://bit.ly/49WgRfs 89 基本的特性:速度 ➢ アイテム比較は𝑂 𝐷 ➢ 全体の計算量 ~ #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 90

Slide 90 text

スライド:https://bit.ly/49WgRfs 90 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 91

Slide 91 text

スライド:https://bit.ly/49WgRfs 91 グラフ探索方式 Images are from an excellent survey paper [Wang+, VLDB 2021] ➢ めちゃくちゃたくさんある ➢ 基本的な構造:良いグラフを設計 + ビームサーチ(先ほど述べたアルゴ) ➢ 有名どころ:HNSW, NSG, NGT

Slide 92

Slide 92 text

スライド:https://bit.ly/49WgRfs 92 ただの探索?Vector DB? ➢ Vector DBの会社は「Vector DBはイケてる!」と言ってます ➢ 自分の考え: ➢ どのvector DB? ➡ まだ結論無し(みんな戦っている) ✓ 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 速度のみが問題であれば、 単にライブラリを使えばいい

Slide 93

Slide 93 text

スライド:https://bit.ly/49WgRfs 93 ➢ 導入:埋め込み+探索+LLMのデモ ➢ 近傍探索・Vector DBの理論 ➢ 今後の展望

Slide 94

Slide 94 text

スライド:https://bit.ly/49WgRfs 94 現状の探索+LLM(RAG)についての心構え ➢ 探索が活きる場面についての基本的思想 ✓ 難しい問題を大規模だが単純な探索問題に落とし込めるとき ✓ 例:複雑な画像認識器 vs 単純kNN認識 ✓ 例:LLM + fine-tuning vs LLM + embedding ➢ 「どうやってLLMに情報を入れるか」という意味でfine-tuneとの対比 ✓ RAGで論文を書けばfine-tuneとの比較を要求され、fine-tuneで論文 を書けばRAGとの比較を要求されるかも。。。 ➢ 現状のRAGは、ML部分をブラックボックス or APIコールと割り切り、 残りは古典的(非ML的)エンジニアリングでやる、ともとれる ✓ 例:LLM自身はありもの ✓ 例:Encoderはblack box特徴量抽出器

Slide 95

Slide 95 text

スライド:https://bit.ly/49WgRfs 95 RAGにおける探索をもっと賢くする近年動向 ➢ ただの埋め込み&ただの探索はナイーブすぎる? ✓ 「質問文に似ている知識」が良い情報とは全然限らない ➢ より賢い探索が良いかもしれない ✓ 古典探索技術がRevisitされている現状! ✓ 例:クエリ拡張。古典技術だったクエリ拡張を画像検索に 適用した[Chum+, ICCV 2007]を思い出す。Revisitは繰り返す! ➢ 進む方向 ✓ 機械学習的に解決するか? (例:特別な埋め込み空間を学習する) ✓ データ構造・アルゴリズム的に解決するか? (例:特殊な操作に対応した探索データ構造)

Slide 96

Slide 96 text

スライド:https://bit.ly/49WgRfs 96 RAGにおける探索をもっと賢くする近年動向 ➢ ただの埋め込み&ただの探索はナイーブすぎる? ✓ 「質問に似ている知識」が良い情報とは全然限らない ➢ より賢い探索が追求されている ✓ 古典探索技術がRevisitされている現状! ✓ 例:クエリ拡張。古典技術だったクエリ拡張を画像検索に 適用した[Chum+, ICCV 2007]を思い出す。Revisitは繰り返す! ➢ 進む方向 ✓ 機械学習的に解決するか? (例:特別な埋め込み空間を学習する) ✓ データ構造・アルゴリズム的に解決するか? (例:特殊な操作に対応した探索データ構造)

Slide 97

Slide 97 text

スライド:https://bit.ly/49WgRfs 97 RAGにおける探索をもっと賢くする近年動向 ➢ ただの埋め込み&ただの探索はナイーブすぎる? ✓ 「質問に似ている知識」が良い情報とは全然限らない ➢ より賢い探索が追求されている ✓ 古典探索技術がRevisitされている現状! ✓ 例:クエリ拡張。古典技術だったクエリ拡張を画像検索に 適用した[Chum+, ICCV 2007]を思い出す。Revisitは繰り返す! ➢ 進む方向 ✓ 機械学習的に解決するか? (例:特別な埋め込み空間を学習する) ✓ データ構造・アルゴリズム的に解決するか? (例:特殊な操作に対応した探索データ構造)

Slide 98

Slide 98 text

スライド:https://bit.ly/49WgRfs 98 近傍探索の観点から考えるべきこと ➢ CPUなのか?GPUなのか?マネージドサービスなのか? ✓ 全てはトレードオフ ✓ NVIDIAはGPU探索を推してきている (RAFT&CAGRA [Ootomo+, arXiv 23]) ✓ 探索部分にお金をかけられるかどうか? ➢ グラフ探索アルゴリズムの『次』 ✓ 近年のグラフ探索論文はかなりエンジニアリング色が強い (例:並列性の追求。ディスクの考慮。) ✓ 全く新しいブレイクスルーが待たれる ➢ 地味だが重要:ベクトルの次元が100ぐらいから1000ぐらいに ✓ 100以上ならPCAして100にしろ、とよく言われていた ✓ LLMのAPI側の制約により、1000でやるしかない状況が生まれる

Slide 99

Slide 99 text

スライド:https://bit.ly/49WgRfs 99 これからの最適化問題:LLMを要素技術として使う時代 ➢ 疑似コード内で、LLMを関数として用いる時代はもう来ている ➢ ある処理を手元でやるか?APIコールにするか? というこれまでになかった選択 ➢ LLM時代・API時代の「再現性」をどう考えるか ➢ ある問題について、どういう解決方式があり、どういうコストを かけると、何が得られるか、おおざっぱに見積もれる必要 オンプレ自前サーバ クラウド(例:ABCI, mdx) APIコール ☺使い放題 初期投資 維持費 ☺バランス クラウドの 調子に依存? ☺激安かも 大量処理は不向き 通信?会社依存? 新しいパラダイムも

Slide 100

Slide 100 text

スライド:https://bit.ly/49WgRfs 100 参考資料 ➢ 近傍探索技術全体のまとめ ➢ 日本語:MIRU19チュートリアル ➢ 英語:CVPR20チュートリアル ➢ グラフ系探索のまとめ ➢ 日本語:YANS23チュートリアル ➢ 英語:CVPR23チュートリアル ➢ RAGに関するおすすめ チュートリアル [Asai+, ACL 2023 Tutorial]

Slide 101

Slide 101 text

スライド:https://bit.ly/49WgRfs 101 ◼ [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 ◼ [Wang+, VLDB 21] M. Wang+, “A Comprehensive Survey and Experimental Comparison of Graph-Based Approximate Nearest Neighbor Search”, VLDB 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 ◼ [Ootomo+, arXiv 23] H. Ootomo+, “CAGRA: Highly Parallel Graph Construction and Approximate Nearest Neighbor Search for GPUs”, arXiv 2023 ◼ [Chum+, ICCV 07] O. Chum+, “Total Recall: Automatic Query Expansion with a Generative Feature Model for Object Retrieval”, ICCV 2007 ◼ [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/ ◼ [Modal] https://modal.com/ Reference