Intermédiaire 10 minRecherche web

SearXNG : donner la recherche web à un modèle local

Réponse directe

SearXNG (logiciel libre sous licence AGPL-3.0, qui ne suit ni ne profile ses utilisateurs) est un métamoteur auto-hébergé : il relaie vos requêtes vers d'autres moteurs et fusionne leurs résultats, sans clé d'API ni facture. Pour un modèle local, l'étape qui débloque tout est d'ajouter « json » à la liste des formats de settings.yml (« html » seul par défaut), puis de rebrancher cette sortie JSON à votre interface de chat ou votre agent.

Un modèle ouvert ignore tout de cette semaine, et rien dans sa réponse ne vous prévient : il parlera du mois dernier avec le même aplomb que d'une table de multiplication apprise par cœur. Lui donner accès à une recherche web corrige ça. SearXNG est un métamoteur auto-hébergé qui rend ce service sans clé d'API, sans facture à la requête et sans compte — ce qui en fait la brique cohérente d'une installation locale, où l'on n'a pas envie d'envoyer chaque question chez un tiers.

Par Mohamed Meguedmi·Màj 2026-09-28·Testé sur Windows, macOS, Linux

#Pourquoi un modèle local a besoin du web

La connaissance d'un modèle s'arrête à sa date d'entraînement, et il ne sait pas où se situe cette frontière avec certitude. Deux solutions existent : lui fournir vous-même les faits dans le prompt, ou lui donner le moyen d'aller les chercher lui-même au moment de répondre. La recherche est la forme générale de la seconde, et la plus scalable dès que les questions varient.

La voie évidente est une API de recherche commerciale : un compte, une clé, une facture à la requête. SearXNG est l'alternative auto-hébergée. Vous exploitez l'instance, les requêtes partent de chez vous, aucun compte n'existe et rien n'est journalisé sauf si vous le décidez. Pour une installation dont l'intérêt est précisément que les données restent à la maison, envoyer chaque question à un service tiers par la porte de service serait un drôle d'endroit où s'arrêter.

Le projet lui-même se présente clairement comme un métamoteur où les utilisateurs ne sont ni suivis ni profilés, et il est distribué sous licence libre AGPL-3.0. C'est une licence copyleft forte : redistribuer une version modifiée, y compris comme service en ligne, oblige à republier le code source correspondant sous les mêmes termes. Pour un usage personnel ou interne à une équipe, cette clause ne se déclenche jamais : elle ne concerne que la redistribution d'une version modifiée à des tiers, pas le simple fait de faire tourner l'instance chez soi ou dans son entreprise.

#Ce que fait SearXNG, sans magie

Le kit IA Locale

Ton ChatGPT privé et gratuit sur ta machine en 1 heure — LM Studio, Ollama, Open WebUI, tes documents, sans cloud.

  • Espace en ligne à vie
  • PDF + fichiers
  • Mises à jour à vie

SearXNG n'explore pas le web et ne possède aucun index. C'est un intermédiaire : votre requête part vers un ensemble configurable de moteurs existants, leurs réponses reviennent, sont dédupliquées et reclassées, et vous recevez une liste unique. Les moteurs interrogés ne voient pas votre adresse IP mais celle de l'instance.

Ce statut d'intermédiaire explique aussi la promesse de confidentialité mise en avant par le projet lui-même : les utilisateurs ne sont ni suivis ni profilés par l'instance. Aucun compte, aucun cookie de suivi publicitaire, aucun historique de recherche relié à une identité — ce qui distingue nettement SearXNG des moteurs commerciaux dont le modèle économique repose justement sur ce profilage des requêtes et des clics au fil du temps.

La qualité est héritée
Désactivez les moteurs qui renvoient du bruit pour votre usage précis : cela améliore les réponses du modèle davantage que n'importe quelle retouche de prompt, parce que le modèle ne peut pas rattraper un contexte de départ déjà pollué.
L'automatisation ressemble à un abus
Un humain lance quelques recherches par minute, une boucle d'agent en lance des dizaines. Les moteurs en amont répondent par des captchas et des blocages temporaires, que vous voyez arriver sous forme de résultats vides.

Cette dépendance forte aux moteurs en amont est le compromis central de tout métamoteur : SearXNG ne peut pas être meilleur que ce qu'il agrège, et il hérite aussi de leurs pannes et de leurs changements. Un moteur qui change son balisage HTML du jour au lendemain casse le module correspondant côté SearXNG jusqu'à sa mise à jour par les mainteneurs, ce qui explique pourquoi une instance figée depuis longtemps voit certains moteurs cesser silencieusement de répondre sans message d'erreur explicite.

