Slide 1

Slide 1 text

MongoDB Atlas Searchのご紹介 WELCOME 林田 千瑛(Chie Hayashida) MongoDB Solutions Architect

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

あらゆるアプリケーション開発に柔軟に 対応可能なドキュメントデータモデル OLTP、検索、分析等の異なるワークロードを 統合的に扱うことのできる堅牢で統⼀的な インフラとインタフェース モバイル‧ウェブアプリ開発を⽀援する サーバレス開発フレームワーク 堅牢なセキュリティとマルチクラウド‧ マルチリージョンでの⾼いスケーラビリティ とパフォーマンス ドキュメン干支モデル&統一API OLTP アプリケーション 時系列データ 全文検索 ベクトル検索 分析 ストリーム処理 データ マルチクラウド、セキ ュリティ MongoDB Atlas データ‧アプリケーション開発のための統合的なプラットフォーム

Slide 4

Slide 4 text

MongoDB Software セルフマネージド |オンプレミス Community or Enterprise Advanced ● 柔軟な⽂書データモデル ● 表現⼒豊かなクエリーAPI ● ACIDトランザクション ● 時系列コレクション ● 地理空間サポート ● グラフ‧トラバーサル ● 結合 ● 変更ストリーム ● クライアントサイドFLE|クエリ 可能な暗号化 フルマネージドMongoDB Atlas Database Dedicated | Shared | Serverless オンライン アーカイブ マルチクラウド Global clusters パフォーマンス ‧アドバイザー クラスタ間 の同期 検索 | 分析 SQL Interface* データ フェデレーション Data Lake* 分析ノード チャート Atlas Search ワークロードの分離 アプリケーションサービス Triggers & Functions Data API Streaming Processing Device Sync ユーザー認証 スキーマと ルール Realm より広範なアプリケーション‧エコシステムへの統合: Kafka Connector、Spark Connector、Kubernetes Operator、Terraform Providerなど 開発者ツール: MongoDB Compass、VS Code Integration、 MongoDB シェル、数⼗のプログラミング⾔語の慣⽤ドライバ、 MongoDB Atlas ⽤の CLI とプログラム API Live migration * in preview MongoDB Atlas: Developer Data Platform

Slide 5

Slide 5 text

検索エンジンにおける よくある課題

Slide 6

Slide 6 text

よくある検索アプリ開発のプロセス データベース データベースに実現できない検索機能の実現のため、検索エンジンの導⼊ 事前に導⼊されたOLTPデータベースで 表形式データの取得 検索エンジン 検索エンジンによる⾃然⾔語に対する検索 クエリ あいまい検索 オートコンプリート ファセット検索 シノニム スコアリング/重み付け … 口座残高確認 購入履歴の確認 ウィッシュリストの表示 データ操作 ストリーム 集計 インデックス ACID トランザクション …

Slide 7

Slide 7 text

検索アプリ開発の課題 データベース データベースと検索エンジンにおけるデータ⼆重持ちによる アーキテクチャの複雑さ 検索エンジン データ同期 / ETL 開発コストの増⼤ データベースと検索の異なるAPI、 ドライバの管理 ⼆重のスキーマ運⽤ ⼆重のデータベース維持コスト データ同期によるシステムの 複雑化 データ同期パイプラインの開発が必要。 エラー時のリカバリ処理の煩雑化 メンテナンスのオーバヘッド サーバ⾒積もり、セキュリティ、 アップグレード、バックアップ、 監視、スケーリング、請求管理等

Slide 8

Slide 8 text

検索アプリ開発の課題 データベース 検索エンジン レイテンシオーバヘッド 検索結果とDBデータの結合の際に2つの リクエストをシリアルに実⾏する必要が あるためレイテンシが増⼤ アーキテクチャの複雑化 デプロイメント、セキュリティ、 ソースコードの複雑化 1. 検索結果の取得 2. データのエンリッチ アプリケーション

Slide 9

Slide 9 text

MongoDB Atlasは 何を解決するのか

Slide 10

Slide 10 text

