Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
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
My AI Copilot for writing
sashimimochi
1
170
GraphRAG: What I Thought I Knew (But Didn’t)
sashimimochi
1
630
Search Engineer diving into Kubernetes
sashimimochi
1
220
Using GPTs from Local by Dify
sashimimochi
1
840
Max out Local LLM in Challenging Environments
sashimimochi
3
550
Search Engine for Frontend Engineer
sashimimochi
0
220
Other Decks in Technology
See All in Technology
生成AIでテスト設計はどこまでできる? 「テスト粒度」を操るテーラリング術
shota_kusaba
0
710
プロンプトやエージェントを自動的に作る方法
shibuiwilliam
0
840
Snowflakeでデータ基盤を もう一度作り直すなら / rebuilding-data-platform-with-snowflake
pei0804
4
1.4k
因果AIへの招待
sshimizu2006
0
960
「Managed Instances」と「durable functions」で広がるAWS Lambdaのユースケース
lamaglama39
0
310
多様なデジタルアイデンティティを攻撃からどうやって守るのか / 20251212
ayokura
0
430
新 Security HubがついにGA!仕組みや料金を深堀り #AWSreInvent #regrowth / AWS Security Hub Advanced GA
masahirokawahara
1
1.9k
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
190
ChatGPTで論⽂は読めるのか
spatial_ai_network
8
27k
GitHub Copilotを使いこなす 実例に学ぶAIコーディング活用術
74th
3
2.9k
regrowth_tokyo_2025_securityagent
hiashisan
0
230
文字列の並び順 / Unicode Collation
tmtms
3
570
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Being A Developer After 40
akosma
91
590k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Six Lessons from altMBA
skipperchong
29
4.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Faster Mobile Websites
deanohume
310
31k
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