Amazon Web Services ブログ

Amazon Titan マルチモーダル埋め込みモデルを使用したコスト効率の高いドキュメント分類

様々な形式の大量の文書を分類し、その分析を行いたいと様々な業種の企業が考えています。これらの文書を手作業で処理して分類・情報抽出を行うことは、費用がかかり、ミスが生じやすく、スケーリングが難しい作業です。
生成 AI (generative artificial intelligence) 技術の発展により、文書の分類を自動化できる、インテリジェントドキュメント処理 (IDP) ソリューションが登場しました。こうしたソリューションは、非構造化された様々な企業文書に対して、低コストで効率的な分類機能を提供します。

文書を分類することは、IDP システムにおける重要な最初のステップです。文書を分類することで、種類に応じた次に取るべき一連のアクションを決定しやすくなります。例えば、請求審査プロセスでは、会計チームが請求書を受け取り、請求処理部門が契約書や文書を管理します。従来のルールエンジンや ML ベースの分類機能で文書を分類できますが、対応できる文書形式の種類に制限があり、新しい分類を都度追加する対応をすることがあります。詳細については、こちらのブログ をご覧ください。

この投稿では、Amazon Titan マルチモーダル埋め込みモデルを使用したドキュメント分類について説明します。このモデルを使えば、トレーニングを行うことなく、あらゆるタイプのドキュメントを分類することができます。

Amazon Titan マルチモーダル埋め込み

Amazonは、Amazon BedrockAmazon Titan マルチモーダル埋め込みモデル を導入しました。このモデルは画像とテキストの埋め込みベクトルを作成できるため、新たな文書分類ワークフローで使用する文書ベクトルの作成が可能になりました。

Amazon Titan マルチモーダル埋め込みモデルを使用することで、画像としてスキャンされた文書の最適化されたベクトル表現を生成します。画像とテキストの両方の意味を含む単一の数値ベクトルに変換することで、高速な索引、強力な文脈検索、正確な文書分類を可能にします。

ビジネスワークフローで新しい文書テンプレートや様式が現れた場合、Amazon Bedrock API を呼び出すだけでそれらをベクトル化し、IDPシステムにおける文書分類を迅速に強化することができます。

ソリューションの概要

以下のドキュメント分類ソリューションを Amazon Titan マルチモーダル埋め込みモデルで検討しましょう。最適なパフォーマンスを得るには、自身の特定のユースケースや既存の IDP パイプラインの設定に対してソリューションをカスタマイズする必要があります。

このソリューションは、入力文書を既にインデックス化された文書と照合することで、埋め込みベクトルのセマンティック検索を使用して文書を分類します。分類には、以下の主要コンポーネントを使用します:

  • 埋め込み埋め込みは、人間が複雑な情報を理解するように、単語、文章、画像などの情報を数値化して機械学習 (ML) や AI システムが理解するために用いる表現方式です。
  • ベクターデータベースベクターデータベースは、ベクトルを保存するために使われます。ベクターデータベースは、ベクトルを効率的にインデックス化し、整理することで、ユークリッド距離やコサイン類似度などの距離の尺度に基づいて類似したベクトル を高速に検索できるようにします。
  • セマンティック検索 – セマンティック検索は、入力クエリの文脈と意味、および検索されたコンテンツの関連性を考慮して動作します。ベクトル埋め込みは、テキストや画像の文脈上の意味を的確に捉え、保持するための効果的な方法です。このソリューションでは、アプリケーションがセマンティック検索を実行したい場合、まず検索文書をベクトルに変換します。次に、関連するコンテンツを含むベクターデータベースを照会して、最も類似したベクトルを見つけます。

ラベリングプロセスでは、請求書、銀行明細書、規定などのビジネス文書のサンプルが、Amazon Titan マルチモーダル埋め込みモデルを使用してベクトル化され、事前に定義されたラベルに対してベクトルデータベースに保存されます。Amazon Titan マルチモーダル埋め込みモデルはユークリッドの L2 アルゴリズムで学習されているため、良い結果を得るためには、ベクトルデータベースがこのアルゴリズムをサポートしている必要があります。

次の アーキテクチャ図は、Amazon Simple Storage Service (Amazon S3) バケット内のドキュメントと Amazon Titan マルチモーダル埋め込みモデルを使って画像ギャラリーを作成する方法を表しています。

ワークフローは次のステップで構成されます:

  1. ユーザーまたはアプリケーションが、分類メタデータを付けたサンプル文書画像を文書画像ギャラリーにアップロードします。ギャラリー画像の分類には S3 プレフィックスまたは S3 オブジェクトメタデータが使用できます。
  2. Amazon S3 オブジェクト通知イベントによって AWS Lambda 関数が呼び出されます。
  3. Lambda 関数は、Amazon Bedrock を呼び出して Amazon Titan マルチモーダル埋め込みモデルを用いて、文書画像をベクトルに変換します。
  4. 文書の分類と共に、画像埋め込みがベクターデータベースに保存されます。

