はじめに
Amazon BedrockとKendraを活用したRAG(Retrieval-Augmented Generation)による社内文章検索システムについて説明します。本システムは、従来の検索システムよりも高度な情報検索を実現し、社内情報の活用を促進します。
今回作ったレポジトリーはこちらです。
Retrieval-Augmented Generation(RAG)とは
Retrieval-Augmented Generation(RAG)とは、日本語では「検索拡張生成」と訳されます。これは、自然言語処理技術を活用して、既存の文書から情報を抽出し、新しい文章を生成する手法です。
AWS BedrockとKendraを組み合わせることで、社内文書を効率的に活用し、高品質な文章を生成することが可能になります。
仕組み
Kendraによる検索: ユーザーからの質問や指示に基づいて、Kendraに対して検索クエリを送信します。Kendraは社内文書をインデックス化しており、関連性の高い文書を抽出して検索結果を返します。
- Bedrockによる文章生成: Bedrockは、Kendraから返された検索結果を基に、新しい文章を生成します
- Bedrockは、生成された文章が論理的に整合性があり、文法的に正しいことを確認します
- ユーザーへの回答: 生成された文章は、ユーザーに対して回答として提示されます
RAGとファインチューニングの違い
RAG(Retrieval-Augmented Generation)とファインチューニングは、どちらも自然言語処理において重要な技術ですが、それぞれ異なる目的と仕組みを持っています。
目的
- RAG: 既存の文書から情報を抽出し、新しい文章を生成すること
- ファインチューニング: 既存の言語モデルを特定のタスクやデータセットに合わせて調整すること
仕組み
- RAG: 検索エンジンを使って、入力クエリの関連する文書を検索します。検索結果から情報を抽出し、新しい文章を生成します
- ファインチューニング: 既存の言語モデルに対して、特定のタスクやデータセットのラベル付きデータを入力します。言語モデルのパラメータを調整し、タスクやデータセットのパフォーマンスを向上させます
長所と短所
x | RAG | ファインチューニング |
---|---|---|
長所 | - 少ないデータで学習できる。 - 既存の知識を活かせる。 - 多様な文章形式を生成できる。 |
- 高い精度が期待できる。 - 特定のタスクに特化できる。 |
短所 | - 生成される文章の質が不安定になる場合がある。 - 検索結果に依存するため、偏りが生じる可能性がある。 |
- 大量のデータと計算資源が必要。 - 汎用性が低くなる。 |
実装
インフラ構成
- S3: データの保存と管理
- API Gateway: システムと外部の通信を可能にする API の作成と管理
- CloudWatch: ログの収集
- ELB: トラフィックの分散と負荷分散
- Fargate: コンテナの管理とスケーリング
- ECR: コンテナイメージの保存と管理
- IAM: アクセス管理とセキュリティの設定
- Lambda: イベント駆動型のサーバーレスコンピューティング
実装のポイント
Bedrockのモデルを有効にする。
AWS マネジメントコンソールで Amazon Bedrockにアクセスし、「Titan Text G1 - Express」を有効にして下さい。terraformでは自動化できず手動のみです。
Amazon Kendraサービスとs3と同期
AWS マネジメントコンソールで Amazon Kendraにアクセスし、s3と同期して下さい。terraformでは自動化できず手動のみです。
結果
参考記事