RAGについて知見がほとんど無かったので概要をざっくり整理してみました。
RAG(Retrieval-Augmented Generation)は、AIが答えを作る前に外部の情報(社内ドキュメント/ナレッジベースなど)を検索し、その情報を使って回答を生成する仕組みです。これにより、単に大規模言語モデル(LLM)の記憶だけに頼るよりも正確で最新の回答ができるようになります。
学校の司書が質問に答える例でいうと:
この「探す → 情報をまとめる → 答える」流れが、RAGの考え方です。
典型的なRAGパイプラインは大まかに次のようになります:
| 項目 | 意味 |
|---|---|
| Retrieval | 外部情報を検索 |
| Augmented | 情報を追加・拡張 |
| Generation | LLMが回答を生成 |
→ RAGはこの3つのステップを組み合わせた最新型AI応答設計です。
AWS で RAG(FAQ 型)を本番稼働させる場合の典型構成は次のとおりです。
API(Lambda)+ ベクトル検索(OpenSearch / Aurora / DynamoDB+Vector)+ LLM(Bedrock or OpenAI)+ S3
| ローカル | AWS | 役割 |
|---|---|---|
| FAISS | OpenSearch Vector | ベクトル検索 |
| Ollama / LLaMA | Bedrock(Claude, Llama, Titan) | LLM |
| CSV | S3 | ベクトルデータインデックス用のデータ原本 |
| Python Script | Lambda | API |
Lambda が RAG の司令塔 です。
Lambda内でやること:
ローカルの:
python build_index.py
は AWS では次のいずれかになります。
【全体の処理フロー】
ユーザー質問
↓
Frontend
↓
API Gateway
↓
Lambda
↓
Embedding生成
↓
OpenSearchで類似FAQ検索
↓
FAQ + 質問を LLM に渡す
↓
回答生成
↓
ユーザーへ返却Lambda(Python 側)で:
| 役割 | ローカル検証環境 | AWS 本番環境 | 補足 |
|---|---|---|---|
| フロント | Solid.js(dev server) | S3 + CloudFront | SPAはそのまま |
| API | Python CLI / 仮API | API Gateway | HTTPS・認証 |
| 実行基盤 | Docker Compose | AWS Lambda | 実行形態が変わるだけ |
| RAG制御 | LangChain | LangChain | 基本同一 |
| LLM | Ollama + LLaMA | Bedrock / OpenAI | 差し替えポイント |
| Embedding | sentence-transformers 等 | Bedrock Embeddings / OpenAI Embeddings | 別APIになる |
| ベクトルストレージ | FAISS を使ってファイルとしてベクトルインデックスを管理 ※FAISS(Local Vector Store) ベクトルを ローカルファイル として保存 |
S3 Vectors, OpenSearch, Pinecone, Weaviate | |
| ベクトル検索 | FAISS(ローカル) | OpenSearch / Aurora | 最大の違い |
| FAQ元データ | CSV | S3 | 保存先変更 |
| インデックス作成 | build_index.py | バッチLambda / ECS | 実行場所が違う |
※AWSでは両方が Bedrock/OpenSearch に吸収されて見える
| 観点 | FAISS | S3 Vectors / OpenSearch |
|---|---|---|
| 役割 | 検索エンジン | 検索 + 永続 + 運用 |
| 保存 | ファイル | マネージド |
| 再構築 | 手動 | イベント駆動可 |
| バックアップ | 自前 | 自動 |
| 役割 | ローカル検証環境 | AWS 本番環境 | 補足 |
|---|---|---|---|
| 設定管理 | .env / compose.yml |
SSM Parameter Store / Secrets Manager | APIキー・モデル名 |
| 認証・認可 | なし | Cognito / IAM / JWT | FAQでも必須になること多い |
| ログ | stdout / print | CloudWatch Logs | LLMの誤動作検知 |
| 監視 | なし | CloudWatch Metrics / Alarms | レイテンシ・失敗率 |
| エラーハンドリング | 例外そのまま | API Gateway + Lambda制御 | ユーザー向け整形 |
| スケーリング | 手動 | Lambda / OpenSearch AutoScale | FAQ増加時 |
| FAQ更新検知 | 手動実行 | S3 Event / 管理画面 | 再インデックス起点 |
| キャッシュ | なし | API Gateway / ElastiCache | LLMコスト削減 |
| CI/CD | なし | GitHub Actions / CodePipeline | インデックス再生成含む |
役割:RAG全体のオーケストレーション
概要:
向いているケース:
特徴: