Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MongoDB Vectorsearchではじめるカスタマイズ可能な生成AIアプリ開発

MongoDB Vectorsearchではじめるカスタマイズ可能な生成AIアプリ開発

DB Tech Showcase 2024の資料

Avatar for chie8842

chie8842

July 11, 2024
Tweet

More Decks by chie8842

Other Decks in Technology

Transcript

  1. 大規模言語モデル(LLM)でできること ◦ ◦ 文章生成: 小説、記事、ブログ投稿の自動作成 ◦ 要約: 長文の要約やポイント抽出 ◦ 翻訳:

    多言語間の自動翻訳 ◦ 対話: カスタマサポートやチャットボットの構築 ◦ クリエイティブライティング: ストーリーや キャラクターのアイデア生成 ◦ 広告コピー: マーケティングや広告文の生成 ◦ 音楽の歌詞作成: 歌詞の自動生成やアイデア提供 ◦ 情報抽出: テキストから特定の情報を自動抽出 ◦ 質問応答: 自然言語の質問に対する正確な応答 ◦ データ解析: テキストデータの分析やパターン 認識 ◦ 専門知識の提供: 医療、法律、技術分野などの 専門知識に基づく回答 ◦ 教育支援: 教材の作成や学生の質問への応答 ◦ プログラムの自動生成・チェック 自然言語理解と生成 情報の整理と検索 クリエイティブな応用 専門知識の活用
  2. 大規模言語モデル(LLM)でできること ◦ ◦ 文章生成: 小説、記事、ブログ投稿の自動作成 ◦ 要約: 長文の要約やポイント抽出 ◦ 翻訳:

    多言語間の自動翻訳 ◦ 対話: カスタマサポートやチャットボットの構築 ◦ クリエイティブライティング: ストーリーやキャ ラクターのアイデア生成 ◦ 広告コピー: マーケティングや広告文の生成 ◦ 音楽の歌詞作成: 歌詞の自動生成やアイデア提供 ◦ 情報抽出: テキストから特定の情報を自動抽出 ◦ 質問応答: 自然言語の質問に対する正確な応答 ◦ データ解析: テキストデータの分析やパターン 認識 ◦ 専門知識の提供: 医療、法律、技術分野などの 専門知識に基づく回答 ◦ 教育支援: 教材の作成や学生の質問への応答 ◦ プログラムの自動生成・チェック 自然言語理解と生成 情報の整理と検索 クリエイティブな応用 専門知識の活用 全ての業種・職種において生成AI活用の 機会が存在する
  3. 臨床試験報告書の自動生成により、 新薬承認のプロセスを劇的に高速化 • 170カ国で薬を販売する年商335億ドルの 製薬企業 • MongoDB Atlas と Amazon

    BedRock を 利用した生成AIシステム 顧客の声 「MongoDB Atlas の優れた点は、レポートのネイティブ ベクトル埋め込みを、関連するテキスト スニペットや メタデータのすべてと並べて保存できることです」 「非常に強力で複雑なクエリを迅速に実行できるのです。 ベクトル埋め込みごとに、どのソース ドキュメントから 取得したか、誰がいつ作成したかに基づいてフィルター 処理できます。」 臨床試験報告書(CSR)の例
  4. RAGによる質問応答 LLM プロバイダ Amazon Bedrock ユーザXは7/20に牛タン 5個とレバ刺し3つを注 文しました 質問 ユーザXの7月20日の注文内容を教えて

    関連文書 ユーザX 7/20注文 牛タン5個、レバ刺し3つ ユーザXの7月20日の 注文内容を教えて 注文情報のベクトル データベース ユーザ 質問 (プロンプト) 生成された回答
  5. インデックス ベクトルデータベースとは Embedding モデル OpenAI, Cohere, Anthropic, HuggingFace, Vertex AI,

    Amazon Bedrock など ドキュメント 画像 音声 動画 [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 … ベクトル ベクトルデータベース • データの特徴を数値の配列(ベクトル)として保存するデータベース • ベクトルの作成にはLLMとは別の「Embeddingモデル」というタイプの 機械学習モデルを利用する
  6. 関連文書の抽出方法:ベクトル検索 ユーザID 文書種別 日付 [0.3, 0.4, 0.2, 0.1…] 数字の配列で示される ベクトル

    データを数値配列で表し、距離の近いものを類似データとして抽出する ベクトルデータの例
  7. ベクトルデータベースに求められる要件 •簡単にスモールスタート可能 ◦ ラーニングコストが少ない ◦ 簡単にアプリに組み込み ◦ ノーコスト/ローコストではじめられる ◦ インフラ管理不要

    •複雑なクエリ要件に対応 ◦ あらゆるデータをベクトルデータと一緒に 保存可能 ◦ 複雑なDBクエリとベクトル検索を組み合わせ 可能 ◦ ベクトルデータの二重持ち、上書きなどのアプ リ仕様の変更に柔軟に対応可能 •LLMアプリへの組み込み容易性 ◦ クラウドサービスとのコラボレーション ◦ LLMアプリ開発フレームワークとの統合 ◦ アプリコードの自動生成 •スケーラブル・低レイテンシ ◦ 大量アクセス・大量データに対応できる ◦ アクセス急増に応じてスケールできる ◦ 低レイテンシ •エンタープライズレベルのセキュリティ ◦ VPC Peering/IPアクセス制御 ◦ 暗号化 ◦ 認証・認可 ◦ 監査ログモニタリング/アラート
  8. ベクトルデータベースに求められる要件 •簡単にスモールスタート可能 ◦ ラーニングコストが少ない ◦ 簡単にアプリに組み込み ◦ ノーコスト/ローコストではじめられる ◦ インフラ管理不要

    •複雑なクエリ要件に対応 ◦ あらゆるデータをベクトルデータと一緒に 保存可能 ◦ 複雑なDBクエリとベクトル検索を組み合わせ 可能 ◦ ベクトルデータの二重持ち、上書きなどのアプ リ仕様の変更に柔軟に対応可能 •LLMアプリへの組み込み容易性 ◦ クラウドサービスとのコラボレーション ◦ LLMアプリ開発フレームワークとの統合 ◦ アプリコードの自動生成 •スケーラブル・低レイテンシ ◦ 大量アクセス・大量データに対応できる ◦ アクセス急増に応じてスケールできる ◦ 低レイテンシ •エンタープライズレベルのセキュリティ ◦ VPC Peering/IPアクセス制御 ◦ 暗号化 ◦ 認証・認可 ◦ 監査ログモニタリング/アラート
  9. ベクトルデータベースに求められる要件 - 簡単にスモールスタート可能 クエリ作成画面 インデックス作成画面 フルマネージド クエリがJSONなのでSQL が苦手なMLエンジニアも 簡単に習得可能 無料の

    Shared Cluster でも 3つまでインデックス作成可能 GUIのみでクラスタ作成、DB作成、 データ挿入、インデックス設定、 クエリ作成が可能
  10. ベクトルデータベースに求められる要件 •簡単にスモールスタート可能 ◦ ラーニングコストが少ない ◦ 簡単にアプリに組み込み ◦ ノーコスト/ローコストではじめられる ◦ インフラ管理不要

    •複雑なクエリ要件に対応 ◦ あらゆるデータをベクトルデータと一緒に 保存可能 ◦ 複雑なDBクエリとベクトル検索を組み合わせ 可能 ◦ ベクトルデータの二重持ち、上書きなどのアプ リ仕様の変更に柔軟に対応可能 •LLMアプリへの組み込み容易性 ◦ クラウドサービスとのコラボレーション ◦ LLMアプリ開発フレームワークとの統合 ◦ アプリコードの自動生成 •スケーラブル・低レイテンシ ◦ 大量アクセス・大量データに対応できる ◦ アクセス急増に応じてスケールできる ◦ 低レイテンシ •エンタープライズレベルのセキュリティ ◦ VPC Peering/IPアクセス制御 ◦ 暗号化 ◦ 認証・認可 ◦ 監査ログモニタリング/アラート
  11. 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 ドキュメントに格納される埋め込みベクトルの例 ベクトル埋め込み
  12. ベクトルデータベースに求められる要件 - 複雑なクエリ要件に対応 db.embedded_movies.aggregate([ {"$vectorSearch": { "index": "rrf-vector-search", "path": "plot_embedding",

    "queryVector": [-0.0105516575,-0.014830452,...], "numCandidates": 100, "limit": 20}}, {"$project": { "vs_score": 1,"_id": "$docs._id","title": "$docs.title"} {"$unionWith": { "coll": "movies","pipeline": [ {"$search": { "index": "rrf-full-text-search", "phrase": {"query": "new york","path": "title"}}},{ "$project": { "fts_score": 1, "_id": "$docs._id", "title": "$docs.title"}]}}, {"$group": { "_id": "$title", "vs_score": {"$max": "$vs_score"}, "fts_score": {"$max": "$fts_score"}}}, {"$project": { "_id": 1,"title": 1, "vs_score": {"$ifNull": ["$vs_score", 0]}, "fts_score": {"$ifNull": ["$fts_score", 0]}}}, {"$sort": {"score": -1}}, {"$limit": 10} ]) ベクトル検索 全文検索 DBクエリ
  13. ベクトルデータベースに求められる要件 - 複雑なクエリ要件に対応 db.embedded_movies.aggregate([ {"$vectorSearch": { "index": "rrf-vector-search", "path": "plot_embedding",

    "queryVector": [-0.0105516575,-0.014830452,...], "numCandidates": 100, "limit": 20}}, {"$project": { "vs_score": 1,"_id": "$docs._id","title": "$docs.title"} {"$unionWith": { "coll": "movies","pipeline": [ {"$search": { "index": "rrf-full-text-search", "phrase": {"query": "new york","path": "title"}}},{ "$project": { "fts_score": 1, "_id": "$docs._id", "title": "$docs.title"}]}}, {"$group": { "_id": "$title", "vs_score": {"$max": "$vs_score"}, "fts_score": {"$max": "$fts_score"}}}, {"$project": { "_id": 1,"title": 1, "vs_score": {"$ifNull": ["$vs_score", 0]}, "fts_score": {"$ifNull": ["$fts_score", 0]}}}, {"$sort": {"score": -1}}, {"$limit": 10} ]) 長文テキスト、非構造データ、複雑な半構造 化データなどを格納可能な多様なスキーマ アプリ側の変更に簡単に追従可能なデータ モデル 単独クエリでDBクエリ、全文検索、 ベクトル検索クエリを実現可能なクエリ 言語とインデックス ACIDトランザクション
  14. ベクトルデータベースに求められる要件 •簡単にスモールスタート可能 ◦ ラーニングコストが少ない ◦ 簡単にアプリに組み込み ◦ ノーコスト/ローコストではじめられる ◦ インフラ管理不要

    •複雑なクエリ要件に対応 ◦ あらゆるデータをベクトルデータと一緒に 保存可能 ◦ 複雑なDBクエリとベクトル検索を組み合わせ 可能 ◦ ベクトルデータの二重持ち、上書きなどのアプ リ仕様の変更に柔軟に対応可能 •LLMアプリへの組み込み容易性 ◦ クラウドサービスとのコラボレーション ◦ LLMアプリ開発フレームワークとの統合 ◦ アプリコードの自動生成 •スケーラブル・低レイテンシ ◦ 大量アクセス・大量データに対応できる ◦ アクセス急増に応じてスケールできる ◦ 低レイテンシ •エンタープライズレベルのセキュリティ ◦ VPC Peering/IPアクセス制御 ◦ 暗号化 ◦ 認証・認可 ◦ 監査ログモニタリング/アラート
  15. ベクトルデータベースに求められる要件 - LLMアプリへの組み込み容易性 Atlas ベクトル検索 Pre Filter Post Filter 全文検索

    ハイブリッド検索 クラウドサービス 生成AIアプリ開発フレームワーク Amazon Bedrock, Google Vertex AI, Azure Semantic Kernel によるネイティブサポート Langchain や LlamaIndex との統合 GitHub Copilot や Amazon Q によるクエリ自動生成 アプリコード 生成 ネイティブサポート
  16. ベクトルデータベースに求められる要件 •簡単にスモールスタート可能 ◦ ラーニングコストが少ない ◦ 簡単にアプリに組み込み ◦ ノーコスト/ローコストではじめられる ◦ インフラ管理不要

    •複雑なクエリ要件に対応 ◦ あらゆるデータをベクトルデータと一緒に 保存可能 ◦ 複雑なDBクエリとベクトル検索を組み合わせ 可能 ◦ ベクトルデータの二重持ち、上書きなどのアプ リ仕様の変更に柔軟に対応可能 •LLMアプリへの組み込み容易性 ◦ クラウドサービスとのコラボレーション ◦ LLMアプリ開発フレームワークとの統合 ◦ アプリコードの自動生成 •スケーラブル・低レイテンシ ◦ 大量アクセス・大量データに対応できる ◦ アクセス急増に応じてスケールできる ◦ 低レイテンシ •エンタープライズレベルのセキュリティ ◦ VPC Peering/IPアクセス制御 ◦ 暗号化 ◦ 認証・認可 ◦ 監査ログモニタリング/アラート
  17. ベクトルデータベースに求められる要件 - スケーラブル・低レイテンシ ✓ 水平スケールで巨大データにも対応 ✓ 急なアクセスに対応可能なオートスケール ✓ DBクエリはミリ秒単位で応答可能 (ベクトル検索のベンチマークはないが、競合との比較検証

    で高速なケースが複数あり) MongoDB のスケーラビリティに関しては 7/12 の A12 セッション 「MongoDB Atlas:モダンなアプリ 開発を支えるデータプラットフォームのご紹介」 もご視聴ください! ✓ 検索専用ノードによるワークロード分離
  18. ベクトルデータベースに求められる要件 •簡単にスモールスタート可能 ◦ ラーニングコストが少ない ◦ 簡単にアプリに組み込み ◦ ノーコスト/ローコストではじめられる ◦ インフラ管理不要

    •複雑なクエリ要件に対応 ◦ あらゆるデータをベクトルデータと一緒に 保存可能 ◦ 複雑なDBクエリとベクトル検索を組み合わせ 可能 ◦ ベクトルデータの二重持ち、上書きなどのアプ リ仕様の変更に柔軟に対応可能 •LLMアプリへの組み込み容易性 ◦ クラウドサービスとのコラボレーション ◦ LLMアプリ開発フレームワークとの統合 ◦ アプリコードの自動生成 •スケーラブル・低レイテンシ ◦ 大量アクセス・大量データに対応できる ◦ アクセス急増に応じてスケールできる ◦ 低レイテンシ •エンタープライズレベルのセキュリティ ◦ VPC Peering/IPアクセス制御 ◦ 暗号化 ◦ 認証・認可 ◦ 監査ログモニタリング/アラート
  19. 堅牢なセキュリティ機能 Business Trust Needs Security Features Authentication SCRAM, X.509, LDAPS,

    AWS IAM, IP Access Lists, Workload Identity Federation(New!) Authorization RBAC, Read-Only Views, Field-Level Redaction Auditing Admin, DML, DDL, DCL, Role-based Encryption 転送中データの暗号化(In-flight): TLS 1.2+ 保存データの暗号化(at-rest): ハードウェア暗号化, ボリュームやデータベーススト レージの暗号化 (AES-256) 暗号化キー: Client-Side Field Level Encryption, クラウドサービスのKMS (AWS KMS, Azure KV, Google Cloud KMS) Queryable Encryption(New!) • すべての MongoDB Atlas プロジェクトは顧客自身のVPCネットワーク上にデプロイすることができ、 ネットワークは外部から分離される。 • 3つのクラウド(AWS, GCP, Azure)上でVPC Peering、Private Endpoint を利用可能
  20. ベクトルデータベースの機能比較 ベクトル専用 データベース リレーショナル データベース キーバリュー ストア 検索エンジン 分析 データベース

    MongoDB Atlas フルマネージドサービスがある リッチなGUIクエリエディタ (マウス操作のみでデータ挿入・クエリ実行可能) リッチなクエリとインデックス データモデルの柔軟性 ~ ACIDトランザクション 水平スケール ~ オートスケール ~ ~ ~ レイテンシ・リアルタイムデー タの使用 ~ セキュリティ機能の豊富さ (限定的な場合が多い) (限定的な場合が多い) (可能なものもあるが限定的) (可能なものもあるが限定的) (元データソースと 挿入タイミングがずれる) (まだエンタープライズ レティでない) (可能なものもあるが限定的)
  21. ベクトルデータベースの要件とMongoDB の機能まとめ •簡単にスモールスタート可能 ◦ クエリがJSON形式のためSQLが苦手なアプリ/ML エンジニアにも使いやすい ◦ GUIのみでクラスタ作成、DB作成、データ挿入、イ ンデックス設定、クエリ作成が可能 ◦

    無料のShared Clusterで簡単に機能を試せる ◦ フルマネージドサービス •複雑なクエリ要件に対応 ◦ 長文テキスト、非構造データ、複雑な半構造化 データなどを格納可能な多様なスキーマ ◦ アプリ側の変更に簡単に追従可能なデータモデル ◦ 単独クエリでDBクエリ、全文検索、ベクトル検索 クエリを実現可能なクエリ言語とインデックス ◦ ACIDトランザクション •LLMアプリへの組み込み容易性 ◦ Amazon Bedrock, Google Vertex AI, Azure Semantic Kernel によるネイティブサポート ◦ Langchain や LlamaIndex との統合 ◦ GitHub Copilot や Amazon Q によるクエリ自動生成 • スケーラブル・低レイテンシ ◦ 水平スケールで巨大データにも対応 ◦ 急なアクセスに対応可能なオートスケール ◦ 検索専用ノードによるワークロード分離 ◦ DBクエリはミリ秒単位で応答可能 (ベクトル検索のベンチマークはないが、競合との比較検証で高速なケースが複数あり) • エンタープライズレベルのセキュリティ ◦ VPC Peering/IPアクセス制御 ◦ 暗号化(In flight, At rest, Queryable Encryption) ◦ 認証・認可(プロジェクト/クラスタ/DB/コレクションレベル) ◦ 監査ログモニタリング/アラート
  22. Atlas Vectorsearchを利用したRAGアプリのフロー User Atlas Function Embedding モデル User Embedding モデル

    LLMモデル ベクトルデータの挿入 Q&Aクエリ ベクトルデータの挿入 ドキュメントの 挿入 トリガーでEmbedding API起動 回答 質問をベクトル化して関連文書検索 質問と関連文書をLLMにインプット