Dockerを用いた社内ファイル検索システムへのAI機能追加について

お世話になっております。10年に渡りFESSを活用させていただいております。

さて、FESS15.6.0でAIモードにならなく苦労しております。
ご面倒でなければご一読願います。

環境情報
項目 内容
FESSバージョン 15.6.0
OpenSearchバージョン fess-opensearch:3.6.0
デプロイ方式 Docker Compose
LLMプラグイン fess-llm-gemini-15.6.0.jar
OS Windows 11(Dockerコンテナ:Linux)
LLMプロバイダー Google Gemini(gemini-2.0-flash)

1.発生している事象
FESS 15.6.0にfess-llm-gemini-15.6.0.jarプラグインを導入し、RAG Chat機能の有効化を試みましたが、検索画面にAIモードボタンが表示されません。

2-1. 具体的な症状
・ 検索結果画面にAIチャットボタン(AIモード切替)が表示されない
http://localhost:8080/chat へのアクセスがトップページにリダイレクトされる
・ header.jspの ${chatEnabled} が false のまま
・ 管理画面「全般の設定」にragChatEnabledのチェックボックスが存在しない
・ 「パラメータを更新しました」は表示されるが、ragChatEnabled がPOSTデータに含まれない

3.設定内容
3-1. compose.yaml(関連部分)
environment:

  • RAG_CHAT_ENABLED=true
  • RAG_LLM_TYPE=gemini
  • RAG_LLM_GEMINI_API_KEY=(設定済み)
  • RAG_LLM_GEMINI_MODEL=gemini-2.0-flash
    volumes:
  • ./fess_plugins/fess-llm-gemini-15.6.0.jar:/usr/share/fess/app/WEB-INF/lib/fess-llm-gemini-15.6.0.jar
  • ./fess_llm++.xml:/usr/share/fess/app/WEB-INF/classes/fess_llm++.xml
  • ./fess_llm.xml:/usr/share/fess/app/WEB-INF/classes/fess_llm.xml

3-2. fess_config.properties(関連部分)
rag.chat.enabled=true
rag.llm.type=gemini
rag.llm.name=gemini
rag.llm.gemini.api.key=(設定済み)
rag.llm.gemini.model=gemini-2.0-flash
rag.llm.gemini.api.url=https://generativelanguage.googleapis.com/v1beta

4.調査結果
4-1. 正常に動作していること
・ fess-llm-gemini-15.6.0.jarのGeminiLlmClient.classは正常にロードされている
・ fess_llm++.xmlはコンテナ内に正しくマウントされている
・ Gemini APIへの接続・認証は正常(curl確認済み)
・ 環境変数RAG_CHAT_ENABLED=trueはコンテナに正しく渡されている
・ ChatApiManagerの登録はログで確認済み

4-2. 問題のある動作
・ 起動ログに「[LLM] LlmClient not found. componentName=ollamaLlmClient」が繰り返し出力される
・ OpenSearchのfess_config.*インデックスにRAG関連設定が一切保存されない
・ 管理画面「全般の設定」のPOSTデータにragChatEnabledパラメータが含まれない(フォームにフィールドが存在しない)
・ FessSearchAction.classがchatEnabledをfalseとして処理している

4-3. ログ抜粋
INFO - Registering ChatApiManager
WARN - [LLM] LlmClient not found. componentName=ollamaLlmClient

5.お問い合わせ内容

1.管理画面「全般の設定」にragChatEnabledのチェックボックスが表示されないのは仕様でしょうか。FESS 15.6.0でRAG Chat機能を有効化するための正しい手順をご教示ください。
2.「[LLM] LlmClient not found. componentName=ollamaLlmClient」の警告が継続的に出力される原因と解消方法をご教示ください。RAG_LLM_TYPE=geminiを設定しているにもかかわらず、ollamaを参照しているように見えます。
3.fess_config.propertiesおよび環境変数でrag.chat.enabled=trueを設定しているにもかかわらず、chatEnabledがfalseのままとなる原因をご教示ください。
4.fess-llm-gemini-15.6.0プラグインを使用したRAG Chat機能の動作確認済み構成例(docker-compose.yaml、fess_config.properties等)があればご共有ください。

本件はDockerを用いた社内ファイル検索システムへのAI機能追加を目的として検証しております。GeminiのAPIキーおよびAPI接続は正常に動作しております。社内ネットワーク環境からインターネットに出る際はProxyサーバー経由となります。

すいません…、ドキュメントが古い内容だったので更新しました。compose-gemini.yamlを置いたので、APIキーを環境変数で渡せば利用できると思います。
検索対象にもよりますが、 -Dfess.config.rag.llm.gemini.answer.thinking.budget=0 -Dfess.config.rag.llm.gemini.answer.max.tokens=8192 みたいなトークン周りの話の調整が必要になるかもしれません。この辺のいい感じの値をまだ見つけられていないので、調整はしていこうとは考えています。

ご返信をありがとうございます。ご提供いただいたcompose-gemini.yamlに書かれた内容はすでに試しています。現状はまだAIモードになりません。

claude aiと対話しながら設定しています。以下の回答を最終的に返しています。

AbstractLlmClient のHTTPクライアントがプロキシを使わない設計になっており、かつXMLやプロパティからプロキシを設定する方法がありません。よって、Gemini AIモード(geminiLlmClient が登録されない)にならない模様です。

現状まとめ
問題状況
checkAvailabilityNow() がプロキシを使わずGemini APIに接続 :cross_mark:
失敗プロキシ設定をXML/プロパティから注入 :cross_mark:
セッターがないJavaシステムプロパティでプロキシ指定 :cross_mark: useSystemProperties()未使用

プロキシ環境でのLLM設定方法をご教授頂けると幸いです。
企業ユースの場合はプロキシ接続であるケースの方が多いかと思います。

feat(llm): add HTTP proxy support to LLM clients by marevol · Pull Request #3128 · codelibs/fess · GitHub で対応予定です。

ありがとうございます。当方ではFESSのクロール結果をOpenSearch(検索エンジン)とGemini API(生成AI)を組み合わせたRAGシステムに切り替えました。

  1. Backend: Flask (Python)
  2. Frontend: HTML/JavaScript で構築して検索AIシステムが動くようになりました。