【AWSではじめる生成AI】12章「生成AIのマネージドサービス Amazon Bedrock」だけ読んでみた
はじめに
この記事は株式会社うるる(ULURU)Advent Calendar 2024の19日目の記事です。
私が担当しているプロダクトにRAGを導入しようという動きがあり、Amazon Bedrock に触れる機会がちょっとだけありました。それにあたり 『AWSではじめる生成AI』 という書籍を購入してみたので、本格導入が始まるまえに表題の章だけでも読んでおこうと思い、そこで得た学びなどを自分の言葉で記事にしていこうと思います。
セマンティック検索とは
当たり前のように「セマンティック」という用語が使われていたので、AI初学者の私は「「セマンティックとは何か」についてまとめてみる」の記事で、まずは言葉の意味から調べてみました。
セマンティックとは、一般的には「意味」や「意味論」に関することを指す語である。
IT用語としては、コンピュータに文書や情報の持つ意味を正確に解釈させ、文書の関連付けや情報収集などの処理を自動的に行わせる技術について用られる語である。
また、本書の別章では下記の説明もありました。
セマンティック(semantic)は、構文上(syntactic)や文法上(grammatical)どのような表現が行われているかとは別に存在する文脈に基づいた意味を表す。
なにやら哲学的な言葉に思われてきましたが、おそらくセマンティック検索というのは コンピュータがあたかも行間を読んだかのように振る舞う検索 のことなのではないかと解釈しました。
ngramによる検索との違い
その解釈を裏付けるために、セマンティック検索とnグラム検索とで結果の比較をChatGPTに依頼しました。
クエリ:「寿司 美味しい」
1.セマンティック検索
・ 結果:「評判の良い寿司店」「東京の高評価寿司レストラン」
・ → 「美味しい」という意味を理解し、文脈に沿った結果を返す。
2.nグラム検索
・ 結果:「寿司が美味しい」「美味しい寿司店」「寿司 美味しい 安い」
・ → 「寿司」や「美味しい」という文字列が部分一致する結果を返す。
nグラム検索では文字の組み合わせでしか結果を返さないのに対し、やはりセマンティック検索は検索の意図を深読みしてくれてる感があります。
埋め込み(Embedding)
埋め込みとは、単語、画像、動画等のオブジェクトを、ベクトル空間で表現したものです。
検索対象のデータをあらかじめ埋め込みに変換しておき、検索内容(任意の入力文字列)も埋め込みに変換することで、ベクトル間の距離を比較して、上記セマンティック検索が実現されるそうです。
埋め込みはセマンティック検索のほかに、推薦、分類といったユースケースがあるそうです。
モデルの微調整
Amazon Bedrockで使える基盤モデルを、ラベル付きデータを用いて微調整できるようです。
(微調整をサポートするモデルの最新リストはこちら)
所謂チューニングという奴でしょうか?
前回RAG検証したときは基盤モデルをそのまま使うに留まったので、次回本格導入する際は検討します。
エージェント
Agents for Amazon Bedrock を利用することで、アプリケーションAPI(Lambda)を自然言語で呼び出せるそうです。
「Agents for Amazon Bedrock から複数のLambda関数を呼び分ける」の記事を読んでなんとなくイメージが付きましたが、APIの呼び出しを入力テキストを元にAIが判断してくれてる感じでしょうか。
RAGの導入が完了した後の次の追加機能案として何か考えられるかもしれません。
セキュリティ
Amazon Bedrockでは、プロンプト、応答、微調整済みモデルは全て、AWSを利用する組織のアカウント内だけでアクセスできる、非公開な状態に保たれます。組織のデータが、Amazon Bedrockサービスの改善に利用されることはありません。さらに、組織のデータが、サードパーティのプロバイダーと共有されることもありません。
RAGを構築する上で気になったのが「社内のデータを基盤モデルに食わせてセキュリティ的に大丈夫なの!?」といった点ですが、データ保護の規則・規制に沿った構成になっているようです。
TLSによる伝送中の暗号化、KMSによる保存時の暗号化、AWS VPC EndpointによるプライベートAWSネットワーク構築が、それぞれサポートされています。
最後に
本書のタイトルからしてがっつり実務よりの書籍と思い購入しましたが、かなり理論強めだったので順番を飛ばして最終章だけ読みました。初学者の私としては「そういうのがあるんだぁ〜」というものばかりでしたが、Amazon Bedrockを体系的に学ぶ良い機会となりました。業務でアウトプットしていきたいです!
明日は、松下博樹さん(@hirokiii27)の記事です!
Discussion