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
1k
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
GraphRAG: What I Thought I Knew (But Didn’t)
sashimimochi
1
380
Search Engineer diving into Kubernetes
sashimimochi
1
130
Using GPTs from Local by Dify
sashimimochi
1
620
Max out Local LLM in Challenging Environments
sashimimochi
3
480
Search Engine for Frontend Engineer
sashimimochi
0
200
Other Decks in Technology
See All in Technology
MCP Documentation Server @AI Coding Meetup #1
yyoshiki41
1
2k
30 代子育て SRE が考える SRE ナレッジマネジメントの現在と将来
kworkdev
PRO
0
180
GitHub MCP Serverを使って Pull Requestを作る、レビューする
hiyokose
2
580
Cline、めっちゃ便利、お金が飛ぶ💸
iwamot
20
19k
新卒1年目のフロントエンド開発での取り組み/New grad front-end efforts
kaonavi
0
140
ウォンテッドリーにおける Platform Engineering
bgpat
0
170
Amebaにおける Platform Engineeringの実践
kumorn5s
5
840
ソフトウェア開発現代史: なぜ日本のソフトウェア開発は「滝」なのか?製造業の成功体験とのギャップ #jassttokyo
takabow
3
1.8k
職種に名前が付く、ということ/The fact that a job title has a name
bitkey
1
270
滑らかなユーザー体験も目指す注文管理のマイクロサービス化〜注文情報CSVダウンロード機能の事例〜
demaecan
0
130
生成AI時代のセキュアCI/CDとソース管理
yuriemori
0
110
ペアプログラミングにQAが加わった!職能を超えたモブプログラミングの事例と学び
tonionagauzzi
1
160
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
118
51k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
What's in a price? How to price your products and services
michaelherold
245
12k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Agile that works and the tools we love
rasmusluckow
328
21k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Building Applications with DynamoDB
mza
94
6.3k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Music & Morning Musume
bryan
46
6.4k
Embracing the Ebb and Flow
colly
85
4.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
102
19k
Visualization
eitanlees
146
16k
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