Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Start Vector Search with Solr
Search
Sashimimochi
April 27, 2023
Technology
1
960
Start Vector Search with Solr
エンジニア達の「完全に理解した」Talk #40の登壇資料です。
https://easy2.connpass.com/event/279632/
Sashimimochi
April 27, 2023
Tweet
Share
More Decks by Sashimimochi
See All by Sashimimochi
Search Engineer diving into Kubernetes
sashimimochi
1
75
Using GPTs from Local by Dify
sashimimochi
1
430
Max out Local LLM in Challenging Environments
sashimimochi
3
430
Search Engine for Frontend Engineer
sashimimochi
0
180
Other Decks in Technology
See All in Technology
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
880
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
170
Engineer Career Talk
lycorp_recruit_jp
0
190
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
200
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
430
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
180
CDCL による厳密解法を採用した MILP ソルバー
imai448
3
120
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
190
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
130
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
1k
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
170
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Bash Introduction
62gerente
608
210k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Scaling GitHub
holman
458
140k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
RailsConf 2023
tenderlove
29
900
A designer walks into a library…
pauljervisheath
204
24k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
Adopting Sorbet at Scale
ufuk
73
9.1k
Typedesign – Prime Four
hannesfritz
40
2.4k
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