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
MongoDB Atlas Vectorsearchではじめる生成AIアプリ開発
Search
chie8842
March 20, 2024
Technology
3
1.6k
MongoDB Atlas Vectorsearchではじめる生成AIアプリ開発
第39回 MLOps 勉強会の資料
https://mlops.connpass.com/event/312260/
#mlopsコミュニティ
chie8842
March 20, 2024
Tweet
Share
More Decks by chie8842
See All by chie8842
MongoDB Atlas Search のご紹介
chie8842
2
1.6k
AWS GlueとAWS Lake Formationではじめるデータマネジメント
chie8842
0
1.1k
Distributed Processing in Python
chie8842
2
710
クックパッドにおける推薦(と検索)の取り組み
chie8842
20
8k
Understanding distributed processing in Python
chie8842
2
2k
Performance Tuning Tips of TensorFlow Inference
chie8842
1
750
クックパッドにおけるCloud AutoML事例
chie8842
9
7.9k
Cookpad_Internship_MLOps_Lecture_2018
chie8842
35
16k
機械学習デプロイを支えるコンテナ技術(Machine Learning on Docker)
chie8842
14
8.4k
Other Decks in Technology
See All in Technology
LLM アプリケーションのためのクラウドセキュリティ - CSPM の実装ポイント-
osakatechlab
0
340
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
640
DjangoCon Europe 2025 Keynote - Django for Data Science
wsvincent
0
520
Simplify! 10 ways to reduce complexity in software development
ufried
2
240
AIにおけるソフトウェアテスト_ver1.00
fumisuke
1
360
Microsoft の SSE の現在地
skmkzyk
0
300
3D生成AIのための画像生成
kosukeito
2
610
OPENLOGI Company Profile for engineer
hr01
1
26k
グループ ポリシー再確認 (2)
murachiakira
0
230
さくらのクラウド開発の裏側
metakoma
PRO
0
270
非root化Androidスマホでも動く仮想マシンアプリを試してみた
arkw
0
120
AWSを利用する上で知っておきたい名前解決の話
nagisa53
6
780
Featured
See All Featured
Faster Mobile Websites
deanohume
307
31k
Scaling GitHub
holman
459
140k
The World Runs on Bad Software
bkeepers
PRO
68
11k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
13
840
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
The Invisible Side of Design
smashingmag
299
50k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Why Our Code Smells
bkeepers
PRO
336
57k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Designing Experiences People Love
moore
142
24k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
41
2.3k
Transcript
MongoDB Atlas Vectorsearchで はじめる⽣成AIアプリ開発 Welcome 林⽥ 千瑛(Chie Hayashida) MongoDB Singapore
Solutions Architect
⾃⼰紹介 林⽥ 千瑛 MongoDB Sigapore のソリューションアーキテクト インフラエンジニア→ソフトウェアエンジニア→ソリューションアーキテクト Web企業にてデータ基盤・機械学習基盤・検索サービス開発に 従事した後、AWSのアナリティクススペシャリストソリューション アーキテクトを経て2023年11⽉からMongoDBに⼊社
お問い合わせ、技術質問等ありましたら、 画⾯右上のQRコードのGoogle Formから お問い合わせお願いします
このセッション・デモの内容は、期限なし 無料のMongoDB Atlas M0 クラスタで ご利⽤いただけます ※本番環境としては、課⾦が必要なM10以上の利⽤をおすすめします ※ M0クラスタでは、インデックス作成は3つまで等の制限があります ※
デモの内容は別途OpenAIのAPIが必要です
LLMによる質問応答 LLM アプリケーション 開発フレームワーク 質問 (プロンプト) ⽣成された回答 LLM プロバイダ ⽬⽟焼きの作り⽅を
教えて 卵を割ってフライパ ンに⼊れて、、、
LLM の課題 LLMモデルの学習データに含まれない内容について答えられない • 「今⽇の天気」などのリアルタイムな情報、組織や個⼈固有のデータに基づく質疑応答が できない Retrieval Augmented Generation (RAG)
LLMモデルのコンテキスト不⾜による問題を情報検索技術との融合に より解決 • 信頼性の低いデータに基づく回答が⾏われる場合がある • それっぽい嘘情報を答えてしまう(Hallucination)
Retrieval-Augmented Generation (RAG) ハリー、呪⽂の 書を使うんだ︕ えっと、えっと、 と、⾶べ︖ わかったぞ︕ “ウィンガーディアム・ レヴィオーサ!”
ハリー︕ものを浮かせる 呪⽂を答えよ︕ LLM RAG
Retrieval-Augmented Generation (RAG) ベクトル検索により 不⾜するコンテキストを 追加して回答を得る ハリー、呪⽂の 書を使うんだ︕ えっと、えっと、 と、⾶べ︖
わかったぞ︕ “ウィンガーディアム・ レヴィオーサ!” ハリー︕ものを浮かせる 呪⽂を答えよ︕ LLM RAG
ベクトル検索 データを数値配列で表し、距離の近いものを類似データとして抽出する Mozzarella [0.3, 0.9] Cheese [0.5, 0.7] Pizza [0.3,
0.4] Cheddar [0.9, 0.2] Added Mar 2023 ビーフ チキン ポーク ⿅⾁ ⾺⾁ ほうれん草 ネギ にんじん ピー マン じゃがいも ⾁ 野菜 [0.3, 0.4, 0.2, 0.1…] Vector
インデックス ベクトルデータの⽣成⽅法 LLMとは別の「Embeddingモデル」というタイプの機械学習モデルを利⽤ Embedding モデル OpenAI, Cohere, Anthropic, HuggingFace, Vertex
など ドキュメント 画像 ⾳声 動画 [0.4 0.7 0.9 … [0.2 0.3 0.8 … [0.1 0.6, 0.3 … [0.5 0.1 0.2 . . . [0.7 0.3 0.2 … [0.45 0.15 0.8 … Embeddings ベクターストア
LLMによる質問応答 LLM アプリケーション 開発フレームワーク 質問 (プロンプト) ⽣成された回答 LLM プロバイダ 今⽇の天気は︖
今⽇の天気はわかりません
RAGによる質問応答 LLM アプリケーション 開発フレームワーク 質問 (プロンプト) ⽣成された回答 LLM プロバイダ 今⽇の天気は︖
今⽇の天気は晴れです 質問︓今⽇の天気は︖ 関連⽂書︓3⽉20⽇の天気は… 天気予報ニュースの ベクトルデータ
RAGによる質問応答 LLM アプリケーション 開発フレームワーク 質問 (プロンプト) ⽣成された回答 LLM プロバイダ 今⽇の天気は︖
質問︓今⽇の天気は︖ 関連⽂書︓3⽉20⽇の天気は… 天気予報ニュースの ベクトルデータ 今⽇の天気は晴れです
Retool 社によるState of AI 2023 Surveyのベクトル データベースレビューにおいてダントツのNPS Linked
Atlas Vectorsearchの使いやすさ ベクトルデータとテーブル データを⼀緒に保存 統合的データプラットフォー ムとしての様々な機能を持つ フルマネージドサービス エンタープライズレベルの セキュリティや機能 マルチクラウド
検索とデータベースクエリ のリソースを分離 テーブルデータ、グラフデータ、地 理空間データ、時系列データなども 利⽤可能な柔軟なデータモデル
[0.3, 0.4, 0.2, 0.1…] Vector ベクトル検索と他のタイプのクエリを簡単に組み合わせる ことで、よりリッチな機能をより簡単に構築 "クエリ画像に似ている画像をすべて検索し、撮影者IDで グループ化する" "ユーザーのクエリに⼀致する、過去3ヶ⽉に公開された
コンテンツのみを検索する" "現在地から10マイル以内のレストランで、私の好みに 合うものを推薦する" メタデータを利⽤したフィルタリングとの統合 データベースのデータとの統合 地理空間検索との統合
Vector Operational アーキテクチャをシンプルに保つ • ドキュメントデータモデルに より、構造化データ、⾮構造 化データ、ベクトルデータを ⼀つのスキーマで管理可能 • データ同期不要
• ⼀つのAPIでデータベースクエ リとベクトル検索を組み合わ せた複雑なクエリを実現 MongoDB Atlas Document ベクトル専⽤データベースの導⼊→複雑なデータ同期 /API管理が必要となる RDBMSへのベクトル保存→ベクトル化対象データが 複数テーブルに散らばるので管理が難しい Operational data Vector data Newly added data as app requirements evolve
⽣成AIアプリ開発のためのツールやエコシステムとの統合 Developer Data Platform Atlas Any developer framework Any embedding
provider OpenAI, Cohere, AWS, Hugging Face, etc. Langchain, LlamaIndex, etc. Any foundation model OpenAI, Anthropic, Cohere, Hugging Face, AWS, Google あらゆるクラウド環境・地域で 利⽤可能 AWS, Azure, and Google Cloud の110以上のリージョンに対応
Vector Search GEN AI powered APP LLM Prompt Context Orchestration
Layer Single View _id: ObjectID(‘62f13a3fe7321ca47aecb216’) symbol: “ABMD” quarter: 4 year: 2021 Date: 2021-04-29T20:10:40.000+00:00 Content: “Operator: Ladies and gentleman, thank you for standing by, and welcome…” Content_embeddings: Array 0: 0.03898080065846443 1: -0.05879044905304909 2: 0.04323239979442215 3: -0.021337900310754776 4: -0.036346953362226486 5: 0.028689613565802574 6: -0.03514527902007103 7: -0.07414846867322922 8: -0.00993054173886776 9: 0.007234036456793547 10: -0.03197460621595383 ドキュメントに格納される埋め込みベクトルの例 ベクトル埋め込み
{ "mappings": { "fields": { "content_embedding": { "type": "knnVector", "dimensions":
1536, "similarity": "<euclidean | dotProduct | cosine>" }, "field1": { "type": "date" }, // optional "field2": { "type": "double" } // optional } } } Vector Search GEN AI powered APP LLM Prompt Context Orchestration Layer Single View Vector Search のインデックス ディメンション 類似度計算 アルゴリズム の選定 ベクトル埋め込みフィールド名
[{ "$vectorSearch": { "knnBeta": { "vector": [ 0.03898080065846443, ... ],
"path": "content_embedding", "k": 5 "filter": { // traditional point & range queries }, } } }] Vector Search GEN AI powered APP LLM Prompt Context Orchestration Layer Single View Vector Search のクエリとフィルタ _id: ObjectID(‘62f13a3fe7321ca4 symbol: “ABMD” quarter: 4 year: 2021 date: 2021-04-29T20:10:40.000+0 content: “Operator: Ladies and g content_embeddings: Array 0: 0.03898080065846443 1: -0.05879044905304909 2: 0.04323239979442215 3: -0.021337900310754776 4: -0.036346953362226486 5: 0.028689613565802574 6: -0.03514527902007103 7: -0.07414846867322922 8: -0.00993054173886776 9: 0.007234036456793547 10: -0.03197460621595383 Document Algorithm: HNSW
ベクトル検索とデータベースクエリを⼀つのクエリで 実⾏ 1. ʻfilterʼによりメタデータでフィルタリング 2. ʻ$vectorSearchʼ でフィルタ後のデータに 対してベクトル検索で類似データを10個抽出 3. ʻ$projectʼでベクトルフィールドを抽出対
象から排除
Demo https://github.com/chie8842/atlas-vector-search-rag/
Thank you!