#L'installer

  1. 01
    Déployer le conteneur
    L'image officielle est publiée sur Docker Hub (searxng/searxng) et sur GHCR (ghcr.io/searxng/searxng), toutes deux maintenues par le projet lui-même. Sur une machine unique, l'image plus un service de cache Valkey (le fork open source de Redis) suffisent amplement pour démarrer.
  2. 02
    Le garder sur le réseau local
    Une instance ouverte sur internet est trouvée en quelques jours et utilisée comme relais gratuit, ce qui fait bloquer son accès aux moteurs en amont. On la lie au réseau local, ou on place une authentification devant.
  3. 03
    Vérifier depuis la machine qui l'appellera
    Pas depuis votre navigateur. Un conteneur qui en appelle un autre a besoin de l'adresse visible depuis Docker, pas de localhost.
!
L'ancien dépôt searxng-docker est remplacé
De nombreux tutoriels renvoient encore vers le dépôt searxng-docker, désormais marqué comme remplacé (superseded) par le projet lui-même. Les nouvelles installations doivent suivre le guide de conteneurisation du dépôt principal ; les installations existantes basées sur searxng-docker ont un chemin de migration documenté à suivre plutôt qu'à ignorer. Suivre un vieux tutoriel qui pointe vers l'ancien dépôt reste techniquement possible, mais ce n'est plus la voie recommandée par le projet lui-même.

#Le réglage que tout le monde manque

Par défaut, une instance SearXNG fraîchement installée ne sert que du HTML : parfait pour un humain, totalement inutilisable pour un programme. La documentation officielle confirme que la clé search.formats de settings.yml ne contient que « html » par défaut, alors que csv, json et rss sont disponibles ; il faut y ajouter json puis redémarrer. C'est l'unique cause de la grande majorité des « ça ne marche pas » rencontrés en branchant SearXNG à une interface de chat.

!
La protection anti-robot vous bloquera aussi
Le limiteur qui protège une instance publique bloque également vos propres appels automatisés — et il nécessite désormais une base Valkey (le fork open source de Redis), pas seulement un réglage dans settings.yml. Sur une instance restreinte à votre réseau, le désactiver est justement le but recherché ; sur une instance accessible depuis internet, on le laisse en place, on pointe son hôte Valkey correctement, et on authentifie les appels.

#Le brancher à votre modèle

Points d'intégration les plus courants
EnvironnementRôle de SearXNG
Interface web de chat localFournisseur de recherche intégré : on renseigne l'URL de l'instance, les réponses gagnent une liste de sources
Cadriciel d'agentsUn outil de recherche que l'agent peut appeler
Chaîne de recherche documentaireÉtape de récupération pour les questions d'actualité, à côté de l'index de vos documents
Outil d'automatisationUn simple appel HTTP vers le point d'accès JSON

Le schéma est toujours le même : la recherche renvoie des extraits et des adresses, votre code ou votre interface en retient quelques-uns, et ils sont insérés dans le prompt avant que le modèle ne réponde à la question posée. Le modèle ne navigue pas : il lit ce qu'on lui a tendu. C'est pourquoi la qualité des extraits et la taille de la fenêtre de contexte pèsent ici plus lourd que la taille du modèle.

#Les réglages qui changent vraiment quelque chose

Une instance fraîchement installée active par défaut un grand nombre de moteurs, ce qui semble généreux mais dilue la qualité : plus de bruit, plus de doublons, plus de latence en attendant le moteur le plus lent du lot pour renvoyer sa réponse. La première vraie amélioration ne touche jamais le prompt du modèle, elle touche la liste des moteurs actifs et leur pertinence réelle pour l'usage visé.

Couper les moteurs hors sujet
Un usage centré sur la documentation technique n'a par exemple pas besoin des moteurs d'images ou de shopping activés par défaut. Chaque moteur en moins est une source de bruit en moins et une requête amont de moins à gérer au quotidien.
Activer le cache
Une base Valkey partagée évite de refaire une recherche identique à chaque appel d'un agent qui répète la même question dans une boucle, ce qui économise à la fois du temps de réponse et du quota précieux auprès des moteurs en amont.
Fixer un budget de résultats
Demander dix résultats quand le modèle n'en lira effectivement que trois gaspille beaucoup de contexte et de la latence pour rien de concret. Alignez le nombre de résultats retournés sur ce que votre prompt exploite vraiment réellement derrière, ni plus ni moins.
Surveiller les journaux au démarrage
Une instance récemment mise à jour vers Valkey peut échouer silencieusement si le nom d'hôte pointe encore vers un ancien service de cache. Un coup d'œil aux journaux du conteneur évite de chercher ailleurs un problème qui est là.

