自作DBで理解するベクトル検索のしくみ
概要
自作のPython製リレーショナルDB「KeiPyDB」にベクトル検索機能を組み込んだ過程を辿りながら、ベクトル検索の仕組みを見ていきます。
詳細
自己紹介(2分)
ベクトル検索とは(3分)
キーワード検索との違い。テキストをベクトルに変換して距離で比較するというベクトル検索の基本的な考え方を紹介- ベクトルとコサイン類似度計算(7分)
高校数学のベクトルの概要を振り返りながら、Pythonコードで類似度計算する。ユークリッド距離や内積といった他の手法との違い - 自作DBにベクトル検索を追加(8分)
DBにベクトル検索を追加するためのステップを、pgvectorやsqlite-vecといった既存の実装にも触れながら、実際のコードとともに解説 - Appendix: HNSWインデックスについて。(5分)
線形スキャンの計算量とHNSWインデックス。Small World現象を出発点に、HNSWがなぜ高速に似たデータを見つけられるのかを簡単に紹介 - まとめと質疑応答(5分)
このトピックに関するあなた自身の経験を教えてください
業務でベクトル検索のキャッチアップが必要になったことをきっかけに、pgvectorの実装やHNSWの原論文を読み、仕組みを理解しました。最近では、生成AIにコードを書かせることが主流になりつつあります。しかし、だからこそ、「なぜこのコードで動くのか」を理解することが大切だと考え、実際に自作DBにベクトル検索機能(ベクトルカラム)を組み込みました。
この発表を通じて、参加者とどんな議論が可能ですか?
- ベクトル検索が適する場面・適さない場面について
- 参加者自身のプロジェクトでベクトル検索をどう使えそうか
- キーワード検索とのハイブリッド検索をどのように組み合わせるか
k-kamijo
塾選を運営する株式会社DeltaX(デルタエックス)のエンジニアです。
主に、バックエンド、CI/CDなどを担当しています。
Githubレポジトリ:https://github.com/kei-kmj