アーキテクチャ図

新しい文書を分類する必要がある場合、同じ埋め込みモデルを使用し、クエリ文書を埋め込みに変換します。その後、クエリの埋め込みを使ってベクトルデータベースに対してセマンティック類似検索が実行されます。
最も類似度が高い埋め込みに対応するラベルが、クエリ文書の分類ラベルとなります。

以下のアーキテクチャ図は、S3 バケット内のドキュメントに対して Amazon Titan マルチモーダル埋め込みモデルを使用し、画像分類を行う方法を示しています。

ワークフローは次のステップで構成されています:

  1. 分類が必要な文書を、入力用の S3 バケットにアップロードします。
  2. Lambda 関数が Amazon S3 オブジェクト通知を受け取ります。
  3. Lambda 関数が Amazon Bedrock API を呼び出して、画像をベクトルに変換します。
  4. ベクターデータベースで、セマンティック検索を使用して一致する文書が検索されます。一致する文書の分類を使用して、入力文書を分類します。
  5. 入力文書を、ベクターデータベース検索から取得した分類を使用して、対象の S3 ディレクトリまたはプレフィックスに移動します。

This is the architecture diagram which illustrates how Titan Multimodal Embeddings can be used with documents in an Amazon Simple Storage Service (Amazon S3) bucket for image classification.

自身の文書でこのソリューションをテストできるよう、Python の Jupyter ノートブックのサンプルを GitHub で公開しています。

前提条件

ノートブックを実行するには、AWS アカウントが必要で、そのアカウントには Amazon Bedrock を使用するための適切な AWS Identity and Access Management (IAM) 権限が必要です。
また、Amazon Bedrock コンソールの Model access ページで、Amazon Titan マルチモーダル埋め込みモデルへのアクセスが許可されていることを確認してください。

実装

以下のステップでは、ユーザー入力を示すプレースホルダーを自身の情報に置き換えてください:

  1. ベクトルデータベースを作成します。このソリューションでは、インメモリ FAISS データベースを使用しますが、別のベクトルデータベースを使うこともできます。Amazon Titan のデフォルトの次元数は 1024 です。
index = faiss.IndexFlatL2(1024)
indexIDMap = faiss.IndexIDMap(index)
  1. ベクターデータベースを作成した後は、サンプル文書を列挙し、それぞれの文書の埋め込みベクトルを生成して、ベクターデータベースに保存します。
  1. 文書を用いてテストしてください。次のコードのフォルダは、自身の文書を保存したフォルダに置き換えてください:
DOC_CLASSES: list[str] = ["Closing Disclosure", "Invoices", "Social Security Card", "W4", "Bank Statement"] 

getDocumentsandIndex("sampleGallery/ClosingDisclosure", DOC_CLASSES.index("Closing Disclosure"))
getDocumentsandIndex("sampleGallery/Invoices", DOC_CLASSES.index("Invoices"))
getDocumentsandIndex("sampleGallery/SSCards", DOC_CLASSES.index("Social Security Card"))
getDocumentsandIndex("sampleGallery/W4", DOC_CLASSES.index("W4"))
getDocumentsandIndex("sampleGallery/BankStatements", DOC_CLASSES.index("Bank Statement"))
  1. Boto3 ライブラリを使用して、Amazon Bedrock を呼び出します。変数 inputImageB64 は自身の文書を表す base64 でエンコードされたバイト配列です。Amazon Bedrock からの応答には、埋め込みが含まれています。
bedrock = boto3.client(
 service_name ='bedrock-runtime',
 region_name ='Region'  # AWS のリージョン名を指定
)

request_body = {}
request_body["inputText"] = None # not using any text 
request_body["inputImage"] = inputImageB64 
body = json.dumps(request_body)
response = bedrock.invoke_model(
body = body, 
modelId ="amazon.titan-embed-image-v1", 
accept ="application/json", 
contentType ="application/json")
response_body = json.loads(response.get("body").read()) 
  1. ドキュメントの種類を表すクラス ID を付与し、ベクターデータベースに埋め込みを追加します:
indexIDMap.add_with_ids(embeddings, classID)
  1. ベクターデータベースに (ギャラリーを表す) 画像が格納されると、新しい文書との類似性を発見できます。たとえば、検索に使用される構文は次のとおりです。k = 1 は、FAISS から上位 1 件の結果を返すことを意味します。
indexIDMap.search(embeddings, k = 1)

さらに、入力画像と検出された画像間のユークリッド L2 距離も返されます。画像が完全一致する場合、この値は 0 になります。この値が大きいほど、画像の類似度が低くなります。

