概要
Ollamaは、ローカル環境で大規模言語モデル(LLM)を実行するためのオープンソースプラットフォームです。 Fess のOllama連携機能はプラグイン fess-llm-ollama として提供されており、プライベート環境での利用に適しています。
Ollamaを使用することで、データを外部に送信せずにAI検索モード機能を利用できます。
主な特徴
ローカル実行: データは外部に送信されず、プライバシーを確保
多様なモデル: Llama、Mistral、Gemma、CodeLlamaなど多数のモデルに対応
コスト効率: APIコストがかからない(ハードウェアコストのみ)
カスタマイズ: 独自にファインチューニングしたモデルも利用可能
対応モデル
Ollamaで利用可能な主なモデル:
llama3.3:70b- Meta社のLlama 3.3(70Bパラメーター)gemma4:e4b- Google社のGemma 4(E4Bパラメーター、デフォルト)mistral:7b- Mistral AI社のMistral(7Bパラメーター)codellama:13b- Meta社のCode Llama(13Bパラメーター)phi3:3.8b- Microsoft社のPhi-3(3.8Bパラメーター)
注釈
利用可能なモデルの最新リストは Ollama Library で確認できます。
前提条件
Ollamaを使用する前に、以下を確認してください。
Ollamaのインストール: https://ollama.com/ からダウンロードしてインストール
モデルのダウンロード: 使用するモデルをOllamaにダウンロード
Ollamaサーバーの起動: Ollamaが動作していることを確認
Ollamaのインストール
Linux/macOS
Windows
公式サイトからインストーラーをダウンロードして実行します。
Docker
モデルのダウンロード
プラグインのインストール
Ollama連携機能はプラグインとして提供されます。 Ollamaを利用するには fess-llm-ollama プラグインのインストールが必要です。
fess-llm-ollama-15.7.0.jar をダウンロードします。
Fess のインストールディレクトリ内の
app/WEB-INF/plugin/ディレクトリに配置します。
Fess を再起動します。
注釈
プラグインのバージョンは Fess のバージョンと合わせてください。
基本設定
LLM関連の設定は複数の設定ファイルに分かれています。
最小構成
``system.properties``(管理画面 > システム > 全般 でも設定可能):
app/WEB-INF/conf/fess_config.properties:
注釈
LLMプロバイダーの設定は、管理画面(管理画面 > システム > 全般)から rag.llm.name を設定することもできます。
推奨構成(本番環境)
``system.properties``(管理画面 > システム > 全般 でも設定可能):
app/WEB-INF/conf/fess_config.properties:
設定項目
Ollamaクライアントで使用可能なすべての設定項目です。 rag.llm.name 以外はすべて fess_config.properties に設定します。
| プロパティ | 説明 | デフォルト |
|---|---|---|
rag.llm.ollama.api.url | OllamaサーバーのベースURL | http://localhost:11434 |
rag.llm.ollama.model | 使用するモデル名(Ollamaにダウンロード済みのモデル) | gemma4:e4b |
rag.llm.ollama.timeout | リクエストのタイムアウト時間(ミリ秒) | 60000 |
rag.llm.ollama.availability.check.interval | 可用性チェック間隔(秒)。 0 以下を指定すると定期的な可用性チェックを無効化します | 60 |
rag.llm.ollama.max.concurrent.requests | 最大同時リクエスト数 | 5 |
rag.llm.ollama.chat.evaluation.max.relevant.docs | 評価最大関連ドキュメント数 | 3 |
rag.llm.ollama.concurrency.wait.timeout | 同時実行制御のパーミット取得待ちタイムアウト(ミリ秒) | 30000 |
rag.llm.ollama.connect.timeout | TCP接続タイムアウト(ミリ秒)。 rag.llm.ollama.timeout とは別に指定可能 | 5000 |
rag.llm.ollama.retry.max | HTTPリトライの最大試行回数( 429 および 5xx 系エラー時) | 3 |
rag.llm.ollama.retry.base.delay.ms | 指数バックオフの基準遅延時間(ミリ秒) | 2000 |
詳細設定
履歴やコンテキストサイズに関する詳細な設定項目です。
| プロパティ | 説明 | デフォルト |
|---|---|---|
rag.llm.ollama.chat.evaluation.description.max.chars | 評価時の説明の最大文字数 | 500 |
rag.llm.ollama.history.max.chars | 会話履歴の最大文字数 | 4000 |
rag.llm.ollama.intent.history.max.messages | 意図判定時の履歴最大メッセージ数 | 6 |
rag.llm.ollama.intent.history.max.chars | 意図判定時の履歴最大文字数 | 3000 |
rag.llm.ollama.history.assistant.max.chars | アシスタント応答の履歴最大文字数 | 500 |
rag.llm.ollama.history.assistant.summary.max.chars | アシスタント要約の履歴最大文字数 | 500 |
同時実行制御
rag.llm.ollama.max.concurrent.requests を使用して、Ollamaへの同時リクエスト数を制御できます。 デフォルトは5です。Ollamaサーバーのリソースに応じて調整してください。 同時リクエスト数が多すぎるとOllamaサーバーに負荷がかかり、応答速度が低下する場合があります。
プロンプトタイプ別設定
Fess では、プロンプトタイプごとにLLMのパラメーターをカスタマイズできます。 設定は fess_config.properties に記述します。
プロンプトタイプ別に以下のパラメーターを設定できます:
rag.llm.ollama.{promptType}.temperature- 生成時のtemperaturerag.llm.ollama.{promptType}.max.tokens- 最大トークン数(Ollama APIのnum_predictにマッピングされます)rag.llm.ollama.{promptType}.context.max.chars- コンテキストの最大文字数rag.llm.ollama.{promptType}.thinking.budget- 思考バジェット(ブーリアン形式の思考制御。詳細は「思考モデル対応」を参照)rag.llm.ollama.{promptType}.thinking.level- 思考レベル(high/medium/lowの文字列形式。詳細は「思考モデル対応」を参照)rag.llm.ollama.{promptType}.top.p- Top-Pサンプリングの値rag.llm.ollama.{promptType}.top.k- Top-Kサンプリングの値rag.llm.ollama.{promptType}.num.ctx- コンテキストウィンドウサイズ
各パラメーターは次の順序で解決されます: rag.llm.ollama.{promptType}.<param> (プロンプトタイプ別の設定)→ rag.llm.ollama.default.<param> (全プロンプトタイプ共通のフォールバック)→ プロンプトタイプごとのハードコードされた既定値。リクエストに明示的に指定された値は常に優先されます。
利用可能なプロンプトタイプ:
| プロンプトタイプ | 説明 |
|---|---|
intent | ユーザーの意図を判定するプロンプト |
evaluation | 検索結果の評価プロンプト |
unclear | 不明確なクエリへの応答プロンプト |
noresults | 検索結果なしの場合のプロンプト |
docnotfound | ドキュメントが見つからない場合のプロンプト |
answer | 回答生成プロンプト |
summary | 要約生成プロンプト |
faq | FAQ生成プロンプト |
direct | 直接応答プロンプト |
queryregeneration | クエリ再生成プロンプト |
各プロンプトタイプには、設定が省略された場合に適用されるハードコードされた既定値があります。
| プロンプトタイプ | temperature | max.tokens | thinking.budget | context.max.chars |
|---|---|---|---|---|
intent | 0.1 | 256 | 0 | 6000 |
evaluation | 0.1 | 512 | 0 | 6000 |
unclear | 0.7 | 512 | 0 | 6000 |
noresults | 0.7 | 512 | 0 | 6000 |
docnotfound | 0.7 | 512 | 0 | 6000 |
answer | 0.5 | 8192 | (未設定) | 10000 |
summary | 0.3 | 8192 | (未設定) | 10000 |
faq | 0.7 | 4096 | (未設定) | 6000 |
direct | 0.7 | 4096 | (未設定) | 6000 |
queryregeneration | 0.3 | 256 | 0 | 6000 |
設定例:
Ollamaモデルオプション
Ollamaのモデルパラメーターを fess_config.properties で設定できます。 rag.llm.ollama.default.<param> の形式で指定すると、すべてのプロンプトタイプ共通のフォールバック値として使用されます。 default によるフォールバックは top.p / top.k / num.ctx だけでなく、 temperature / max.tokens / thinking.budget / thinking.level にも適用されます。
| プロパティ | 説明 | デフォルト |
|---|---|---|
rag.llm.ollama.default.top.p | Top-Pサンプリングの値(0.0〜1.0)。プロンプトタイプごとに rag.llm.ollama.{promptType}.top.p で上書き可能 | (未設定) |
rag.llm.ollama.default.top.k | Top-Kサンプリングの値。プロンプトタイプごとに rag.llm.ollama.{promptType}.top.k で上書き可能 | (未設定) |
rag.llm.ollama.default.num.ctx | コンテキストウィンドウサイズ。プロンプトタイプごとに rag.llm.ollama.{promptType}.num.ctx で上書き可能 | (未設定) |
rag.llm.ollama.default.temperature | 生成時のtemperatureのフォールバック値。プロンプトタイプごとに rag.llm.ollama.{promptType}.temperature で上書き可能 | (未設定) |
rag.llm.ollama.default.max.tokens | 最大トークン数のフォールバック値。プロンプトタイプごとに rag.llm.ollama.{promptType}.max.tokens で上書き可能 | (未設定) |
rag.llm.ollama.default.thinking.budget | 思考バジェットのフォールバック値。プロンプトタイプごとに rag.llm.ollama.{promptType}.thinking.budget で上書き可能 | (未設定) |
rag.llm.ollama.default.thinking.level | 思考レベル( high / medium / low )のフォールバック値。プロンプトタイプごとに rag.llm.ollama.{promptType}.thinking.level で上書き可能 | (未設定) |
rag.llm.ollama.options.* | OllamaのAPIに直接渡されるグローバルオプション。サフィックスがオプション名として使用される(例: rag.llm.ollama.options.repeat_penalty=1.1)。値は自動的にInteger、Double、Boolean、Stringに変換される | (未設定) |
設定例:
思考モデル対応
gemma4やqwen3などの思考モデル(thinking model)を使用する場合、 Fess は思考バジェット(thinking budget)の設定をサポートしています。
思考バジェットはプロンプトタイプごとに fess_config.properties で設定します:
思考バジェットを設定することで、モデルが回答を生成する前に「考える」ステップに割り当てるトークン数を制御できます。
注釈
Ollamaでは、思考バジェットはブーリアンフラグに変換されます(値が0より大きい場合は think: true 、0の場合は think: false )。トークン数による細かい制御はOllama APIの制約により利用できません。
思考レベル(thinking level)
gpt-ossなどの一部のモデルは、ブーリアン形式の think フラグを無視し、 high / medium / low の文字列形式による思考レベルの指定を必要とします。 このようなモデルでは rag.llm.ollama.{promptType}.thinking.level を使用します。
thinking.level に設定できる値は high / medium / low のいずれかです(大文字・小文字は区別されません)。無効な値を指定した場合は無視され、警告ログが出力されます。
注釈
thinking.level (文字列形式)と thinking.budget (ブーリアン形式)の両方が設定されている場合、 thinking.level が優先されます。GPT-OSS系のモデルでは thinking.level を、それ以外の思考モデルでは thinking.budget を使用してください。
ネットワーク構成
Dockerでの構成
Fess 公式の docker-fess には Ollama 用のオーバーレイ compose-ollama.yaml が同梱されています。最小手順は次の通りです。
compose-ollama.yaml は NVIDIA GPU を利用する構成になっています(NVIDIA Container Toolkit が必要です)。内容は次の通りです。
ポイント:
FESS_PLUGINS=fess-llm-ollama:15.7.0で起動スクリプトがプラグイン JAR を自動取得してapp/WEB-INF/plugin/に配置します(バージョンはお使いの Fess に合わせてください)-Dfess.config.rag.chat.enabled=trueで AI検索モードを有効化-Dfess.config.rag.llm.ollama.api.url=...で Ollama サーバーの URL を指定(Docker Composeネットワーク内ではollama01などのサービス名で解決)LLMプロバイダー(
rag.llm.name)のデフォルトはollamaのため、Ollamaのみを使用する場合は明示的な指定は不要です。別のプロバイダーから切り替える場合などは、FESS_JAVA_OPTSに-Dfess.system.rag.llm.name=ollamaを追加するか、起動後に管理画面「システム > 全般」の RAG セクションで設定してくださいdeploy.resources.reservations.devicesのブロックは GPU を利用するための設定です。GPU を使用しない(CPU のみで実行する)場合は、このブロックを削除してください
注釈
RAG_CHAT_ENABLED や RAG_LLM_NAME などの大文字スネークケース環境変数は Fess に直接認識されません。設定値は必ず FESS_JAVA_OPTS 内で -Dfess.config.<key> ( fess_config.properties 系)または -Dfess.system.<key> ( system.properties 系)として渡してください。
リモートOllamaサーバー
OllamaをFessとは別のサーバーで実行する場合:
警告
Ollamaはデフォルトで認証機能を持たないため、外部からアクセス可能にする場合は ネットワークレベルでのセキュリティ対策(ファイアウォール、VPN等)を検討してください。
HTTPプロキシ経由の利用
Ollamaクライアントは Fess 全体のHTTPプロキシ設定を共有します。Ollamaサーバーへの接続にプロキシを経由する必要がある場合(リモートOllamaサーバー利用時など)、 fess_config.properties で以下のプロパティを指定してください。
| プロパティ | 説明 | デフォルト |
|---|---|---|
http.proxy.host | プロキシホスト名(空文字列の場合はプロキシを使用しない) | "" |
http.proxy.port | プロキシポート番号 | 8080 |
http.proxy.username | プロキシ認証のユーザー名(任意。指定するとBasic認証が有効化される) | "" |
http.proxy.password | プロキシ認証のパスワード | "" |
注釈
Ollamaは通常ローカルまたは内部ネットワークで動作するため、プロキシ設定が必要となるのは限定的なケース(社内プロキシ経由でのみ到達できるリモートOllamaサーバーを利用する場合等)に限られます。 この設定はクローラーなど Fess 全体のHTTPアクセスにも影響します。
モデルの選択ガイド
使用目的に応じたモデル選択の指針です。
| モデル | サイズ | 必要VRAM | 用途 |
|---|---|---|---|
phi3:3.8b | 小 | 4GB以上 | 軽量環境、シンプルな質問応答 |
gemma4:e4b | 小〜中 | 8GB以上 | バランスの良い汎用用途、思考モード対応(デフォルト) |
mistral:7b | 中 | 8GB以上 | 高品質な回答が必要な場合 |
llama3.3:70b | 大 | 48GB以上 | 最高品質の回答、複雑な推論 |
GPU対応
OllamaはGPUアクセラレーションをサポートしています。NVIDIAのGPUを使用することで、 推論速度が大幅に向上します。
トラブルシューティング
接続エラー
症状: チャット機能でエラーが発生する、LLMが利用不可と表示される
確認事項:
Ollamaが動作しているか確認:
モデルがダウンロードされているか確認:
ファイアウォールの設定を確認
fess-llm-ollamaプラグインがapp/WEB-INF/plugin/に配置されているか確認
モデルが見つからない
症状: 「Configured model not found」というログが出力される
解決方法:
モデル名が正確か確認(
:latestタグを含める場合がある):必要なモデルをダウンロード:
タイムアウト
症状: リクエストがタイムアウトする
解決方法:
タイムアウト時間を延長:
より小さなモデルを使用するか、GPU環境を検討
デバッグ設定
問題を調査する際は、Fess のログレベルを調整してOllama関連の詳細なログを出力できます。
app/WEB-INF/classes/log4j2.xml:
参考情報
LLM統合の概要 - LLM統合の概要
AI検索モード機能の設定 - AI検索モード機能の詳細