Amazon Web Services ブログ
コネヒト株式会社様の AWS 生成 AI 事例「Amazon Bedrock と Amazon OpenSearch Service による高度な質問検索機能を早期開発」のご紹介
本ブログはコネヒト株式会社様と Amazon Web Services Japan が共同で執筆いたしました。
みなさん、こんにちは。AWS ソリューションアーキテクトの瀬高です。
昨今、生成 AI が盛り上がりを見せていますが、特にユースケースとして多い RAG (Retrieval Augmented Generation) に関する事例をご紹介します。
RAG とは生成 AI モデルと外部の独自情報をかけ合わせる技術となっており、ビジネスで既に活用しているデータやドキュメントを活かした回答精度の向上や、事実に基づかない回答をする「ハルシネーション」のリスク軽減ができる点から注目されています。(RAG の詳細はこちら)
この記事では 2023 年 12 月にコネヒト株式会社様で取り組んでいただいた Amazon Bedrock と Amazon OpenSearch Service を活用し、質問検索の体験向上について 1 ヶ月という短い期間で検証をしていただいた事例となります。
本取り組みはコネヒト株式会社様による開発者ブログにて、詳細に解説いただいています。あわせて御覧ください。
お客様の状況と検証に至る経緯
コネヒト株式会社様は、ママリというママ向け Q&A アプリ/ 情報サイトを AWS 上で実装、運営しており、2022年より Amazon OpenSearch Service を利用したサービス内質問の検索機能を提供していました。
その中でも、プレミアムユーザー向けの機能である、質問の人気順ソート機能が大きな加入要因となっている点から、利用者の検索体験をより良いものにすることで、プレミアム会員の価値向上を目指したいという考えがあり、生成 AI とのかけ合わせによる検索体験の向上を検証することになりました。
今回の検証について
今回は Amazon OpenSearch Service を利用した全文検索システムを提供しているという点を活かし、実際に利用しているデータのベクトル化を行い、ベクトル検索と全文検索を1ヶ月という短期間で比較検証を行い、ベクトル検索の優位な点を検証されていました。
ベクトル検索を実行するために必要なベクトルデータは Amazon Bedrock の埋め込みモデルによって生成しています。Amazon Bedrock から利用できるモデルの中には単語やテキスト、画像などを AI や言語モデルが使いやすい数値ベクトルへ変換するために用いられる「埋め込みモデル」と言われるモデルがあります。今回はコンテキスト長や対応言語の観点から、Titan Embeddings を利用してベクトル化を行っています。
次にベクトルデータを格納する Amazon OpenSearch Service 内に全文検索とベクトル検索、両方に対応したインデックスを作成しました。
インデックスを作成する前にドメインを作る必要があります。ドメインの作成方法についてはこちらをご参照ください。
検証では opensearch-py というライブラリを用いて Python でインデックスを作成しており、bulk 関数を用いてデータを登録しています。
データの登録が終わり、下記の 5 つのケースについて検証を実施しています。
- ケース1. クエリが一つの単語で構成される場合
- ケース2. クエリが複数の単語で構成される場合
- ケース3. クエリに固有名詞を含む場合
- ケース4. クエリに誤字を含む場合
- ケース5. クエリに文章を使用した場合
検証結果としては、固有名詞を含むクエリなどは苦手とする一方、誤字を含むクエリでは本来入力しようとした情報を踏まえた検索結果の返却や、文章をクエリとする検索では全文検索以上にユーザーが求める検索結果が返る可能性があることがわかりました。
検証の結果と今後について
マネージドサービスである Amazon OpenSearch Service の活用や、Amazon Bedrock による API を通した既存テキストデータの埋め込みデータへの変更、全文検索とベクトル検索の比較という内容を1ヶ月という短期間で構築、検証結果を得ることができました。
検証結果については、全文検索にも固有名刺を含むケースや単語が確実に含まれている質問を出したいケースなど優れた点がありつつも、誤字や曖昧表現にも強く自然言語などをもとに高い精度で検索ができる、ベクトル検索の特徴を活かした検索ができる場面があることがわかりました。
コネヒト株式会社様は 全文検索とベクトル検索の検索スコアを統合し、両者のメリットを活かすハイブリッド検索のプロトタイピングにも取り組んでいくとのことで、今後更に検索体験の向上に向けた取り組みを行っていくとのことです。
CTO の永井様からは “Amazon Bedrock と Amazon OpenSearch Service を利用することでよりユーザの意図に沿った検索結果を返すことができ、検索体験の改善につながる手応えがありました” とのコメントもいただいたいます。
他の RAG 実装アプローチについて
コネヒト株式会社様は RAG を実装するために、既存のデータを埋め込みモデルを利用してベクトルデータに変換するアプローチを採用されました。
それ以外にも、AWS では RAG を実装する方法がいくつかございますので、その整理をしてこの記事を結びたいと思います。
今回は2番の方法に該当しますが、Amazon OpenSearch Service 以外にも Amazon RDS for PostgreSQL や Amazon Aurora (PostgreSQL 互換) をデータストアに使うこともできます。1、 3、4番のように検索サービスやマネージドのレベルが高い Amazon Kendra や ナレッジベース、Amazon Q Business という仕組みを活用していく手段も用意されており、データやドキュメントを用意するだけで RAG 環境を構築することが可能な方法もあります。(Amazon Q Business は 2024 年 5 月執筆時点で日本語に未対応です。)
プロダクトの検索体験向上にご興味があり、どの方法が良いかわからない場合は、ご支援させていただきます。担当営業までお気軽にお問い合わせください。
まとめ
今回は既存の OpenSearch 上のデータと生成 AI を組み合わせることで、利用者の検索体験向の向上を目指したお客様の挑戦についてご紹介いたしました。
全文検索の仕組みだけでなく、新たなユーザーの検索体験につながる結果も得られており、今後の生成 AI 活用も期待ができると思われます。
また、今回のようなベクトル DB を構築する以外にも AWS 上で RAG を構築する方法が複数ある点についても触れさせていただきました。
構築方法でご不明な点があればお問い合わせいただければと思います。ぜひお試しください。
ソリューションアーキテクト 瀬高 拓也 (X – @stktky)