FessでAmazon BedrockをRAGと埋め込みに利用する設定

Fess 15.9向けのドキュメントに、Amazon BedrockのLLM・埋め込みプロバイダーの設定が追加されました。fess-llm-bedrockを使い、チャットはConverse API、文書チャンクの埋め込みはInvokeModel APIで実行します。

前提とインストール

プラグインはFess 15.9以降、Java 21以降を対象とします。利用リージョンでモデルへアクセスできるAWSアカウントと、モデル呼び出し用の認証情報が必要です。Fessのバージョンに合うプラグインを配置して再起動します。現時点の最新リリース15.8.0へそのまま適用する手順ではありません。

チャットの設定

管理画面の「システム」>「全般」、またはsystem.propertiesでプロバイダーを選びます。

rag.llm.name=bedrock

fess_config.propertiesではチャットを有効にし、リージョンとモデルを設定して再起動します。

rag.chat.enabled=true
rag.llm.bedrock.region=us-east-1
rag.llm.bedrock.model=us.amazon.nova-2-lite-v1:0

チャット自体の初期値は無効です。Bedrock側のリージョン初期値はus-east-1、モデルは上記のNova 2 Liteの米国クロスリージョン推論プロファイルです。モデルとリージョンは実際に利用できる組み合わせへ変更してください。リージョンはこの設定から取得し、AWS_REGIONは参照しません。

APIキーの初期値は空で、その場合はAWS認証情報を解決しSigV4署名を使います。IAMロールかFess実行ユーザーの共有認証情報を使う構成を検討できます。必要な権限はbedrock:InvokeModelとbedrock:InvokeModelWithResponseStreamです。推論プロファイルを使う場合は、ルーティング先のモデルにも権限が必要になります。IAM Identity CenterのSSOプロファイルには対応しません。

文書チャンクの埋め込み

こちらはsystem.propertiesに設定します。チャットの設定ファイルとは異なり、fess_config.propertiesへ書いても読み込まれません。

content_chunker.enabled=true
content_chunker.embedding.name=bedrock
content_chunker.embedding.dimension=1024
content_chunker.embedding.bedrock.region=us-east-1
content_chunker.embedding.bedrock.model=amazon.titan-embed-text-v2:0

Bedrock埋め込みのモデル初期値はTitan Text Embeddings V2です。Titanは256・512・1024次元を利用できます。Cohere Embed v3は1024次元、v4は256・512・1024・1536次元で、モデルが返せる次元数と設定を合わせる必要があります。埋め込みは子JVMで実行するため、WebプロセスだけのJVM認証情報では届かない場合があります。

制限と運用上の注意

Cohere v3は1テキスト2048文字までで、プラグインは自動短縮・分割しません。ストリーミングは開始前のリクエストを再試行できますが、回答が流れ始めた後の失敗は再試行しません。

APIキーはチャット用ならfess_config.properties、埋め込み用ならsystem.propertiesの専用キーで指定すると管理画面のシステム情報でマスクします。環境変数やJVMシステムプロパティ経由のキーはそこでマスクされないため、長期キーをその方法で渡す運用は避けてください。fess-storage-s3と併用する場合は、AWS SDKの版を合わせるためプラグインも一緒に更新します。

利用できるバージョン

Fess 15.9.0に含まれる予定の機能になります。現時点では、まだ、リリースしていないので、今後のテストで変更される可能性もあります。

関連PR

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です