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

MongoDB Atlas Search のご紹介

MongoDB Atlas Search のご紹介

5/31(金)のSearch Engineering Tech Talk 2024 Spring の登壇内容です。
https://search-tech.connpass.com/event/318126/
#searchtechjp

chie8842

June 03, 2024
Tweet

More Decks by chie8842

Other Decks in Technology

Transcript

  1. 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
  2. 検索アプリ開発の課題 データベース データベースと検索エンジンにおけるデータ⼆重持ちによる アーキテクチャの複雑さ 検索エンジン データ同期 / ETL 開発コストの増⼤ データベースと検索の異なるAPI、

    ドライバの管理 ⼆重のスキーマ運⽤ ⼆重のデータベース維持コスト データ同期によるシステムの 複雑化 データ同期パイプラインの開発が必要。 エラー時のリカバリ処理の煩雑化 メンテナンスのオーバヘッド サーバ⾒積もり、セキュリティ、 アップグレード、バックアップ、 監視、スケーリング、請求管理等
  3. MongoDB Atlas Searchのアプローチ MongoDB Atlas クラスタ アプリケーション データ⾃動同期 データベ ースクエ

    リ 検索クエ リ 同⼀のMongoDB Query API & driver 開発⽣産性の向上 単⼀のクエリAPI‧ドライバを使⽤してデータベースと検索 機能を実現 フルマネージドプラットフォーム MongoDB Atlasの頑健なセキュリティ‧パフォーマンス‧ 可⽤性 簡易なアーキテクチャ データやスキーマが変更されても⾃動的にデータを同期 フルマネージド基盤において Apache Lucene ベースの検索機能とデータベース機能を実現
  4. 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" } } } ] )
  5. 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
  6. サポートされる検索機能の例 多様なアプリ開発を⽀援する柔軟な検索機能 • ⽇本語を含む30以上の⾔語をサポート • オートコンプリート • 検索ワードのハイライト(Highlighting) • あいまい検索(Fuzzy

    matching /タイポ対応) • Facet(検索メタデータ) • 多様なデータ型 • シノニム(類似語) • スコアリング、リランキング ⽇本語検索はkuromoji(japanese)が利⽤可能
  7. Atlas ノード Java Web プロセス API API Lucene Atlas Search

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

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

    キーワード検索 • ⾔語のためのアナライザが必要 When? • テキストベースでの検索ユース ケース • グーグル検索やECサイトの商 品検索と⾔ったユースケース • 辞書のメンテナンスなどで検索 精度が保てる場合 What? • ANN/kNN • 意味/コンテキストの類似性 による検索 • テキスト以外(画像/マルチ メディア)もサポート可能 When? • あいまいなユーザ⼊⼒ • 語彙のギャップがある場合 • テキスト以外の検索
  10. ベクトル検索 データを数値配列で表し、距離の近いものを類似データとして抽出する 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
  11. RAGによる質問応答 LLM アプリケーション 開発フレームワーク 質問 (プロンプト) ⽣成された回答 LLM プロバイダ 今⽇の天気は?

    質問:今⽇の天気は? 関連⽂書:3⽉20⽇の天気は… 天気予報ニュースの ベクトルデータ 今⽇の天気は晴れです
  12. Atlas Vectorsearchの使いやすさ ベクトルデータとテーブル データを⼀緒に保存 統合的データプラットフォーム としての様々な機能を持つフル マネージドサービス エンタープライズレベルの セキュリティや機能 マルチクラウド

    検索とデータベースクエリ のリソースを分離 テーブルデータ、グラフデータ、 地理空間データ、時系列データなど も利⽤可能な柔軟なデータモデル
  13. ⽣成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以上のリージョンに対応
  14. 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で利用できる機能が長期的に望ましいと判断し、利用するようになった。
  15. アプリケーション サマリ: Atlas Search、Vectorsearch の 強み MongoDB Atlas データ同期不要 データベースと検索のインデックスは同じ基盤上で⾃動で同期するた

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