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
LLMアプリケーションで使用するVector Databaseの比較
Search
西岡 賢一郎 (Kenichiro Nishioka)
March 29, 2024
Technology
0
1.9k
LLMアプリケーションで使用するVector Databaseの比較
機械学習の社会実装勉強会第33回 (
https://machine-learning-workshop.connpass.com/event/313574/
) の発表で使用した資料です。
西岡 賢一郎 (Kenichiro Nishioka)
March 29, 2024
Tweet
Share
More Decks by 西岡 賢一郎 (Kenichiro Nishioka)
See All by 西岡 賢一郎 (Kenichiro Nishioka)
LangGraph Templatesによる効率的なワークフロー構築
knishioka
0
45
AIエージェントの開発に特化した統合開発環境 LangGraph Studio
knishioka
0
83
LangGraphを用いたAIアプリケーションにおけるメモリ永続化の実践
knishioka
0
200
Text-to-SQLをLangSmithで評価
knishioka
0
150
効果的なLLM評価法 LangSmithの技術と実践
knishioka
1
310
LangGraphのノード・エッジ・ルーティングを深堀り
knishioka
0
400
LangGraphでマルチエージェントワークフローを構築
knishioka
0
340
LLMアプリケーションの デバッグ・テスト・評価・監視を楽にするLangSmith
knishioka
0
280
LangChainから学ぶプロンプトエンジニアリングテクニック
knishioka
0
270
Other Decks in Technology
See All in Technology
日経電子版におけるリアルタイムレコメンドシステム開発の事例紹介/nikkei-realtime-recommender-system
yng87
1
500
フルカイテン株式会社 採用資料
fullkaiten
0
36k
Apple/Google/Amazonの決済システムの違いを踏まえた定期購読課金システムの構築 / abema-billing-system
cyberagentdevelopers
PRO
1
220
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
9
120k
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
290k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
49k
Amazon_CloudWatch_ログ異常検出_導入ガイド
tsujiba
4
1.6k
新卒1年目が向き合う生成AI事業の開発を加速させる技術選定 / ai-web-launcher
cyberagentdevelopers
PRO
7
1.5k
[JAWS-UG金沢支部×コンテナ支部合同企画]コンテナとは何か
furuton
3
260
Fargateを使った研修の話
takesection
0
120
omakaseしないための.rubocop.yml のつくりかた / How to Build Your .rubocop.yml to Avoid Omakase #kaigionrails
linkers_tech
3
740
顧客が本当に必要だったもの - パフォーマンス改善編 / Make what is needed
soudai
24
6.8k
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Automating Front-end Workflow
addyosmani
1365
200k
Fashionably flexible responsive web design (full day workshop)
malarkey
404
65k
It's Worth the Effort
3n
183
27k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
Visualization
eitanlees
144
15k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
For a Future-Friendly Web
brad_frost
175
9.4k
Side Projects
sachag
452
42k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
328
21k
A Philosophy of Restraint
colly
203
16k
Transcript
LLMアプリケーションで使用する Vector Databaseの比較 2024/03/30 第33回勉強会
自己紹介 • 名前: 西岡 賢一郎 ◦ Twitter: @ken_nishi ◦ note:
https://note.com/kenichiro ◦ YouTube: 【経営xデータサイエンスx開発】西岡 賢一郎のチャンネル (https://www.youtube.com/channel/UCpiskjqLv1AJg64jFCQIyBg) • 経歴 ◦ 東京大学で位置予測アルゴリズムを研究し博士 (学術) を取得 ◦ 東京大学の博士課程在学中にデータサイエンスをもとにしたサービスを提供する株式会社ト ライディアを設立 ◦ トライディアを別のIT会社に売却し、CTOとして3年半務め、2021年10月末にCTOを退職 ◦ CDPのスタートアップ (Sr. PdM)・株式会社データインフォームド (CEO)・株式会社ディース タッツ (CTO) ◦ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験
本日のお話 • はじめに • LLMアプリケーションとVector Database • Vector Databaseの概要 •
Vector Databaseの種類と比較 • Vector Database選択のためのガイドライン
はじめに プレゼンテーションの目的: LLMアプリケーションに適したVector Databaseの 選択を助けること • 概要: Vector Databaseの基本概念、主要な特徴、種類、応用事例、選択の ためのガイドラインを提示
• 主要なトピック: LLMアプリケーション、Vector Databaseの必要性、技術 的課題、LangChainとRAG
今回の話に含まれないもの • RAG (Retrieval Augmented Generation) の仕組み • 最近傍探索のアルゴリズムの詳細 •
Vector Databaseやライブラリの詳細
LLMアプリケーションとは • LLMの定義 ◦ Large Language Models (LLM) ◦ AIモデルが大規模なテキストデータから言語の構造や意味を学習
• LLMの特徴 ◦ 言語の本質的な理解 ◦ 様々なタスクを実行可能 • LLMアプリケーションの事例 ◦ 文章生成 ▪ ニュース記事の自動要約 ▪ 小説の続きを書くクリエイティブなタスク ◦ 感情分析 ◦ 翻訳 ◦ 対話システム ▪ チャットボット ▪ 仮想アシスタント • LLMアプリケーション開発の課題: 大量の非構造化データの効果的な入力方法
Vector Databaseの必要性 • 構造化されていないデータの増加: テキスト、画像、 動画などの非構造化データが急増 • Vector Databaseによる解決策: ◦
非構造化データをベクトル表現に変換し、効 率的に格納・検索 ◦ 類似度検索により、関連性の高いデータを高 速に取得
Vector Databaseの概要
Vector Databaseの基本概念 • Vector Database: 高次元ベクトルデータを格納・検索するためのデータ ベース • 主要な機能とメリット: ◦
高速な類似度検索: コサイン類似度、ユークリッド距離など ◦ スケーラビリティ: 大規模データにも対応 ◦ 柔軟なデータモデル: 構造化・非構造化データを統合
Vector Databaseの主要な特徴 • 高速な (近似) 最近傍探索 • スケーラビリティ: 水平・垂直スケーリングによる拡張性 •
マルチテナンシー: 複数のユーザーやアプリケーションをサポート • 豊富なAPI: RESTful API、Python、JavaなどのSDK • ユーザーインターフェース (連携): Webベースの管理画面、可視化ツールな ど
Vector Databaseの種類と比較
LangChainでサポートされているVector Database? • Vectore Storeとは、埋め込みデータの保存とベクト ル検索の実行をやってくれるLangChainの機能の一 つ • LangChainのVectore Storeのページにいくと
Chroma, FAISS, Lanceの3つの事例が紹介されてい る ◦ https://python.langchain.com/docs/modul es/data_connection/vectorstores/ • LangChainを使うならこの3つから選べばいいかと思 いきや実はそうではない。
LangChainがサポートしているVector DB • LangChainがサポートしているVector Databaseは ソースコードを確認するのが一番早い ◦ https://github.com/langchain-ai/langchai n/tree/master/libs/langchain/langchain/v ectorstores
• Vector Storeで使えるものはVector Library (Vectore Databaseとの違いは後のスライドで説明) も含むと約50種類
Vector Databaseの種類 Vector DB 特徴 対象ユースケース Milvus • 高いパフォーマンスと拡張性 •
大規模データセット対応 • 複雑なインデックス構築 • 大規模データセットを扱うアプリケーション Weaviate • RESTful APIとGraphQLサポート • マルチモーダル検索 • Dockerを使った簡単デプロイ • マルチモーダル検索が必要な場合 • GraphQLを使いたい場合 pgvector • PostgreSQLの拡張機能 • 既存のPostgreSQLインフラを活用可能 • SQLでベクトル検索 • 既存のPostgreSQLインフラを活用したい場合 • SQLでベクトル検索をしたい場合 Chromadb • シンプルで使いやすい API • 埋め込みデータベースとしても利用可能 • マルチモーダル検索サポート • 小規模プロジェクト • シンプルなVector Databaseを探している場合
Vector DatabaseとVector Libraryの違い 特徴 Vector Library Vector Database データの保存 ベクトルのみ
ベクトルとオブジェクトの両方 データの更新(CRUD) 一部(例: hnswlib)を除き、インデック スは不変で更新不可 データの追加、削除、更新が可能 インポート中のクエリ 一部(例: hnswlib)を除き、インポート 中のクエリは不可 インポート中でもリアルタイムにクエリ可能 速度 インメモリ検索に最適化され、通常は データベースより高速 エンドツーエンドの処理(ベクトル検索、永続ストレージからのオブジェクト取得、 ネットワークリクエストなど)に最適化 永続性と耐障害性 スナップショットのみ。クラッシュからの 回復機能なし 即時の永続化。耐障害性あり シャーディングとレプリケーショ ン サポートなし(一部のサードパーティプ ロジェクトで可能) サポートあり(例: Weaviateはv1.17からレプリケーションに対応) バックアップ、デプロイ、 SDK 自前で構築が必要 自動バックアップ、Dockerなどのデプロイエコシステム、複数言語の SDKを提供 参考: https://weaviate.io/blog/vector-library-vs-vector-database#feature-comparison---library-versus-database
Vector Database選択のためのガイドライン
Vector Database選択のためのガイドライン • プロジェクトの特定ニーズの評価 ◦ データの種類とサイズ:画像、テキスト、音声など、扱うデータの種類と量 ◦ クエリのタイプと頻度:リアルタイム検索、バッチ処理、ストリーミングデータの処理能力 ◦ パフォーマンスとレイテンシー要件:応答時間とスループットのニーズ
• 技術的・運用的考慮事項 ◦ スケーラビリティと拡張性:将来のデータ成長に対応できるか。 ◦ インフラストラクチャ:クラウドベース、オンプレミス、ハイブリッド ◦ データの安全性とプライバシー:暗号化、アクセス制御、コンプライアンス • 汎用的な評価基準 ◦ 技術サポートとコミュニティの活動:開発者ドキュメント、チュートリアル、フォーラムの 質 ◦ ベンダーの安定性と将来性:企業の健全性、製品のロードマップ ◦ コストとライセンス:使用料金、オープンソースライセンスの条件
ベンチマークテストは比較サイトを利用 • すべてを自分で検証する必要はなく、ANN Benchmarksのようなサイトを使うのがおすすめ https://ann-benchmarks.com/ • よく使われる指標を2つ ◦ Recall ▪
検索の正確性を測る指標。 ▪ 検索された正しい最近傍の数を、実際 の最近傍の総数で割った比率。 ▪ 値が高いほど、正確な検索結果を得ら れていることを示す。 ◦ Queries per second (QPS)(クエリ毎秒) ▪ ライブラリの処理速度を測る指標。 ▪ 1秒あたりに処理できるクエリの数。 ▪ 値が大きいほど、高速にデータを検索 できることを示す。
Embedding Modelの変更の可能性も考慮に入れる • 非構造化データをベクトル化するEmbedding Modelは、変更される可能性が あることを考慮しておく • Modelが変われば当然ベクトルもすべて生成し直す必要がある • Embedding
Modelを変更する理由 ◦ 新しいモデルのリリース (e.g. OpenAIの第3世代のEmbedding Modelのリリース) ◦ APIからセルフホスティングのモデルに移行 (e.g. OpenAI APIから自社サーバにインストール された日本語特化のEmbedding Modelを使う)
pgvector • PostgreSQLの拡張であるため、PostgreSQLの知識 が必要 ◦ git clone → make &
make install ◦ CREATE EXTENSION vector; • PostgreSQLなので経験のある人材を探すことは簡単 • デフォルトのインデックスを使うと最近傍探索であ ることに注意 • 近似最近傍探索 (ANN) を利用することも可能 ◦ HNSW ◦ IVFFlat • ベクター用の特殊な演算使用できる ◦ <-> : Euclidean Distance ◦ <#> : Negative Inner Product ◦ <=> : Cosine Distance
Chroma DB • https://www.trychroma.com/ • 導入はトップクラスの簡単さ ◦ テストで使うために必要な作業を極端になく しており、Pythonを実行しているだけで Vector
Databaseを立ち上げることが可能 ◦ データの永続化はもちろんのこと、サーバー モードでの起動もできる • 名前がすこしググりにくい (Chrome関連情報がヒッ トしてしまう) • Embedding (デフォルトでall-MiniLM-L6-v2) の機 能も持ち合わせているが、別のEmbedding Modelを 使うケースが多いので利点とはならない。
まとめ • LLMアプリケーションで、非構造化データを取り扱ったRAGなどを構築する 場合はVector Databaseが必要となってくる • LangChainは主要なVector Databaseにほぼ対応しているので、LangChain によるVector Databaseの制限はないと考えて良い
• Vector Databaseを選ぶ際は、プロジェクトの特定ニーズの評価、技術的・ 運用的考慮事項、汎用的な評価基準などを考慮しながら検討する • Embedding Modelが変更される可能性も考慮して、Vector Databaseの運用 について考えていく必要がある