はじめに
新しくできたAWS Certified Generative AI Developer - Professional試験の勉強で残しておきたいことをメモ。
ベクトルデータベース
非構造化データをベクトル(数値の配列)として格納したデータベース。ベクトル化はそれ用に学習させたモデル(埋め込みモデルやEmbeddingモデル)で行う。
ベクトル的に近ければ意味が近いということなので、意味の類似性に基づいて格納されたデータの検索ができる。
OpenSearch ServiceにBedrock Knowledge Basesでベクトル化したデータを保存する

生成AIにベクトルデータベースを検索した上で回答生成をさせることができる(RAG)ので、じゃあ検索の精度を上げるにはどうするか、というのが大事になってくる。
データソースの検索精度向上
チャンク化戦略のチューニング
比較的手を出しやすいのがデータを分割するチャンク化戦略をチューニングすることで、適切な大きさにデータをチャンク化し、検索時に入力と関連のあるチャンクを引っ張り出せるようにする。
チャンク化の方法としてはトークン数を指定する標準のチャンキング、階層的チャンキング、セマンティックチャンキング、などがある。
階層的チャンキングは親子のネスト構造でチャンクを整理し、検索時は最初に子チャンク、続いて包括的なコンテキストを取得させるために親チャンクを取得する。
セマンティックチャンキングは意味に沿ってチャンク化を行う。ハイパーパラメータでチャンクの最大トークン数、バッファ(埋め込み時に組み合わされる前後の文の数)、ブレークポイントのパーセンタイル閾値(文章間の距離/非類似性の閾値)を指定できる。
バッファを大きくすると1つのチャンクにより多くのコンテキストを含むことになるため、ノイズが増えることに注意。ブレークポイントのパーセンタイル閾値を高くするとチャンクの区切りの判断が厳しくなり、チャンク数が少なくなる。
メタデータでのフィルタリング
チャンクにメタデータ(タイトル、作成日時など)を関連付ける。
メタデータでフィルタすることで、例えば、意味的には類似しているものの古いチャンクがヒットしないようにすることができる。
リランキング
検索結果をLLMなどを利用して関連度で並べ替える。関連の薄いデータもいっぱいヒットするな……というときに関連度の高いデータに絞って取得できるようにする。
参考
推論プロファイル
推論プロファイルはモデルとBedrockのリクエストをルーティングするリージョンを定義する。また、プロファイルにタグをつけることでモデルごとのコストの可視化ができる。2026/2/15現在、API経由でのみ作成可能。
リファレンス見つつCLIで推論プロファイルを作ってみたが、model-sourceオプション(必須)でコピー元となる既存の推論プロファイルを指定しないとダメそう。
aws bedrock create-inference-profile --inference-profile-name test --model-source copyFrom=arn:aws:bedrock:ap-northeast-1:<アカウントID>:
<推論プロファイルID>
既存推論プロファイルIDはコンソールから取れる。(クロスリージョン推論のページ)
コピー元の推論プロファイルはシステム推論プロファイルで、create-inference-profileコマンドで作ったものはアプリケーション推論プロファイル。

参考
プロンプトルータ
単一のエンドポイントから同モデルファミリー内でリクエストをルーティングする。
単純なリクエストは安価なモデルに流し、複雑なリクエストは高性能なモデル流す、ということができる。
さっくり試したい場合
コンソールでプロンプトルータを作成し、ルータをプレイグラウンドで開くとルータに対してリクエストを投げることができる。
プロンプトルータ作成画面。2026/2/8時点ではNovaシリーズまたはCaludeシリーズが選択できる。

プロンプトルータをプレイグラウンドで試し(Nova Pro1.0とNova Lite1.0)

コンソールだと回答がどちらのモデルで生成されたか分かるけど、CloudWatchには特にログが出てなかったので、どのモデルがどのくらい使われてるかのロギングはもう少し設定が必要そう。


