![]() 本記事は 夏休みクラウド自由研究2026 8/30付の記事です。 |
こんにちは、SCSKの木澤です。
当サイトも記事数が約1,800に達し、全文検索でお目当ての記事が表示されるまでに手間がかかることが増えてきました。
最近はWebサイトにAIチャットボットが搭載されるケースが増えているため、当サイトへの実装を目指して検討を開始しました。
今回は前編として、想定しているアーキテクチャとそのポイントをご紹介します。
アーキテクチャ
AIコーディングエージェントと壁打ちしながら検討し、以下のようなアーキテクチャ構成を目指すこととしました。
更新系
更新パターンは以下の3つを想定し、それぞれに対応する処理(Lambda関数)を構成します。
- 全記事(初期投入時) ※手動実行
- 当該記事のみ(記事追加・更新時)
- 日次差分(更新漏れ防止)
データ処理の流れとしては以下の通りです。
- WordPress REST APIから実際の記事データを取得する
- 文書を意味的・構造的に適切なサイズに分割する「チャンキング」を行う
- チャンクデータをベクトルDB(S3 Vectors:後述)に格納する
運用開始後のデータ同期は、記事更新時の差分追加と日次バッチ処理で対応します。
参照系
ユーザーからの質問に対し、RAGを用いて類似記事を含めた検索結果を返す「クエリ実行用Lambda関数」を開発します。
これをCloudFront経由で呼び出し、ユーザーに応答を返します。
なお、WordPressサイト上のミニウィンドウで手軽に利用できるよう、専用のWordPressプラグインも開発します。
ポイント
本構成のキーとなるコンポーネントの選定理由や工夫した点を解説します。
ベクトルストアに「S3 Vectors」を採用
核となるベクトルデータベースには、サーバレスかつベクトル専用のストアである「S3 Vectors」を採用しました。
AWS上で構成可能なベクトルDBにはAmazon OpenSearch Serverlessなど他にも多様な選択肢がありますが、以下の点から今回のユースケースには最適だと判断しました。
- 圧倒的なコスト優位性
OpenSearch Serverlessの場合はインスタンスコストとして月額175~350ドル程度の固定費用が発生しますが、S3 Vectorsは完全従量課金のため圧倒的に安価に運用可能です。
(例:20万ベクトル、月130万クエリで月額約7.1ドル) - インフラ管理が完全に不要
クラスタサイズやシャードの設計、監視運用が不要で、APIを呼び出すだけで利用できます。 - S3と同様の耐久性
S3同等の99.999999999% の耐久性があります。 - スケーラビリティ
1インデックスあたり最大20億ベクトルまで拡張可能であり、RAG用途であれば数百万記事レベルまで対応できます。
一方で、S3 Vectorsには以下のようなデメリットもありますが、今回の要件では全く問題になりません。
- 検索速度が100~300ミリ秒と少々遅いこと
- ベクトル次元の上限が4096であること(今回使用するTitanモデルの上限が1024なので問題なし)
- PutVectorsの上限が 500ベクトル/リクエスト、2,500ベクトル/秒であること(数千記事の初回インデックスは数分で完了できるので許容範囲)
フルマネージドRAG(Knowledge Bases)の不採用
今回はAWSが提供するマネージドのRAG環境「Amazon Bedrock Knowledge Bases」は選択せず、セルフマネージド構成としました。
理由は、WordPressとの統合を細かく、かつ柔軟に実装したかったためです。
Amazon SQSによる逐次処理の分離
全記事の初期投入時など、大量のコンテンツを処理する際には、Lambdaの実行時間制限に引っかかる懸念があります。
そのため、Amazon SQSを間に挟み、ベクトルDBを作成するLambda関数を逐次処理として分離するアーキテクチャにしています。
動作の実際
さて、将来的に本サイトへ実装を目標として現在開発・テスト中です。
RAGの構築は完了しているので、動作の様子をお見せしたいと思います。
この例では、上記アーキテクチャ図の「クエリ実行Lambda」をコマンドから実行して答えを得ています。
curl -s -i -X POST "https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.lambda-url.ap-northeast-1.on.aws/" \
-H "Content-Type: application/json" \
-d '{"question":"AWS IoTについて教えて"}'
HTTP/1.1 200 OK
Date: Sun, 30 Aug 2026 13:58:46 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 2293
Connection: keep-alive
AWS IoTは、モノのインターネット(IoT)をサポートするためのクラウドサービスであり、以下の特徴があります:
1. **MQTT(S)プロトコルのサポート**: 軽量なプロトコルであるMQTT(S)をサポートしており、データ通信量を削減できます。また、SORACOM Beamと組み合わせることで、非力なデバイスでも暗号化処理をオフロードできます。
2. **双方向の通信**: デバイスからクラウドへの送信だけでなく、クラウドからデバイスへの通信も可能です。これにより、クラウド側からデバイスの制御を行うことができます。
3. **ルールエンジン**: SQLライクなルールエンジンを備えており、ルールに基づいて複数のAWSサービスにデータを転送できます。これにより、ルールの追加でシステムの拡張が可能です。
4. **デバイスシャドウ**: デバイスの状態を「どのようになっているか」「どうになって欲しいか」を記憶しておくデータストアです。これにより、通信状態が不安定なデバイスに対しても安定した制御が可能になります。
5. **デバイス登録と証明書管理**: デバイスを登録し、個別のプライベートキーを発行する必要があります。これにより、セキュリティ管理が可能です。
6. **SORACOMとの連携**: SORACOMのSIMカードやデバイスとAWS IoTを連携することができ、クラウドとデバイス間の通信を容易に実現できます。
これらの機能により、AWS IoTはIoTシステムの開発と管理をサポートする包括的なプラットフォームを提供しています。
---
参照記事:
- [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX](https://xxxxxx)
- [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX](https://xxxxxx) -
- [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX](https://xxxxxx) -
今後に向けて
RAG開発は以前から行いたいと考えており、遅くなっていたのですが「夏休みクラウド自由研究」を機にチャレンジしてみました。
RAG環境が完全従量課金でできるとは、良い時代になりましたし、S3 Vectorsを初めて触ってみて大変面白いなと思いました。
今回はAIコーディングエージェントを用いて開発していますが、テストが完了次第、実装方法も含めて後続記事を発行したいと考えております。
今しばらくお待ちください。

