LangChain、Amazon SageMaker JumpStart、およびMongoDB Atlasの意味検索を利用した検索増強生成
LangChain、Amazon SageMaker JumpStart、およびMongoDB Atlasを活用した検索増強生成:意味検索の進化
Generative AIモデルは、エンタープライズの運営を革命化する潜在能力を持っていますが、企業はデータの保護やAIによるコンテンツの品質を確保するといった課題を克服しながら、そのパワーを活用する方法を慎重に考慮する必要があります。
Retrieval-Augmented Generation(RAG)フレームワークは、ドキュメントリポジトリ、データベース、またはAPIなどの複数のソースから外部データをプロンプトに追加し、ドメイン固有のタスクに対して効果的な基盤モデルを作るための手法です。この記事では、RAGモデルの能力を紹介し、そのベクトル検索機能を備えたMongoDB Atlasの変革の可能性を強調します。
MongoDB Atlasは、データドリブンなアプリケーションの開発を加速し、簡素化するためのデータサービスの統合スイートです。そのベクトルデータストアは、運用データストレージとシームレスに統合されており、別個のデータベースが不要になります。この統合によって、セマンティックサーチ機能を活用した高機能な検索が可能となります。Vector Searchは、セマンティックサーチとAIパワードアプリケーションを迅速に構築するための手法です。
Amazon SageMakerは、エンタープライズが機械学習(ML)モデルの構築、トレーニング、デプロイを行うことを可能にします。Amazon SageMaker JumpStartでは、MLを始めるための事前トレーニング済みモデルとデータが提供されます。SageMaker JumpStartランディングページを介して、数クリックで事前トレーニング済みモデルとデータにアクセス、カスタマイズ、デプロイすることができます。
- 「Amazon Bedrock のエージェント付きカスタマーサービスボットの基盤モデル(FM)を構築する」
- 「Amazon Rekognitionを使用して、Amazon IVSライブストリームを適度に制御する」
- LLMWareは、複雑なビジネスドキュメントを含む企業ワークフローに適した、生産用の微調整済みモデルであるRAG-Specialized 7BパラメータLLMを発表しました
Amazon Lexは、ビジネスが自然でリアルな対話を行うチャットボットや音声ボットを作成するのに役立つ会話インターフェースです。Amazon LexをGenerative AIと統合することで、ユーザーの入力が連続的で文脈に即した応答に自然に移行する総合的なエコシステムを作ることができます。
ソリューションの概要
以下の図は、ソリューションアーキテクチャを示しています。
次のセクションでは、このソリューションとそのコンポーネントの実装手順について説明します。
MongoDBクラスタの設定
無料ティアのMongoDB Atlasクラスタを作成するには、クラスタの作成の手順に従ってください。データベースアクセスとネットワークアクセスを設定します。
SageMaker埋め込みモデルのデプロイ
「SageMaker JumpStartモデル、ノートブック、ソリューション」ページで埋め込みモデル(ALL MiniLM L6 v2)を選択できます。
モデルを展開するためにDeployを選択します。
モデルが正常に展開されてエンドポイントが作成されたことを確認します。
ベクトル埋め込み
ベクトル埋め込みは、テキストや画像をベクトル表現に変換するプロセスです。次のコードを使って、SageMaker JumpStartでベクトル埋め込みを生成し、作成したベクトルを各ドキュメントのためにコレクションを更新できます:
payload = {"text_inputs": [document[field_name_to_be_vectorized]]}query_response = query_endpoint_with_json_payload(json.dumps(payload).encode('utf-8'))embeddings = parse_response_multiple_texts(query_response)# update the documentupdate = {'$set': {vector_field_name : embeddings[0]}}collection.update_one(query, update)
上記のコードは、コレクション内の単一のオブジェクトを更新する方法を示しています。すべてのオブジェクトを更新するには、手順に従ってください。
MongoDBベクトルデータストア
MongoDB Atlas Vector Searchは、MongoDBでベクトルデータを格納して検索するための新機能です。ベクトルデータは、高次元空間のポイントを表すデータの種類です。この種類のデータは、MLやAIのアプリケーションでよく使用されます。MongoDB Atlas Vector Searchは、k最近傍法(k-NN)という手法を使用して類似のベクトルを検索します。k-NNは、与えられたベクトルに対して最も類似しているk個のベクトルを見つけることで動作します。最も類似しているベクトルは、ユークリッド距離に基づいて与えられたベクトルに最も近いものです。
ベクトルデータを操作データの隣に格納することで、データを異なるストレージシステム間で移動する必要がなくなり、パフォーマンスが向上します。これは特にベクトルデータへのリアルタイムアクセスが必要なアプリケーションにとって有益です。
ベクトル検索インデックスの作成
次のステップは、前のステップで作成したベクトルフィールドにMongoDB Vector Searchインデックスを作成することです。MongoDBは、ベクトル埋め込みをインデックス化するためにknnVector
タイプを使用します。ベクトルフィールドは、配列の形式で表される必要があります(BSONのint32、int64、またはdoubleデータタイプのみ)。
knnVector
タイプの制限についての詳細は、Review knnVector Type Limitationsを参照してください。
以下のコードは、サンプルのインデックス定義です:
{ "mappings": { "dynamic": true, "fields": { "egVector": { "dimensions": 384, "similarity": "euclidean", "type": "knnVector" } } }}
次元は埋め込みモデルの次元と一致する必要があることに注意してください。
ベクトルデータストアのクエリ
Vector Search聚合パイプラインを使用して、ベクトルデータストアをクエリできます。これは、ベクトル検索インデックスを使用し、ベクトルデータストアで意味的な検索を実行します。
以下のコードは、サンプルの検索定義です:
{ $search: { "index": "<index name>", // オプション、デフォルトは "default" "knnBeta": { "vector": [<array-of-numbers>], "path": "<field-to-search>", "filter": {<filter-specification>}, "k": <number>, "score": {<options>} } }}
SageMaker大規模言語モデルを展開する
SageMaker JumpStartファウンデーションモデルは、テキストの要約、質問応答、自然言語推論など、さまざまな自然言語処理(NLP)タスクを解決するために使用される事前学習済みの大規模言語モデル(LLM)です。さまざまなサイズと構成で利用できます。このソリューションでは、Hugging FaceのFLAN-T5-XLモデルを使用します。
SageMaker JumpStartでFLAN-T5-XLモデルを検索します。
展開を選択してFLAN-T5-XLモデルをセットアップします。
モデルが正常に展開され、エンドポイントがアクティブになっていることを確認します。
Amazon Lexボットの作成
Amazon Lexボットを作成するには、次の手順を完了します:
- Amazon Lexコンソールで、ボットの作成を選択します。
- ボット名に名前を入力します。
- ランタイムロールには、基本的なAmazon Lexの権限を持つロールを作成を選択します。
- 言語設定を指定し、完了を選択します。
NewIntent
のUIにサンプル発話を追加し、インテントの保存を選択します。- デフォルトで作成された
FallbackIntent
に移動し、Fulfillmentセクションでアクティブを切り替えます。 - ビルドを選択してビルドが成功したら、テストを選択します。
- テストする前に、歯車アイコンを選択します。
- MongoDB AtlasとLLMとの対話の提供に関与するAWS Lambda関数を指定します。 このラムダ関数を作成するには、これらの手順に従ってください。
- 今やLLMと対話できます。
片付ける
リソースを片付けるために、以下の手順を完了してください:
- Amazon Lexボットを削除します。
- Lambda関数を削除します。
- LLM SageMakerエンドポイントを削除します。
- 埋め込みモデルSageMakerエンドポイントを削除します。
- MongoDB Atlasクラスタを削除します。
結論
この記事では、MongoDB Atlasセマンティックサーチを使用し、SageMaker JumpStartからのモデルと統合するシンプルなボットの作成方法を紹介しました。このボットを使用すると、MongoDB Atlasで発生したコンテキストに対応しながら、SageMaker Jumpstartで異なるLLMとのユーザーインタラクションを迅速にプロトタイプできます。
いつものように、AWSではフィードバックを歓迎します。質問やフィードバックはコメントセクションにお願いします。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- このAI論文では、大規模なマルチモーダルモデルの機能を拡張する汎用のマルチモーダルアシスタントであるLLaVA-Plusを紹介しています
- マルチクエリアテンションの解説
- mPLUG-Owl2をご紹介しますこれは、モダリティの協力によってマルチモーダルな大規模言語モデル(MLLMs)を変換するマルチモーダルファウンデーションモデルです
- AIキャリアのトレンド:人工知能の世界で注目されているものは何ですか?
- CV2(OpenCV)は、コンピュータビジョンのためのオープンソースのライブラリですこのライブラリは、画像処理やコンピュータビジョンの応用を開発するために広く使用されています CV2を使用すると、さまざまな画像処理タスクを実行できますその中の一つが、イメージ上のパターンを見つけることです パターン検出は、コンピュータビジョンの重要な分野です例えば、顔検出や文字認識などのアプリケーションでは、パターン検出が一般的に使用されます
- このAI論文は、実世界の網膜OCTスキャンを使用して、年齢に関連した黄斑変性の段階を分類するためのディープラーニングモデルを紹介しています
- 「ネットイース・ヨウダオがEmotiVoiceをオープンソース化:強力でモダンなテキスト読み上げエンジン」というタイトルの記事です