Slide 1

Slide 1 text

MongoDB Atlas Vectorsearchで はじめる⽣成AIアプリ開発 Welcome 林⽥ 千瑛(Chie Hayashida) MongoDB Singapore Solutions Architect

Slide 2

Slide 2 text

⾃⼰紹介 林⽥ 千瑛 MongoDB Sigapore のソリューションアーキテクト インフラエンジニア→ソフトウェアエンジニア→ソリューションアーキテクト Web企業にてデータ基盤・機械学習基盤・検索サービス開発に 従事した後、AWSのアナリティクススペシャリストソリューション アーキテクトを経て2023年11⽉からMongoDBに⼊社

Slide 3

Slide 3 text

お問い合わせ、技術質問等ありましたら、 画⾯右上のQRコードのGoogle Formから お問い合わせお願いします

Slide 4

Slide 4 text

このセッション・デモの内容は、期限なし 無料のMongoDB Atlas M0 クラスタで ご利⽤いただけます ※本番環境としては、課⾦が必要なM10以上の利⽤をおすすめします ※ M0クラスタでは、インデックス作成は3つまで等の制限があります ※ デモの内容は別途OpenAIのAPIが必要です

Slide 5

Slide 5 text

LLMによる質問応答 LLM アプリケーション 開発フレームワーク 質問 (プロンプト) ⽣成された回答 LLM プロバイダ ⽬⽟焼きの作り⽅を 教えて 卵を割ってフライパ ンに⼊れて、、、

Slide 6

Slide 6 text

LLM の課題 LLMモデルの学習データに含まれない内容について答えられない • 「今⽇の天気」などのリアルタイムな情報、組織や個⼈固有のデータに基づく質疑応答が できない Retrieval Augmented Generation (RAG) LLMモデルのコンテキスト不⾜による問題を情報検索技術との融合に より解決 • 信頼性の低いデータに基づく回答が⾏われる場合がある • それっぽい嘘情報を答えてしまう(Hallucination)

Slide 7

Slide 7 text

Retrieval-Augmented Generation (RAG) ハリー、呪⽂の 書を使うんだ︕ えっと、えっと、 と、⾶べ︖ わかったぞ︕ “ウィンガーディアム・ レヴィオーサ!” ハリー︕ものを浮かせる 呪⽂を答えよ︕ LLM RAG

Slide 8

Slide 8 text

Retrieval-Augmented Generation (RAG) ベクトル検索により 不⾜するコンテキストを 追加して回答を得る ハリー、呪⽂の 書を使うんだ︕ えっと、えっと、 と、⾶べ︖ わかったぞ︕ “ウィンガーディアム・ レヴィオーサ!” ハリー︕ものを浮かせる 呪⽂を答えよ︕ LLM RAG

Slide 9

Slide 9 text

ベクトル検索 データを数値配列で表し、距離の近いものを類似データとして抽出する 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

Slide 10

Slide 10 text

インデックス ベクトルデータの⽣成⽅法 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 ベクターストア

Slide 11

Slide 11 text

LLMによる質問応答 LLM アプリケーション 開発フレームワーク 質問 (プロンプト) ⽣成された回答 LLM プロバイダ 今⽇の天気は︖ 今⽇の天気はわかりません

Slide 12

Slide 12 text

RAGによる質問応答 LLM アプリケーション 開発フレームワーク 質問 (プロンプト) ⽣成された回答 LLM プロバイダ 今⽇の天気は︖ 今⽇の天気は晴れです 質問︓今⽇の天気は︖ 関連⽂書︓3⽉20⽇の天気は… 天気予報ニュースの ベクトルデータ

Slide 13

Slide 13 text

RAGによる質問応答 LLM アプリケーション 開発フレームワーク 質問 (プロンプト) ⽣成された回答 LLM プロバイダ 今⽇の天気は︖ 質問︓今⽇の天気は︖ 関連⽂書︓3⽉20⽇の天気は… 天気予報ニュースの ベクトルデータ 今⽇の天気は晴れです

Slide 14

Slide 14 text

Retool 社によるState of AI 2023 Surveyのベクトル データベースレビューにおいてダントツのNPS Linked

Slide 15

Slide 15 text

Atlas Vectorsearchの使いやすさ ベクトルデータとテーブル データを⼀緒に保存 統合的データプラットフォー ムとしての様々な機能を持つ フルマネージドサービス エンタープライズレベルの セキュリティや機能 マルチクラウド 検索とデータベースクエリ のリソースを分離 テーブルデータ、グラフデータ、地 理空間データ、時系列データなども 利⽤可能な柔軟なデータモデル

Slide 16

Slide 16 text

[0.3, 0.4, 0.2, 0.1…] Vector ベクトル検索と他のタイプのクエリを簡単に組み合わせる ことで、よりリッチな機能をより簡単に構築 "クエリ画像に似ている画像をすべて検索し、撮影者IDで グループ化する" "ユーザーのクエリに⼀致する、過去3ヶ⽉に公開された コンテンツのみを検索する" "現在地から10マイル以内のレストランで、私の好みに 合うものを推薦する" メタデータを利⽤したフィルタリングとの統合 データベースのデータとの統合 地理空間検索との統合

Slide 17

Slide 17 text

Vector Operational アーキテクチャをシンプルに保つ • ドキュメントデータモデルに より、構造化データ、⾮構造 化データ、ベクトルデータを ⼀つのスキーマで管理可能 • データ同期不要 • ⼀つのAPIでデータベースクエ リとベクトル検索を組み合わ せた複雑なクエリを実現 MongoDB Atlas Document ベクトル専⽤データベースの導⼊→複雑なデータ同期 /API管理が必要となる RDBMSへのベクトル保存→ベクトル化対象データが 複数テーブルに散らばるので管理が難しい Operational data Vector data Newly added data as app requirements evolve

Slide 18

Slide 18 text

⽣成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以上のリージョンに対応

Slide 19

Slide 19 text

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 ドキュメントに格納される埋め込みベクトルの例 ベクトル埋め込み

Slide 20

Slide 20 text

{ "mappings": { "fields": { "content_embedding": { "type": "knnVector", "dimensions": 1536, "similarity": "" }, "field1": { "type": "date" }, // optional "field2": { "type": "double" } // optional } } } Vector Search GEN AI powered APP LLM Prompt Context Orchestration Layer Single View Vector Search のインデックス ディメンション 類似度計算 アルゴリズム の選定 ベクトル埋め込みフィールド名

Slide 21

Slide 21 text

[{ "$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

Slide 22

Slide 22 text

ベクトル検索とデータベースクエリを⼀つのクエリで 実⾏ 1. ʻfilterʼによりメタデータでフィルタリング 2. ʻ$vectorSearchʼ でフィルタ後のデータに 対してベクトル検索で類似データを10個抽出 3. ʻ$projectʼでベクトルフィールドを抽出対 象から排除

Slide 23

Slide 23 text

Demo https://github.com/chie8842/atlas-vector-search-rag/

Slide 24

Slide 24 text

Thank you!