メインコンテンツまでスキップ

ウェブ検索

Libre WebUI は、Libre WebUI ベンダーアカウントや商用検索 API との連携を必要とせずにウェブを検索し、その結果をモデルへ渡せます。検索は、管理者が選んだ SearXNG インスタンスを通じて実行されます。その後 SearXNG が、集約対象の公開検索エンジンへクエリを送信します。各検索エンジンは SearXNG デプロイからのリクエストを観測でき、それぞれのログ、保持、ネットワークポリシーを適用できます。

Libre WebUI のすべてのデュアルユース機能と同様に、初期状態ではオフです。管理者が一度有効にするまで、検索 UI はどこにも表示されません。

仕組み

この機能には 4 つの要素があり、前の要素が存在するまで次の要素は表示されません。

  1. バックエンドから到達可能な SearXNG インスタンス。同梱のプライベートデプロイ構成には 1 つ含まれています。JSON API を有効にした任意のインスタンスも利用できます。
  2. 管理者設定 — 設定 > 接続 > 検索(このタブは管理者専用)で SearXNG の URL を指定し、ウェブ検索を有効化をオンにします。接続テストを使い、実際のクエリで接続を確認します。
  3. 利用できるユーザー — 設定 → ユーザー管理にある ウェブ検索カードで、Work のアクセス権やモデルダウンロードの設定と並んでいます。オフ(デフォルト)の場合、有効化済みでも検索は管理者専用です。オンにすると、すべての有効なユーザーが使えます。バックエンドはリクエストごとにこの権限を検証します。
  4. 許可されたユーザーに表示される利用時のコントロール:
    • チャット検索: 入力欄の地球アイコンをオンにすると、セッションモデルが、必要に応じて鮮度やカテゴリのヒントも含めた、対象を絞ったキーワードクエリを計画します。計画に失敗した場合、Libre は元のメッセージへフォールバックします。検索結果はコンテキストとしてプロンプトへ入り、返答には番号付きの情報源チップが表示されます。ツール呼び出しに対応していないモデルでも利用できます。
    • チャットツール: ツールの使用を許可された対応モデルは、そのターンでツールが有効な場合、組み込みの web_search ツールを呼び出せます。
    • Work: ネットワークアクセスを有効にしたタスクには、エージェントループ内で web_search ツールが与えられます。他のツールと同じく、呼び出すタイミングはモデルが判断します。オフラインタスク(ネットワーク無効)には、このツールは表示されません。検索リクエスト自体がサンドボックスではなくバックエンドから外部へ送られる場合も同様です。

検索に失敗してもターン全体は失敗しません。モデルは検索コンテキストなしで回答し、実行を続けます。

同梱構成でのセットアップ

deploy/private/docker-compose.yml には、すでに searxng サービスが含まれています。ホストには公開されない内部専用の堅牢化されたサービスで、SEARXNG_URL=http://searxng:8080 を通じてアプリへ接続済みです。

  1. .env にシークレットを追加します。

    SEARXNG_SECRET=any-long-random-value
  2. docker compose up -d を実行します。

  3. 管理者として設定 > 接続 > 検索を開きます。URL は環境変数から入力済みです。有効にしてから、接続テストを実行します。

独自の SearXNG を使う

到達可能な SearXNG インスタンスならどれでも利用できます。ただし、settings.ymlJSON 形式を有効にする必要があります(ほとんどの公開インスタンスでは無効です)。

search:
formats:
- html
- json

そのベース URL(http://127.0.0.1:8888https://search.example.com など)を、設定 > 接続 > 検索に貼り付けます。

環境変数

変数デフォルト用途
SEARXNG_URL未設定検索設定の URL を事前入力します。有効化は引き続き管理者が行います

設定自体(有効状態と URL)はデータベースに永続化されるため、再起動後も維持され、再デプロイせずすぐに反映されます。

プライバシーと範囲

  • 検索はサーバー側で実行されます。ブラウザが SearXNG へ直接接続することはありません。Libre WebUI 自体には検索プロバイダーのアカウントは不要ですが、独自の SearXNG デプロイでは、検索エンジン用の資格情報を設定する場合があります。
  • 検索語は Libre WebUI プロセスを出て SearXNG へ送られ、そこから選択された上流の検索エンジンへ渡ります。ゲートウェイをセルフホストすればその経路を制御できますが、それだけで公開ウェブ検索がローカルまたは匿名になるわけではありません。
  • モデルのコンテキストへ入る前に、検索結果のテキストには上限が適用されます(結果 1 件あたり 500 文字)。管理者は結果数を 1~100 から選択でき、デフォルトは 6 です。http(s) の結果 URL だけが保持されます。
  • 同梱インスタンスには、構成内の内部ネットワークからだけ到達できます。このためレート制限は無効です。外部へ公開しないでください。

トラブルシューティング

入力欄に地球アイコンがない/Work に web_search ツールがない。 検索が有効になっていない(設定 > 接続 > 検索)か、そのアカウントに権限がありません。一般ユーザーには、設定 → ユーザー管理でウェブ検索の切り替えをオンにする必要があります。

接続テストが HTTP 403 で失敗する。 インスタンスで JSON 形式が許可されていません。settings.ymlsearch.formatsjson を追加し(上記参照)、再起動します。

接続テストからサービスに到達できない。 URL はブラウザではなく、_バックエンドから_到達できる必要があります。同梱構成内では http://searxng:8080 です。コンテナ内の localhost は、そのコンテナ自身を指します。

返答が検索結果を無視する。 何を使うかは、引き続きモデルが判断します。小さなモデルは、質問が具体的なほど挿入されたコンテキストに従いやすくなります。返答の下にある情報源には、実際に取得された内容が常に表示されます。