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

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

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にインプット