データベースと検索の統合 データベース 3つのシステムを1つに集約し、検索機能を30-50%⾼速化 ⼝座残⾼確認 購⼊履歴の確認 ウィッシュリストの表⽰ 検索エンジン あいまい検索 オートコンプリート ファセット検索 シノニム スコアリング/重み付け … データ操作 ストリーム 集計 インデックス ACID トランザクション …

Slide 11

Slide 11 text

MongoDB Atlas Searchのアプローチ MongoDB Atlas クラスタ アプリケーション データ⾃動同期 データベ ースクエ リ 検索クエ リ 同⼀のMongoDB Query API & driver 開発⽣産性の向上 単⼀のクエリAPI‧ドライバを使⽤してデータベースと検索 機能を実現 フルマネージドプラットフォーム MongoDB Atlasの頑健なセキュリティ‧パフォーマンス‧ 可⽤性 簡易なアーキテクチャ データやスキーマが変更されても⾃動的にデータを同期 フルマネージド基盤において Apache Lucene ベースの検索機能とデータベース機能を実現

Slide 12

Slide 12 text

MongoDB Aggregation フレームワーク Aggregation フレームワーク 複数のオペレータを組み合わせて 複雑なクエリを実現 MongoDB クエリ⾔語

Slide 13

Slide 13 text

Aggregations $search ステージ $match ステージ $group ステージ データ加⼯と分析のための⾼度な データ処理パイプライン 豊富なオペレータで構成された複数のステージ からなるパイプラインの構築 オーダーコレクションに対する Aggregationコマンドの例: db.orders.aggregate( [ {$search: {index:”hoge”, path: “text”, query: “aaa”}}, {$match: { status: "A" } }, {$group: { _id: "$cust_id", total: { $sum: "$amount" } } } ] )

Slide 14

Slide 14 text

Aggregation フレームワークの機能 データ変換とアナリティクスのための機能豊富なフレームワーク • $match • $group • $facet • $geoNear • $graphLookup パイプラインステージの種類 • 算術計算 $add, $abs, $subtract, $multiply, $divide, $log, $log10, $stdDevPop, $stdDevSam, $avg, $sqrt, $pow, $sum, $zip, $convert, $round, etc. • ⾏列処理 $push, $reduce, $reverseArray, $addToSet, $arrayElemAt, $slice, etc. ステージの中で利⽤される各種オペレータ • $lookup • $merge • $project • $search • $vectorsearch • $sort • $setWindowFields • $unionWith • $unwind • ...and more • 条件式 $and, $or, $eq, $lt, $lte, $gt, $gte, $cmp, $cond, $switch, $in, etc. • その他 ウインドウ関数 $dateAdd, $dateDiff, $dateSubstract, $dateTrunc $dateFromParts, $dateToParts, $dateFromString, $dateToString, $dayOfMonth, $isoWeek, $minute, $month, $year, etc. • ⽂字列関数 $toUpper, $toLower, $substr, $strcasecmp, $concat, $split, etc. • リテラル式 $exp, $let, $literal, $map, $type, etc. • 正規表現 $regexFnd, $regexMatch, etc • 三⾓関数 $sin, $cos, $degreesToRadians, etc. • カスタム集計式 PRACTICAL MONGODB AGGREGATIONS EBOOK

Slide 15

Slide 15 text

サポートされる検索機能の例 多様なアプリ開発を⽀援する柔軟な検索機能 ● ⽇本語を含む30以上の⾔語をサポート ● オートコンプリート ● 検索ワードのハイライト(Highlighting) ● あいまい検索(Fuzzy matching /タイポ対応) ● Facet(検索メタデータ) ● 多様なデータ型 ● シノニム(類似語) ● スコアリング、リランキング ⽇本語検索はkuromoji(japanese)が利⽤可能

Slide 16

Slide 16 text

Atlas ノード Java Web プロセス API API Lucene Atlas Search のアーキテクチャ MongoDB MongoDB Atlas オートメーション アプリケーショ ン Atlas UI ユーザ インデックス データ ObjectIDにマッピングされたフィールド インデックス設定 プロセスのスタート/ ストップ objectID + metadata 初回同期 & change streams 検索クエリ結果 $search Aggregation クエリ 検索インデックスの設定