#Les limites à prévoir

Les quotas des moteurs
Des résultats vides signifient presque toujours un blocage en amont, pas une erreur de configuration côté SearXNG lui-même. Moins de moteurs actifs, plus de cache Valkey, et surtout pas d'agent qui cherche en boucle sans aucune limite de fréquence.
Des extraits courts
Pour du contenu en profondeur, il faut récupérer et nettoyer les pages derrière les liens : c'est le métier d'un extracteur dédié, pas d'un moteur de recherche qui ne fait que relayer des résultats déjà résumés en amont.
Aucun classement intelligent
SearXNG fusionne des résultats, il ne comprend pas votre question. Une requête vague renvoie un contexte vague, que le modèle résume consciencieusement sans jamais signaler que la question posée était mal formulée.
L'entretien vous revient
Les moteurs en amont changent leurs pages, les modules doivent suivre. Une instance laissée un an sans mise à jour se dégrade silencieusement.
La migration Valkey concerne les anciennes instances
Une instance montée il y a plus d'un an référence peut-être encore un ancien service de cache. Vérifiez le nom d'hôte configuré pour le limiteur : s'il ne correspond plus au conteneur réellement démarré aujourd'hui, la protection anti-robot échoue silencieusement plutôt que de bloquer proprement les abus.

#FAQ

SearXNG est-il gratuit ?+
Oui, c'est un logiciel libre sous licence AGPL-3.0, auto-hébergé, sans coût de licence ni facturation à la requête, puisqu'il interroge d'autres moteurs au lieu d'entretenir son propre index. Vous payez l'hébergement, l'électricité et le temps de maintenance, comme pour tout service que vous exploitez vous-même.
Pourquoi mon instance renvoie du HTML et pas du JSON ?+
Parce que le format JSON n'est pas activé par défaut : la documentation officielle confirme que search.formats ne contient que « html » à l'installation. Ajoutez json à cette liste dans settings.yml et redémarrez l'instance. C'est le blocage le plus fréquent lors du branchement à une interface de chat.
Puis-je utiliser une instance publique au lieu d'héberger la mienne ?+
En théorie oui, en pratique non : les instances publiques limitent le trafic automatisé et beaucoup désactivent volontairement le format JSON pour cette raison précise. Cela revient aussi à confier ses requêtes au serveur d'un inconnu que vous ne contrôlez pas du tout, ce qui annule l'intérêt principal d'auto-héberger l'outil au départ.
Faut-il un GPU ?+
Non. C'est un service web léger qui relaie des requêtes vers d'autres moteurs et fusionne leurs réponses ; aucun calcul lourd n'est impliqué, un simple serveur suffit largement, même un petit modèle bon marché sans carte graphique dédiée. Le GPU sert uniquement au modèle qui lira ensuite les résultats retournés par SearXNG.
Pourquoi les résultats deviennent vides au bout d'un moment ?+
Les moteurs en amont ont limité ou bloqué temporairement votre instance, en général parce qu'un traitement automatisé a interrogé trop souvent et trop vite. Réduisez le nombre de moteurs actifs, mettez les résultats en cache localement, et espacez les appels d'un éventuel agent qui cherche en boucle sans limite.
Est-ce que cela rend mon modèle à jour ?+
Cela lui donne du texte récent à lire, ce qui n'est pas la même chose que mettre à jour ses connaissances internes une bonne fois pour toutes. La qualité dépend des extraits récupérés et de la capacité du modèle à s'appuyer réellement dessus plutôt que sur sa mémoire d'entraînement figée.
Que change la licence AGPL-3.0 de SearXNG pour moi ?+
Rien pour un usage interne ou personnel : faire tourner l'instance ne déclenche aucune obligation particulière. L'AGPL exige de republier le code source si vous redistribuez une version modifiée, y compris comme service accessible sur un réseau plutôt qu'un logiciel installé localement — un point à connaître avant de proposer une instance modifiée en tant que service à d'autres.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.