概要
OpenAIは、GPT-4をはじめとする高性能な大規模言語モデル(LLM)を提供するクラウドサービスです。 Fess ではOpenAI APIを使用してAI検索モード機能を実現できます。
OpenAIを使用することで、最先端のAIモデルによる高品質な回答生成が可能になります。
主な特徴
高品質な回答: 最先端のGPTモデルによる高精度な回答生成
スケーラビリティ: クラウドサービスのため、スケーリングが容易
継続的な改善: モデルの定期的なアップデートにより性能が向上
豊富な機能: テキスト生成、要約、翻訳など多様なタスクに対応
対応モデル
OpenAIで利用可能な主なモデル:
gpt-5- 最新の高性能モデルgpt-5-mini- GPT-5の軽量版(コスト効率が良い)gpt-4o- 高性能マルチモーダルモデルgpt-4o-mini- GPT-4oの軽量版o3-mini- 推論特化の軽量モデルo4-mini- 推論特化の次世代軽量モデル
注釈
利用可能なモデルの最新情報は OpenAI Models で確認できます。
注釈
o1/o3/o4系やgpt-5系のモデルを使用する場合、Fess はOpenAI APIの max_completion_tokens パラメータを自動的に使用します。設定の変更は不要です。
前提条件
OpenAIを使用する前に、以下を準備してください。
OpenAIアカウント: https://platform.openai.com/ でアカウントを作成
APIキー: OpenAIダッシュボードでAPIキーを生成
請求設定: APIの使用には課金が発生するため、請求情報を設定
APIキーの取得
OpenAI Platform にログイン
「API keys」セクションに移動
「Create new secret key」をクリック
キー名を入力して作成
表示されたキーを安全に保存(一度しか表示されません)
警告
APIキーは機密情報です。以下の点に注意してください:
バージョン管理システムにコミットしない
ログに出力しない
環境変数や安全な設定ファイルで管理する
プラグインのインストール
Fess 15.6では、OpenAI連携機能はプラグインとして提供されています。使用するには fess-llm-openai プラグインのインストールが必要です。
fess-llm-openai-15.6.0.jar をダウンロードします
Fess のインストールディレクトリにある
app/WEB-INF/plugin/ディレクトリにJARファイルを配置します:cp fess-llm-openai-15.6.0.jar /path/to/fess/app/WEB-INF/plugin/
Fess を再起動します
注釈
プラグインのバージョンは Fess 本体のバージョンと合わせてください。
基本設定
Fess 15.6では、設定項目は用途に応じて以下の2つのファイルに分かれています。
app/WEB-INF/conf/fess_config.properties- Fess 本体の設定およびLLMプロバイダー固有の設定system.properties/ 管理画面(管理画面 > システム > 全般) -rag.llm.nameの設定のみ
最小構成
``system.properties``(管理画面 > システム > 全般 でも設定可能):
# LLMプロバイダーをOpenAIに設定
rag.llm.name=openai
app/WEB-INF/conf/fess_config.properties:
# AI検索モード機能を有効にする
rag.chat.enabled=true
# OpenAI APIキー
rag.llm.openai.api.key=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 使用するモデル
rag.llm.openai.model=gpt-5-mini
推奨構成(本番環境)
``system.properties``(管理画面 > システム > 全般 でも設定可能):
# LLMプロバイダー設定
rag.llm.name=openai
app/WEB-INF/conf/fess_config.properties:
# AI検索モード機能を有効にする
rag.chat.enabled=true
# OpenAI APIキー
rag.llm.openai.api.key=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# モデル設定(高性能モデルを使用)
rag.llm.openai.model=gpt-4o
# APIエンドポイント(通常は変更不要)
rag.llm.openai.api.url=https://api.openai.com/v1
# タイムアウト設定
rag.llm.openai.timeout=120000
# 同時リクエスト数制限
rag.llm.openai.max.concurrent.requests=5
設定項目
OpenAIクライアントで使用可能なすべての設定項目です。 rag.llm.name 以外はすべて fess_config.properties に設定します。
| プロパティ | 説明 | デフォルト | 設定場所 |
|---|---|---|---|
rag.llm.name | LLMプロバイダー名(openai を指定) | ollama | system.properties |
rag.llm.openai.api.key | OpenAI APIキー | (必須) | fess_config.properties |
rag.llm.openai.model | 使用するモデル名 | gpt-5-mini | fess_config.properties |
rag.llm.openai.api.url | APIのベースURL | https://api.openai.com/v1 | fess_config.properties |
rag.llm.openai.timeout | リクエストのタイムアウト時間(ミリ秒) | 120000 | fess_config.properties |
rag.llm.openai.availability.check.interval | 可用性チェック間隔(秒) | 60 | fess_config.properties |
rag.llm.openai.max.concurrent.requests | 最大同時リクエスト数 | 5 | fess_config.properties |
rag.llm.openai.chat.evaluation.max.relevant.docs | 評価時の最大関連ドキュメント数 | 3 | fess_config.properties |
rag.llm.openai.concurrency.wait.timeout | 同時リクエスト待機タイムアウト(ミリ秒) | 30000 | fess_config.properties |
rag.llm.openai.reasoning.token.multiplier | 推論モデル使用時のmax_tokens倍率 | 4 | fess_config.properties |
rag.llm.openai.history.max.chars | 会話履歴の最大文字数 | 8000 | fess_config.properties |
rag.llm.openai.intent.history.max.messages | 意図判定時の最大履歴メッセージ数 | 8 | fess_config.properties |
rag.llm.openai.intent.history.max.chars | 意図判定時の最大履歴文字数 | 4000 | fess_config.properties |
rag.llm.openai.history.assistant.max.chars | アシスタントメッセージの最大文字数 | 800 | fess_config.properties |
rag.llm.openai.history.assistant.summary.max.chars | アシスタント要約の最大文字数 | 800 | fess_config.properties |
rag.llm.openai.chat.evaluation.description.max.chars | 評価時のドキュメント説明最大文字数 | 500 | fess_config.properties |
rag.chat.enabled | AI検索モード機能の有効化 | false | fess_config.properties |
プロンプトタイプ別設定
Fess では、プロンプトの種類ごとに個別のパラメータを設定できます。設定は fess_config.properties で行います。
設定パターン
プロンプトタイプ別の設定は以下のパターンで指定します:
rag.llm.openai.{promptType}.temperature- 生成のランダム性(0.0〜2.0)。推論モデル(o1/o3/o4/gpt-5系)では無視されますrag.llm.openai.{promptType}.max.tokens- 最大トークン数rag.llm.openai.{promptType}.context.max.chars- コンテキストの最大文字数(デフォルト: answer/summaryは16000、その他は10000)
プロンプトタイプ
利用可能なプロンプトタイプ:
| プロンプトタイプ | 説明 |
|---|---|
intent | ユーザーの意図を判定するプロンプト |
evaluation | 検索結果の関連性を評価するプロンプト |
unclear | 不明確なクエリに対する応答プロンプト |
noresults | 検索結果がない場合の応答プロンプト |
docnotfound | ドキュメントが見つからない場合の応答プロンプト |
answer | 回答を生成するプロンプト |
summary | 要約を生成するプロンプト |
faq | FAQを生成するプロンプト |
direct | 直接応答するプロンプト |
queryregeneration | 検索クエリを再生成するプロンプト |
デフォルト値
各プロンプトタイプのデフォルト値は以下の通りです。推論モデル(o1/o3/o4/gpt-5系)ではtemperatureの設定は無視されます。
| プロンプトタイプ | Temperature | Max Tokens | 備考 |
|---|---|---|---|
intent | 0.1 | 256 | 意図判定は決定的に |
evaluation | 0.1 | 256 | 関連性評価は決定的に |
unclear | 0.7 | 512 | |
noresults | 0.7 | 512 | |
docnotfound | 0.7 | 256 | |
direct | 0.7 | 1024 | |
faq | 0.7 | 1024 | |
answer | 0.5 | 2048 | メイン回答生成 |
summary | 0.3 | 2048 | 要約生成 |
queryregeneration | 0.3 | 256 | クエリ再生成 |
設定例
# answerプロンプトの温度設定
rag.llm.openai.answer.temperature=0.7
# answerプロンプトの最大トークン数
rag.llm.openai.answer.max.tokens=2048
# summaryプロンプトの温度設定(要約は低めに設定)
rag.llm.openai.summary.temperature=0.3
# intentプロンプトの温度設定(意図判定は低めに設定)
rag.llm.openai.intent.temperature=0.1
推論モデル対応
o1/o3/o4系やgpt-5系の推論モデルを使用する場合、Fess は自動的にOpenAI APIの max_completion_tokens パラメータを max_tokens の代わりに使用します。追加の設定変更は不要です。
注釈
推論モデル(o1/o3/o4/gpt-5系)では temperature の設定は無視され、固定値(1)が使用されます。また、推論モデル使用時はデフォルトの max_tokens が ``reasoning.token.multiplier``(デフォルト: 4)倍に増加されます。
推論モデル向け追加パラメータ
推論モデルを使用する場合、以下の追加パラメータを fess_config.properties で設定できます:
| プロパティ | 説明 | デフォルト |
|---|---|---|
rag.llm.openai.{promptType}.reasoning.effort | o系モデルの推論effort設定(low、medium、high) | ``low``(intent/evaluation/docnotfound/unclear/noresults/queryregeneration)、未設定(その他) |
rag.llm.openai.{promptType}.top.p | トークン選択の確率閾値(0.0〜1.0) | (未設定) |
rag.llm.openai.{promptType}.frequency.penalty | 頻度ペナルティ(-2.0〜2.0) | (未設定) |
rag.llm.openai.{promptType}.presence.penalty | 存在ペナルティ(-2.0〜2.0) | (未設定) |
{promptType} には intent、evaluation、answer、summary 等のプロンプトタイプが入ります。
設定例
# o3-miniで回答生成時の推論effortをhighに設定
rag.llm.openai.model=o3-mini
rag.llm.openai.answer.reasoning.effort=high
# gpt-5で回答生成時のtop_pとペナルティを設定
rag.llm.openai.model=gpt-5
rag.llm.openai.answer.top.p=0.9
rag.llm.openai.answer.frequency.penalty=0.5
環境変数での設定
セキュリティ上の理由から、APIキーを環境変数で設定することを推奨します。
Docker環境
docker run -e RAG_LLM_OPENAI_API_KEY=sk-xxx... codelibs/fess:15.6.0
docker-compose.yml
services:
fess:
image: codelibs/fess:15.6.0
environment:
- RAG_CHAT_ENABLED=true
- RAG_LLM_NAME=openai
- RAG_LLM_OPENAI_API_KEY=${OPENAI_API_KEY}
- RAG_LLM_OPENAI_MODEL=gpt-5-mini
systemd環境
/etc/systemd/system/fess.service.d/override.conf:
[Service]
Environment="RAG_LLM_OPENAI_API_KEY=sk-xxx..."
Azure OpenAIの使用
Microsoft Azure経由でOpenAIモデルを使用する場合は、APIエンドポイントを変更します。
# Azure OpenAIエンドポイント
rag.llm.openai.api.url=https://your-resource.openai.azure.com/openai/deployments/your-deployment
# Azure APIキー
rag.llm.openai.api.key=your-azure-api-key
# デプロイ名(モデル名として指定)
rag.llm.openai.model=your-deployment-name
注釈
Azure OpenAIを使用する場合、APIのリクエスト形式が若干異なる場合があります。 詳細はAzure OpenAIのドキュメントを参照してください。
モデルの選択ガイド
使用目的に応じたモデル選択の指針です。
| モデル | コスト | 品質 | 用途 |
|---|---|---|---|
gpt-5-mini | 中 | 高 | バランスの取れた用途(推奨) |
gpt-4o-mini | 低〜中 | 高 | コスト重視の用途 |
gpt-5 | 高 | 最高 | 複雑な推論、高品質が必要な場合 |
gpt-4o | 中〜高 | 最高 | マルチモーダル対応が必要な場合 |
o3-mini / o4-mini | 中 | 最高 | 数学・コーディングなどの推論タスク |
コストの目安
OpenAI APIは使用量に基づいて課金されます。
注釈
最新の価格は OpenAI Pricing で確認してください。
同時リクエスト制御
Fess では、OpenAI APIへの同時リクエスト数を fess_config.properties の rag.llm.openai.max.concurrent.requests で制御できます。デフォルト値は 5 です。
# 最大同時リクエスト数を設定
rag.llm.openai.max.concurrent.requests=5
この設定により、OpenAI APIへの過剰なリクエストを防止し、レート制限エラーを回避できます。
OpenAIのTier別制限
OpenAIアカウントのTierに応じてAPI側の制限が異なります:
Free: 3 RPM(リクエスト/分)
Tier 1: 500 RPM
Tier 2: 5,000 RPM
Tier 3+: さらに高い制限
OpenAIアカウントのTierに応じて rag.llm.openai.max.concurrent.requests を適切に調整してください。
トラブルシューティング
認証エラー
症状: 「401 Unauthorized」エラーが発生する
確認事項:
APIキーが正しく設定されているか確認
APIキーが有効か確認(OpenAIダッシュボードで確認)
APIキーに必要な権限があるか確認
レート制限エラー
症状: 「429 Too Many Requests」エラーが発生する
解決方法:
rag.llm.openai.max.concurrent.requestsの値を小さくする:rag.llm.openai.max.concurrent.requests=3
OpenAIアカウントのTierをアップグレード
クォータ超過
症状: 「You exceeded your current quota」エラー
解決方法:
OpenAIダッシュボードで使用量を確認
請求設定を確認し、必要に応じて上限を引き上げ
タイムアウト
症状: リクエストがタイムアウトする
解決方法:
タイムアウト時間を延長:
rag.llm.openai.timeout=180000
より高速なモデル(gpt-5-mini等)を検討
デバッグ設定
問題を調査する際は、Fess のログレベルを調整してOpenAI関連の詳細なログを出力できます。
app/WEB-INF/classes/log4j2.xml:
<Logger name="org.codelibs.fess.llm.openai" level="DEBUG"/>
セキュリティに関する注意
OpenAI APIを使用する際は、以下のセキュリティ事項に注意してください。
データプライバシー: 検索結果の内容がOpenAIのサーバーに送信されます
APIキーの管理: キーの漏洩は不正利用につながります
コンプライアンス: 機密データを含む場合は、組織のポリシーを確認
使用ポリシー: OpenAIの利用規約を遵守
参考情報
LLM統合の概要 - LLM統合の概要
AI検索モード機能の設定 - AI検索モード機能の詳細