Slide 17

Slide 17 text

GA 検索/ベクトル検索ノード 検索ノードあり MongoDB ノード ( ) Mongod (データベース ⽤プロセス) 検索ノード (2つ以上32ノード以内) ( ) Mongot (検索⽤プロセス) SN2 SN3 . . . 検索ノードなし Atlas ノード ( ) + Mongod (データベース ⽤プロセス) Mongot (検索⽤プロセス) リソース最適化と柔軟性 要求の厳しい検索ワークロードを確実に処理し、 スケール よりよいパフォーマンスの実現 多くの複雑なクエリにおいて40% - 60% のクエリ 実⾏時間を削減 ⾼可⽤性の実現 検索ワークロードが利⽤するリソースを通常の データベースと分離し、双⽅のリソース競合を回避

Slide 18

Slide 18 text

Token / Lexical Search Vector Search What? ● TF-IDF/BM25(f) ● キーワード検索 ● ⾔語のためのアナライザが必要 When? ● テキストベースでの検索ユース ケース ● グーグル検索やECサイトの商 品検索と⾔ったユースケース ● 辞書のメンテナンスなどで検索 精度が保てる場合 What? ● ANN/kNN ● 意味/コンテキストの類似性 による検索 ● テキスト以外(画像/マルチ メディア)もサポート可能 When? ● あいまいなユーザ⼊⼒ ● 語彙のギャップがある場合 ● テキスト以外の検索

Slide 19

Slide 19 text

ベクトル検索 データを数値配列で表し、距離の近いものを類似データとして抽出する Mozzarella [0.3, 0.9] Cheese [0.5, 0.7] Pizza [0.3, 0.4] Cheddar [0.9, 0.2] ビーフ チキン ポーク ⿅⾁ ⾺⾁ ほうれん草 ネギ にんじん ピー マン じゃがいも ⾁ 野菜 [0.3, 0.4, 0.2, 0.1…] Vector

Slide 20

Slide 20 text

ベクトル検索のユースケース セマンティック サーチ 類似検索 レコメンドエンジン ⾼度な⽣成AI 異常検知 画像‧⾳声‧ マルチメディア検索

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 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 25

Slide 25 text

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

Slide 26

Slide 26 text

SaaSのデータカタログのバックエンドを MongoDB Atlasへ移行 https://www.mongodb.com/blog/post/building-ai-mongodb-how-metaphor-data- uses-atlas-vector-search-change-world-through-data もともと別のデータベースソリューション と 検索エンジンを利用していたが、スケーラビリ ティの問題に直面し、MongoDB Atlasへ移行。また、別検索エンジンで行っていた検索機能 に関しても、MongoDB Atlas Searchへ移行。 その後、ベクトル検索エンジンとして専用ソリューションをつかいはじめたが、顧客ごとに インスタンスを作成するのはコストパフォーマンスがわるく、また、APIスロットリングの せいでスケールアップが難しかった。 MongoDB Atlas Vectorsearch のリリース後、既存データベーススタックの中でベクトル検索 が行えることを発見し、複数のシステムを別々でスケールするよりも一つの環境、一つの APIで利用できる機能が長期的に望ましいと判断し、利用するようになった。

Slide 27

Slide 27 text

アプリケーション サマリ: Atlas Search、Vectorsearch の 強み MongoDB Atlas データ同期不要 データベースと検索のインデックスは同じ基盤上で⾃動で同期するた め、2つのシステム間のデータ同期によるアプリの複雑さを回避できる フルマネージド Apache Luceneをベースとした検索エンジンを、MongoDB Atlasの頑 健なセキュリティと信頼性、柔軟なパフォーマンスとともに提供 開発⽣産性向上 統⼀されたAPIによるひとつのクエリ内でデータベース操作と検索野オペ レーションを実⾏。 検索インデックスの作成はUI上の数クリックまたは1回のAPIコールのみ。

Slide 28

Slide 28 text

Demo!

Slide 29

Slide 29 text

Thank you!