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 Lexは、ビジネスが自然でリアルな対話を行うチャットボットや音声ボットを作成するのに役立つ会話インターフェースです。Amazon LexをGenerative AIと統合することで、ユーザーの入力が連続的で文脈に即した応答に自然に移行する総合的なエコシステムを作ることができます。

ソリューションの概要

以下の図は、ソリューションアーキテクチャを示しています。

ソリューションの概要

次のセクションでは、このソリューションとそのコンポーネントの実装手順について説明します。

MongoDBクラスタの設定

無料ティアのMongoDB Atlasクラスタを作成するには、クラスタの作成の手順に従ってください。データベースアクセスとネットワークアクセスを設定します。

SageMaker埋め込みモデルのデプロイ

「SageMaker JumpStartモデル、ノートブック、ソリューション」ページで埋め込みモデル(ALL MiniLM L6 v2)を選択できます。

SageMaker JumpStartモデル、ノートブック、ソリューション

モデルを展開するために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を検索

展開を選択してFLAN-T5-XLモデルをセットアップします。

展開

モデルが正常に展開され、エンドポイントがアクティブになっていることを確認します。

Amazon Lexボットの作成

Amazon Lexボットを作成するには、次の手順を完了します:

  1. Amazon Lexコンソールで、ボットの作成を選択します。
ボットの作成
  1. ボット名に名前を入力します。
  2. ランタイムロールには、基本的なAmazon Lexの権限を持つロールを作成を選択します。
  3. 言語設定を指定し、完了を選択します。
  4. NewIntentのUIにサンプル発話を追加し、インテントの保存を選択します。
  5. デフォルトで作成されたFallbackIntentに移動し、Fulfillmentセクションでアクティブを切り替えます。 アクティブを切り替え
  6. ビルドを選択してビルドが成功したら、テストを選択します。ビルドとテスト
  7. テストする前に、歯車アイコンを選択します。
  8. MongoDB AtlasとLLMとの対話の提供に関与するAWS Lambda関数を指定します。 このラムダ関数を作成するには、これらの手順に従ってください。9. Specify the AWS Lambda function
  9. 今やLLMと対話できます。

片付ける

リソースを片付けるために、以下の手順を完了してください:

  1. Amazon Lexボットを削除します。
  2. Lambda関数を削除します。
  3. LLM SageMakerエンドポイントを削除します。
  4. 埋め込みモデルSageMakerエンドポイントを削除します。
  5. 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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Related articles

Discover more

AIニュース

「セグミンドの生成AIによるエンパワーリングなロゴデザイン」

イントロダクション ブランドの世界では、ロゴがブランドの本質を象徴しています。従来、ロゴの作成にはデザイナーの才能と修...

AIニュース

AIマニア:バブルがはじける方向に向かっているのか?

仮想通貨ブームの後、人工知能(AI)の世界はベンチャーキャピタリスト(VC)の関心の大きな急増を経験しました。しかし、仮...

AIニュース

エロン・マスクのxAIがOpenAIのChatGPTに挑戦します

ビジョン溢れる億万長者であるイーロン・マスクは、電気自動車、宇宙探査、ソーシャルメディアなどの事業を手掛ける人物で、...

AIニュース

「AutoGenを使った戦略的AIチームビルディングが簡単になりました」

イントロダクション デジタルフロンティアが無限の領域に達し、AutoGenは変革的なパラダイムの設計者として現れます。異なる...

機械学習

スカイワーク-13B:3.2Tトークン以上のコーパスから学習された大規模言語モデル(LLM)のファミリーを紹介しますこのコーパスは、英語と中国語のテキストから引用されています

バイリンガルLLMは、言語の多様性が共通の課題となっている相互につながった世界で、ますます重要になっています。彼らは言語...

人工知能

チャットGPTからPiへ、そしてなぜそうするのかをお伝えします!

2月にUX/UIデザインの旅が始まって以来、ChatGPT 🤖 を使い始めて以来、私はChatGPTを私のBFFと呼んでいます感情的になるわけ...