Aller au contenu principal

Recherche web

Libre WebUI peut effectuer des recherches sur le web et transmettre les résultats à vos modèles sans exiger de compte fournisseur Libre WebUI ni d’intégration à une API de recherche commerciale. Les recherches passent par une instance SearXNG choisie par l’administrateur. SearXNG envoie ensuite les requêtes aux moteurs de recherche publics qu’il agrège ; ces moteurs peuvent observer la requête provenant du déploiement SearXNG et appliquer leurs propres politiques de journalisation, de conservation et de réseau.

Comme toutes les fonctions à double usage de Libre WebUI, celle-ci est livrée désactivée. Un administrateur l’active une fois ; jusque-là, aucune interface de recherche n’existe où que ce soit.

Fonctionnement

Le fonctionnement comprend quatre éléments, chacun restant invisible tant que le précédent n’existe pas :

  1. Une instance SearXNG accessible par le backend. La pile de déploiement privé intégrée en comprend une ; toute instance dont l’API JSON est activée convient.
  2. Le réglage d’administration — Paramètres > Connexions > Recherche (l’onglet est réservé aux administrateurs). Définissez l’URL SearXNG, activez Activer la recherche web, puis utilisez Tester la connexion pour vérifier le raccordement au moyen d’une requête réelle.
  3. Les personnes autorisées — la fiche Recherche web dans Paramètres → Gestion des utilisateurs, à côté des commandes d’accès à Work et de téléchargement des modèles. Désactivée (valeur par défaut), elle réserve la recherche aux administrateurs, même lorsque celle-ci est activée ; activée, elle l’ouvre à tous les utilisateurs actifs. Le backend applique cette règle à chaque requête.
  4. Les commandes propres à chaque utilisation, affichées pour les utilisateurs autorisés :
    • Récupération dans le chat : un bouton en forme de globe dans le compositeur. Lorsqu’il est activé, le modèle de la session planifie des requêtes ciblées par mots-clés, avec des indications facultatives de fraîcheur et de catégorie. Si la planification échoue, Libre utilise le message brut. Les résultats entrent dans l’invite en tant que contexte et la réponse affiche des pastilles de source numérotées. Cette fonction est compatible avec les modèles dépourvus d’appels d’outils.
    • Outils de chat : les modèles autorisés compatibles avec les outils peuvent appeler l’outil intégré web_search lorsque les outils sont activés pour ce tour.
    • Work : les tâches dont l’accès réseau est activé disposent d’un outil web_search dans la boucle de l’agent. Le modèle décide quand l’appeler, comme n’importe quel autre outil. Les tâches hors ligne (réseau désactivé) ne voient jamais cet outil, même si la requête de recherche sortirait du backend et non du bac à sable.

L’échec d’une recherche ne fait jamais échouer le tour : le modèle répond sans ce contexte et l’exécution se poursuit.

Configuration avec la pile intégrée

deploy/private/docker-compose.yml contient déjà le service searxng : il est interne uniquement (jamais publié sur l’hôte), renforcé et préconnecté à l’application via SEARXNG_URL=http://searxng:8080.

  1. Ajoutez un secret à .env :

    SEARXNG_SECRET=any-long-random-value
  2. docker compose up -d.

  3. En tant qu’administrateur, accédez à Paramètres > Connexions > Recherche. L’URL est préremplie depuis l’environnement ; activez la fonction, puis cliquez sur Tester la connexion.

Configuration avec votre propre SearXNG

Toute instance SearXNG accessible convient, à une condition : le format JSON doit être activé dans son fichier settings.yml (la plupart des instances publiques le désactivent) :

search:
formats:
- html
- json

Collez ensuite son URL de base (par exemple http://127.0.0.1:8888 ou https://search.example.com) dans Paramètres > Connexions > Recherche.

Variables d’environnement

VariableValeur par défautFonction
SEARXNG_URLnon définiePréremplit l’URL dans les réglages de recherche ; l’activation reste une action d’administration

Le réglage lui-même (activation et URL) est conservé dans la base de données ; il survit donc aux redémarrages et prend effet immédiatement sans redéploiement.

Confidentialité et portée

  • Les recherches s’exécutent côté serveur. Les navigateurs ne contactent jamais SearXNG directement. Libre WebUI n’a besoin d’aucun compte auprès d’un fournisseur de recherche, même si un déploiement SearXNG personnalisé peut configurer des moteurs avec leurs propres identifiants.
  • Les termes recherchés quittent le processus Libre WebUI pour SearXNG, puis pour les moteurs en amont sélectionnés. Auto-héberger la passerelle permet de maîtriser ce saut ; cela ne rend pas à lui seul la recherche sur le web public locale ou anonyme.
  • Le texte des résultats est limité avant d’atteindre le contexte du modèle (500 caractères par résultat). Les administrateurs choisissent une limite de résultats comprise entre 1–100 ; la valeur par défaut est 6. Seules les URL de résultat http(s) sont conservées.
  • L’instance intégrée n’est accessible que sur le réseau interne de la pile. Son limiteur de débit est désactivé pour cette raison ; ne la publiez pas.

Dépannage

Aucun globe dans le compositeur / aucun outil web_search dans Work. La recherche n’est pas activée (Paramètres > Connexions > Recherche) ou le compte n’est pas autorisé : pour les utilisateurs ordinaires, le bouton Recherche web doit être activé dans Paramètres → Gestion des utilisateurs.

Le test de connexion échoue avec une erreur HTTP 403. L’instance n’autorise pas le format JSON. Ajoutez json à search.formats dans son fichier settings.yml (voir ci-dessus), puis redémarrez-la.

Le test de connexion ne peut pas atteindre le service. L’URL doit être accessible depuis le backend, et non depuis votre navigateur. Dans la pile intégrée, il s’agit de http://searxng:8080 ; dans un conteneur, localhost désigne le conteneur lui-même.

Les réponses ignorent les résultats. Le modèle décide toujours de ce qu’il utilise. Les petits modèles suivent mieux le contexte injecté lorsque la question est concrète ; les sources sous la réponse montrent toujours ce qui a été récupéré.