追加の検討事項

このセクションでは、ソリューションを効果的に利用するための追加の考慮事項について説明します。データプライバシー、セキュリティ、既存システムとの統合、コスト見積もりなどが含まれます。

データプライバシーとセキュリティ

AWS の責任共有モデルは、Amazon Bedrock のデータ保護にも当てはまります。このモデルに従い、AWS は AWS Cloud の全てを実行するグローバルインフラストラクチャを保護する責任を負います。お客様はこのインフラストラクチャ上でホストされるコンテンツをコントロールする責任があります。あなたはお客様の1人として、利用する AWS サービスのセキュリティ設定とタスクを管理する責任があります。

Amazon Bedrock におけるデータ保護

Amazon Bedrock は、顧客のプロンプトを AWS モデルの学習や第三者との共有に使用することはありません。また、Amazon Bedrock は、サービスのログに顧客データを保存したり記録したりしません。加えて、モデルプロバイダーは、Amazon Bedrock のログや顧客のプロンプトにアクセス出来ません。その結果、Amazon Titan マルチモーダル埋め込みモデルを介して生成された埋め込みに使用される画像は、AWS モデルやサードパーティの学習に使用されたり、保存されたりすることはありません。さらに、タイムスタンプやログインしたアカウント ID などの他の使用データも、モデル学習から除外されます。

既存システムとの統合

Amazon Titan マルチモーダル埋め込みモデルは、ユークリッドの L2 アルゴリズムで学習しているので、使用するベクターデータベースはこのアルゴリズムと互換性がある必要があります。

コスト見積もり

この投稿を書いている時点で、Amazon Bedrock の価格に基づき、Amazon Titan マルチモーダル埋め込みモデルをオンデマンド価格で使用した場合、このソリューションの推定コストは以下の通りです。

  • インデックス作成コスト – 画像ギャラリーに 1,000 枚の画像を想定すると、インデックス作成 1 回あたり $ 0.06
  • 分類コスト – 毎月 10 万枚の入力画像に対して $ 6

クリーンアップ

利用しないときは、作成した Amazon SageMaker ノートブックインスタンス などのリソースを削除して、今後の課金を回避してください。

まとめ

このポストでは、IDP ワークフローにおけるドキュメント分類について低コストなソリューションを構築するために、Amazon Titan マルチモーダル埋め込みモデルを使用する方法を説明しました。既存のドキュメントの画像ギャラリーを作成し、新しいドキュメントとの類似度検索を行って分類する手順を示しました。また、ドキュメント分類にマルチモーダル画像埋め込みを利用することで、様々な様式の文書に対応でき、スケーラブルで低レイテンシーという利点があることを説明しました。

ビジネスワークフローで新しいドキュメントテンプレートと様式が導入されると、開発者は Amazon Bedrock API を呼び出して動的にベクトル化し、IDP システムに追加して文書分類機能を迅速に強化できます。これにより、さまざまな構造化されていない企業の文書に対応できる、低コストで無限に拡張可能な分類が可能になります。

全体として、この記事は、Amazon Titan マルチモーダル埋め込みを使用して IDP ワークフローにおける文書分類のための低コストのソリューションを構築するための指針を提供しています。

次のステップとして、Amazon Bedrock とはを確認し、サービスの利用を開始できます。また、AWS Machine Learning Blog の Amazon Bedrockをフォローすると、Amazon Bedrock の新機能とユースケースの最新情報を入手できます。

著者について

Sumit Bhati は、AWS のシニアカスタマーソリューションマネージャーです。企業顧客のクラウド移行を加速させることを専門としています。Sumit は、移行の加速からワークロードのモダナイゼーション、革新的な実践のファシリテーションまで、顧客のクラウド導入のあらゆる段階でお客様をサポートすることに尽力しています。

David Girling は 20 年以上の経験を持つシニア AI/ML ソリューションアーキテクトで、企業システムの設計、主導、開発に携わっています。David は、顧客がデータを活用しユースケースに合わせてこれらの高機能サービスを学び、革新し、利用することを支援する専門チームの一員です。

Ravi Avula は、エンタープライズアーキテクチャに重点を置く AWS のシニアソリューションアーキテクトです。Ravi は 20 年間にわたるソフトウェアエンジニアリングの経験があり、決済業界でソフトウェアエンジニアリングおよびソフトウェアアーキテクチャのリーダーシップを数多く担ってきました。

George Belsianは、AWS のシニアクラウドアプリケーションアーキテクトです。顧客のモダナイゼーションとクラウド導入を加速させることに注力しています。ジョージは顧客チームと協力して、革新的でスケーラブルなソリューションの戦略立案、アーキテクチャ設計、開発を行っています。