Auto-hébergement

Créer une pile de recherche IA privée avec SearXNG et des LLM locaux

Un nouveau projet open-source combine le méta-moteur de recherche SearXNG avec Ollama pour fournir des réponses IA citées sans envoyer les requêtes vers des serveurs externes.

Illustration d'un serveur IA local sécurisé avec des boucliers protecteurs
Illustration créée pour cet article

Traduit automatiquement depuis l’original en anglais.

Un développeur a publié PrivaSearch, un outil open-source qui synthétise les résultats de recherche web en réponses générées par IA tout en gardant toutes les données en local. Publié le 8 novembre 2026, le projet utilise SearXNG pour la méta-recherche et Ollama pour l'inférence du grand modèle de langage (LLM), garantissant que les requêtes des utilisateurs ne quittent jamais l'environnement auto-hébergé.

Ce qui s'est passé

PrivaSearch est construit sous forme d'une pile Docker à quatre conteneurs fonctionnant sur un réseau interne unique. L'architecture isole le frontend, qui sert une interface React via nginx, des composants backend. La couche API, écrite en Node.js et Express, orchestre la communication entre l'interface utilisateur, le moteur de méta-recherche SearXNG et le LLM local servi par Ollama. Seul le frontend expose un port hôte, généralement 8080, tandis que les autres services restent inaccessibles depuis l'extérieur du réseau Docker.

Le système sépare le processus de recherche de la génération de réponse. Lorsqu'un utilisateur soumet une requête, le navigateur demande d'abord des résultats paginés à SearXNG. Il envoie ensuite les meilleurs résultats à l'API, qui construit une invite pour le LLM local. Le modèle renvoie une réponse synthétisée en flux au client, citant les sources avec des numéros entre crochets. Cette séparation permet aux utilisateurs de régénérer des réponses avec différents nombres de sources sans re-interroger les moteurs de recherche web.

Pour maintenir une confidentialité stricte, le projet minimise les dépendances et contrôle la persistance des données. L'API repose uniquement sur Express et la capacité fetch intégrée de Node. Les requêtes et les résultats existent seulement dans la mémoire du processus pendant la demande et ne sont pas stockés sur disque. Les seules données persistantes incluent les poids du modèle et la configuration de SearXNG. Les fonctionnalités optionnelles comme la synthèse de page et les recherches géo-IP sont désactivées par défaut pour empêcher les demandes sortantes supplémentaires.

Détails clés

  • La pile exécute quatre conteneurs : frontend (nginx/React), API (Node/Express), SearXNG et Ollama sur un réseau Docker interne.
  • La recherche et la génération de réponses sont des étapes distinctes, permettant aux utilisateurs d'ajuster le nombre de sources sans relancer la recherche initiale.
  • L'invite système limite le LLM à l'utilisation des résultats fournis uniquement, cite les affirmations avec [n] et évite les connaissances extérieures.
  • La température par défaut est réglée sur 0,2 pour une cohérence factuelle, et le modèle reste résident pendant 30 minutes pour réduire les temps de chargement.
  • Des tunnels Tor ou VPN optionnels peuvent masquer l'adresse IP du serveur auprès des moteurs de recherche amont, Gluetun fournissant un interrupteur de sécurité (kill switch) pour l'option VPN.
  • Le modèle par défaut est qwen2.5:1.5b, qui nécessite environ 1 Go de RAM et fournit des réponses chaudes en approximativement 8 secondes sur CPU.

Contexte

La Génération Augmentée par Récupération (RAG) est une technique où un modèle d'IA répond à des questions en utilisant des documents externes spécifiques plutôt que simplement ses données d'entraînement. Dans cette configuration, SearXNG agit comme moteur de récupération, allant chercher des résultats web en direct. Ollama traite ensuite ces résultats pour générer un résumé cohérent. En exécutant les deux composants localement, les utilisateurs évitent d'envoyer des termes de recherche sensibles à des fournisseurs d'IA tiers.

SearXNG est un méta-moteur de recherche respectueux de la vie privée qui agrège les résultats de plusieurs fournisseurs comme Google et Bing sans suivre les utilisateurs. Ollama est un outil qui simplifie l'exécution de grands modèles de langage sur du matériel local. Leur combinaison permet une expérience de recherche moderne et intelligente mais restant sous le contrôle total de l'utilisateur, répondant aux préoccupations croissantes concernant la fuite de données dans les services d'IA basés sur le cloud.

Pourquoi c'est important

Pour les équipes qui auto-hébergent leur infrastructure, maintenir la confidentialité tout en adoptant des outils d'IA est un défi majeur. Les API publiques d'IA journalisent souvent les requêtes pour l'entraînement ou l'amélioration, ce qui peut violer les politiques de conformité internes ou exposer des informations propriétaires. PrivaSearch démontre qu'il est possible d'obtenir des réponses citées et synthétisées sans sacrifier la souveraineté des données. Cette approche est particulièrement pertinente pour les organisations traitant des données clients sensibles ou de la propriété intellectuelle.

L'architecture souligne également l'importance des dépendances minimales dans les projets soucieux de la sécurité. En s'appuyant sur les capacités intégrées de Node et en évitant les frameworks lourds, la surface d'attaque est réduite. Cela rend le code plus facile à auditer et à maintenir, un facteur critique pour les administrateurs système qui doivent faire confiance au logiciel qu'ils déploient. La gestion explicite des cas limites, tels que les échecs du modèle ou les résultats vides, assure une expérience utilisateur fiable même lorsque les composants sont sous pression.

De plus, les fonctionnalités de tunneling optionnelles comblent le fossé de confidentialité des métadonnées. Même si le contenu de la requête est sûr, l'adresse IP effectuant la demande peut révéler l'identité de l'organisation. Router le trafic via Tor ou un VPN avec un kill switch garantit que les moteurs amont ne voient que du trafic anonyme. Ce niveau de détail montre une compréhension mature des menaces à la vie privée au-delà du simple chiffrement du contenu.

Ce que vous pouvez faire

  • Déployez la pile en utilisant Docker Compose en exécutant npm run setup et docker compose up -d pour tester le workflow de recherche IA local.
  • Ajustez le paramètre OLLAMA_KEEP_ALIVE pour équilibrer la vitesse de réponse et l'utilisation de la mémoire selon la capacité de votre serveur.
  • Activez les options Tor ou VPN si masquer l'adresse IP de votre serveur auprès des moteurs de recherche est une exigence pour votre modèle de menace.
  • Examinez le fichier prompt.js pour comprendre comment le système contraint le LLM, et modifiez-le si vous avez besoin de styles de citation ou de comportements différents.
  • Désactivez les fonctionnalités optionnelles comme ALLOW_PAGE_FETCH et SHOW_LOCATION dans la configuration pour garantir qu'aucune demande sortante inattendue ne se produise.
  • Surveillez l'utilisation des ressources lors du passage à des modèles plus grands comme llama3.1:8b, car ils fournissent de meilleures réponses mais nécessitent beaucoup plus de puissance CPU et de temps.

Autres actualités

Toutes les actualités