Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Start Vector Search with Solr
Search
Sashimimochi
April 27, 2023
Technology
1.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Start Vector Search with Solr
エンジニア達の「完全に理解した」Talk #40の登壇資料です。
https://easy2.connpass.com/event/279632/
Sashimimochi
April 27, 2023
More Decks by Sashimimochi
See All by Sashimimochi
MCPでつなぐElasticsearchとLLM - 深夜の障害対応を楽にしたい / Bridging Elasticsearch and LLMs with MCP
sashimimochi
1
490
Alert on Call with LLM
sashimimochi
1
330
My AI Copilot for writing
sashimimochi
1
340
GraphRAG: What I Thought I Knew (But Didn’t)
sashimimochi
1
860
Search Engineer diving into Kubernetes
sashimimochi
1
340
Using GPTs from Local by Dify
sashimimochi
1
970
Max out Local LLM in Challenging Environments
sashimimochi
3
680
Search Engine for Frontend Engineer
sashimimochi
0
310
Other Decks in Technology
See All in Technology
手を動かして実感する、Kiro が変える開発体験
inariku
0
320
あけおめLINE 傾向とその対策
nasa9084
0
330
Why Agent Cost Needs Observability
nttcom
0
160
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
150
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
3.7k
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
33
32k
spanner-autoscalerに学ぶ CRD設計パターン 〜自動化と緊急時対応を両立する Kubernetesコントローラーの作り方〜
tkuchiki
0
130
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
0
530
Making AI Agents Safe and Fast- Jev, Obsidian, and the Meta-Harness
x5gtrn
PRO
0
140
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
sanghyuk
0
150
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
1
480
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
440
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Building Adaptive Systems
keathley
44
3.2k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.8k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
New Earth Scene 8
popppiees
4
2.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The Curse of the Amulet
leimatthew05
3
15k
The Invisible Side of Design
smashingmag
301
52k
Scaling GitHub
holman
464
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Transcript
Solrで始める ベクトル検索 さしみもち 2023/4/27 【オンライン】エンジニア達の「完全に理解した」Talk #40
自己紹介 2 さしみもち @Sashimimochi343 普段は、検索エンジンを触ったり、 自然言語処理をやっている人です 最近は、月1ペースでTRPGのセッ ションを開いています その関係もあって、StableDiffusion でキャラ作成するにハマっています
ベクトル検索を使えば... 3
ベクトル検索を使えば... 4 高精度なテキスト toテキスト検索
ベクトル検索を使えば... 5 テキストto画像 検索 高精度なテキスト toテキスト検索
ベクトル検索を使えば... 6 画像to画像検索 テキストto画像 検索 高精度なテキスト toテキスト検索
Solr9でついにベクトル検索が可能に! 7 ベクトル検索 (゚∀゚)キタコレ!! https://solr.apache.org/guide/solr/9_0/upgrade-notes/major-changes-in-solr-9.html
Solrで始めるベクトル検索 8
Solrで始めるベクトル検索 9 ??? ???
Solrで始めるベクトル検索 10 ??? ???
Solrとは 11 全文検索エンジンの1つです
Solrとは 12 全文検索エンジンの1つです ????? ?????
全文検索ってなに? • 文字通り、検索対象のドキュメントを全てスキャン して該当するドキュメントを探し出す • 入力文字(クエリ)とのキーワードマッチで検索する 13 最 初 か
ら 最 後 ま で ス キ ャ ン 全文検索に特化した検索アルゴリズムを持ち、 高速に検索を行えるシステムが 全文検索エンジン
転置インデックス 14 1. I have a bag. 2. I play
tennis. 3. I eat rice. word Doc ID I 1,2,3 have 1 a 1 bag 1 play 2 tennis 2 eat 3 rice 3 • どのドキュメントにどの単語が含まれているかを 記した表 • 本の索引のようなもの • 単語から高速に該当ドキュメントを見つけ出せる
詳しくは... 【オンライン】完全に理解した人達の「完全に理解したTalk」 #6 - connpass https://easy2.connpass.com/event/178429/ 15
Solrとは 16 • Java製の全文検索エンジンの1つ • Apacheコミュニティ保有のOSS • Apache License 2.0のため、誰でも無料で商用利用も可
• OSSでありながら商用検索エンジンを凌駕する豊富な検索 機能と高い耐障害性を備えている • 国内外問わず多くの企業で採用されている https://solr.apache.org/
Solrで始めるベクトル検索 17 全文検索 エンジンの1つ ???
ベクトル検索とは 18 • 数字配列(ベクトル)を使った検索 • ベクトルの距離が近ければ類似アイテム CPU Memory(GB) Disk(GB) GPU(GB)
4 8 512 8 あるパソコンに似たパソコンを探したい
ベクトル検索の例 19 https://corp.zozo.com/news/20190826-8586/ https://techconference.yahoo.co.jp/2022/ 究極的にはベクトル化できれば「音楽」、「動画」、「香り」何でも比較可能
ベクトル検索の距離 20 • 代表的なものはコサイン類似度 • 2つのベクトルの間の角度で表す • -1~1で1に近いほど似ている
ベクトル検索と全文検索の違い 21 全文検索 【検索方法】 • ベクトルの類似性マッチ • マルチメディア間で検索可能 • 完全一致しなくても似ている
かが判別可能 【検索アルゴリズム】 • ベクトル間で類似度計算 • 逐次類似度計算をすると非常 に高コスト 【検索方法】 • キーワードマッチ • 何でヒットしたかがわかりやすい • 表記がちょっとでも違うとヒット しない 【検索アルゴリズム】 • 転置インデックス • 大量のドキュメントを高速に検索 が可能 ベクトル検索
ベクトル検索と全文検索の違い 22 全文検索 【検索方法】 • ベクトルの類似性マッチ • マルチメディア間で検索可能 • 完全一致しなくても似ている
かが判別可能 【検索アルゴリズム】 • ベクトル間で類似度計算 • 逐次類似度計算をすると非常 に高コスト 【検索方法】 • キーワードマッチ • 何でヒットしたかがわかりやすい • 表記がちょっとでも違うとヒット しない 【検索アルゴリズム】 • 転置インデックス • 大量のドキュメントを高速に検索 が可能 ベクトル検索 検索アルゴリズムが全然違う これが長らく全文検索エンジンと融合できなかった理由 独自にベクトル検索ライブラリが発展 ex. annoy, faiss, etc.
近似最近傍探索 23 いろいろやり方はあるが、あらかじめ検索候補を ざっくり絞り込んで、その中でだけ真面目に類似 度計算する 計算量を減らしつつ、かなり全探索に近い精度で 類似ベクトルを見つけられる https://erikbern.com/2015/10/01/nearest-neighbors-and-vector-models-part-2-how-to-s earch-in-high-dimensional-spaces.html
Solrで始めるベクトル検索 24 数値配列を使って画像検索 などの新しい検索ができる 全文検索 エンジンの1つ
ベクトル検索のためのSolr定義 25 この2行足すだけ managed-shema
ベクトル検索のためのインデックスデータ 26 index.json • 配列形式でインデックスを作るだけ • 次元数はmanaged-shemaで定義し た数に合わせる
ベクトル検索のためのリクエストクエリ 27 • 配列形式でベクトルをクエリ に渡して検索するだけ • 類似度が高い順に検索結果が 返ってくる
ベクトル検索の応用例 28 キーワードマッチしなくても それっぽい文章がちゃんと検索出来た!! テキストtoテキスト検索
ベクトル検索の応用例 29 画像to画像検索 テキストto画像検索 全文検索ではできな かったテキスト以外の 検索も可能に!!
実は使い方や使用感のドキュメントが全然なくて... 30 公式ドキュメント以外にまともなものが見つからなかったので自分で書きました
技術書典14にてベクトル検索本を頒布します!! 31 予定です • 第1章:全文検索とApache Solr • 第2章:全文検索エンジンとしてSolrを動かす • 第3章:ベクトル検索の理論とそれを支える要
素技術 • 第4章:Solr上でベクトル検索を動かす • 第5章:実データを使ってベクトル検索をする 現在、絶賛鋭意執筆中!
まとめ 32 • Solrは全文検索エンジンの1つ • 従来のキーワードベースの全文検索と違って、ベクトル検索は 数値を使って検索する • ベクトル化できれば、テキスト、画像、音声、動画何でもOK •
Solr上でなら全文検索とベクトル検索を両立して、全く新しい 検索体験を作れる! みなさんも Let’s ベクトル検索!!
ChatGPTとの関係 33 Q. ChatGPTでもベクトル化できるって聞いたけど A. はい、できます。すでにやってみた報告はちらほら • オレオレChatGPTのかんたん実装 (Google検索 + ベクトル検索) https://zenn.dev/tfutada/articles/b4062347cb4769
• ChatGPT_APIのEmbedding_カスタマイズ入門 - Speaker Deck https://speakerdeck.com/ryoheiigushi/chatgpt-apinoembedding-kasutamai suru-men ただ、Solrとは相性が悪いです... https://platform.openai.com/docs/guides/embeddings/what-are-embeddings Solrの許容次元数1024 を超えている
その他参考資料 • Solr9 から導入されたベクトル検索ってどうなのよ? - Qiita https://qiita.com/Sashimimochi/items/b52e9ea80f54d7e451ce • Solr9 から導入されたベクトル検索ってどんな感じ?
https://zenn.dev/sashimimochi/articles/1957974d64d571 • rinna/japanese-clip-cit-b-16 https://huggingface.co/rinna/japanese-clip-vit-b-16 • フリー素材ぱくたそ www.pakutaso.com 34
使用したデータセット • livedoorニュースコーパス https://www.rondhuit.com/download.html#news%20corpus • 京都大学テキストコーパス https://nlp.ist.i.kyoto-u.ac.jp/index.php?%E4%BA%AC%E9%83%BD%E5 %A4%A7%E5%AD%A6%E3%83%86%E3%82%AD%E3%82%B9%E3%83%8 8%E3%82%B3%E3%83%BC%E3%83%91%E3%82%B9 •
京都大学ウェブ文書リードコーパス https://nlp.ist.i.kyoto-u.ac.jp/index.php?KWDLC • Food-101 https://data.vision.ee.ethz.ch/cvl/datasets_extra/food-101/ 35