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に含まれる予定の機能になります。現時点では、まだ、リリースしていないので、今後のテストで変更される可能性もあります。