Perplexica : un Perplexity auto-hébergé avec votre LLM local
Perplexity a popularisé un usage : poser une question en langage naturel et recevoir une réponse synthétique avec ses sources citées, plutôt qu'une liste de liens bleus. Perplexica reproduit exactement ce fonctionnement, mais chez vous : un moteur de recherche web open-source qui interroge le web via SearXNG, puis fait rédiger la réponse par votre LLM local sous Ollama. Ce guide monte la stack complète en Docker, explique les modes de recherche (les fameux « focus »), et pose sans langue de bois ce qu'on gagne et ce qu'on perd face à l'original.
#Pourquoi Perplexica plutôt que Perplexity
Perplexity est un excellent produit, mais c'est un service cloud : vos requêtes partent chez eux, la version gratuite est limitée, et le modèle qui rédige n'est pas sous votre contrôle. Perplexica renverse la logique. C'est un projet open-source (licence MIT, disponible sur GitHub) qui orchestre trois composants que vous hébergez vous-même. Aucune requête ne quitte votre réseau, il n'y a rien à payer, et vous choisissez le modèle qui répond.
L'intérêt n'est pas seulement idéologique. Un moteur de réponses local peut interroger des sources sans être bridé par des quotas, tourner en tâche de fond dans un homelab, et servir de brique de recherche pour d'autres outils via son interface. En contrepartie, la qualité dépend directement de votre modèle local et de la santé de votre instance SearXNG — deux points sur lesquels ce guide insiste.
#La stack Perplexica + SearXNG + Ollama
Trois briques, chacune avec un rôle net. Comprendre qui fait quoi rend le dépannage beaucoup plus simple quand une réponse est mauvaise : vous saurez laquelle des trois interroger.
- SearXNG
- Un métamoteur de recherche libre qui agrège les résultats de dizaines de moteurs (Google, Bing, DuckDuckGo, Wikipedia…) sans tracking. C'est lui qui va réellement chercher sur le web. Perplexica ne fonctionne pas sans lui.
- Ollama
- Le daemon qui sert votre LLM local sur http://localhost:11434. C'est lui qui rédige la réponse finale à partir des sources. Il fournit aussi un modèle d'embeddings pour classer la pertinence des extraits.
- Perplexica
- Le chef d'orchestre et l'interface web. Il reformule la question, pilote SearXNG, extrait le contenu des pages, gère le reclassement par embeddings, et compose le prompt final envoyé à Ollama.
#Prérequis
Rien d'exotique, mais quelques points de vigilance sur le matériel et les versions.
- Docker + Docker Compose
- Toute la stack se déploie en conteneurs. Docker Desktop (Windows/Mac) ou Docker Engine + le plugin compose (Linux) suffisent. C'est le mode d'installation officiel recommandé.
- Ollama installé et lancé
- Le daemon doit tourner et être joignable. Vérifiez avec ollama list. Si Ollama tourne sur la machine hôte et Perplexica dans Docker, l'adresse à utiliser sera http://host.docker.internal:11434, pas localhost.
- Un modèle de chat
- Un 7-8B en Q4_K_M (~5 Go de VRAM) est un plancher correct ; un 14B (~9 Go) rédige des synthèses nettement plus fiables. La qualité de la réponse finale dépend directement de ce choix.
- Un modèle d'embeddings
- Léger et rapide, par exemple nomic-embed-text. Il sert uniquement au reclassement interne, pas à la rédaction.
- ~5 Go de disque et un peu de RAM
- Pour les images Docker (Perplexica + SearXNG) et le cache. Les modèles, eux, sont gérés par Ollama à part.
#Installation Docker en 10 minutes
L'installation officielle passe par le dépôt Git du projet, qui embarque un docker-compose.yaml préconfigurant à la fois Perplexica et une instance SearXNG dédiée. Vous n'avez pas à installer SearXNG séparément : le compose s'en charge.
- 01Cloner le dépôtRécupérez le projet Perplexica depuis GitHub et placez-vous dans le dossier. Tout ce qui suit se joue là.
- 02Créer le fichier de configurationLe dépôt fournit un modèle sample.config.toml. Copiez-le en config.toml : c'est ce fichier que Perplexica lit au démarrage pour connaître vos backends.
- 03Vérifier le composeLe docker-compose.yaml définit trois services : perplexica (l'app), searxng et le nécessaire réseau. Par défaut l'interface web est exposée sur le port 3000.
- 04Lancer la stackUn docker compose up construit les images au premier lancement puis démarre tout. Comptez quelques minutes la première fois, le temps de télécharger et bâtir les images.
- 05Ouvrir l'interfaceRendez-vous sur http://localhost:3000. Si la page de chat s'affiche, la moitié du travail est faite ; reste à brancher les modèles.
#Brancher Ollama sur Perplexica
Deux façons de configurer les modèles : via le fichier config.toml avant le lancement, ou via l'écran de paramètres de l'interface web après. L'interface est plus simple pour débuter ; le fichier est pratique pour un déploiement reproductible.
Le point sensible, c'est l'adresse d'Ollama. Perplexica tourne dans un conteneur ; pour lui, localhost désigne le conteneur lui-même, pas votre machine. Si Ollama est installé sur l'hôte, utilisez host.docker.internal (Windows/Mac, et Linux avec la bonne option d'hôte) au lieu de localhost.
- 01Ouvrir les paramètresDans l'interface web, l'icône de réglages donne accès au choix des fournisseurs de modèles. Sélectionnez Ollama comme provider.
- 02Renseigner l'URL d'OllamaEntrez l'adresse de l'API (host.docker.internal:11434 depuis Docker). Perplexica interroge alors Ollama et liste automatiquement vos modèles disponibles.
- 03Choisir le modèle de chatSélectionnez le modèle qui rédigera les réponses (par ex. llama3.1:8b). C'est le levier n°1 de qualité.
- 04Choisir le modèle d'embeddingsSélectionnez nomic-embed-text (ou équivalent) pour le reclassement des extraits. Sans embeddings valides, le tri des sources est dégradé.
- 05Poser une première questionTestez avec une question factuelle récente. Si des sources numérotées apparaissent sous la réponse, la chaîne complète fonctionne.
#Les modes focus : académique, vidéos, Reddit…
C'est la fonctionnalité signature de Perplexica. Au lieu de chercher partout de la même façon, vous choisissez un « focus mode » qui oriente SearXNG vers un type de source et adapte la manière de rédiger. Le bon mode change radicalement la pertinence.
- All Mode
- Le mode par défaut : recherche généraliste sur l'ensemble du web. À utiliser pour les questions ouvertes sans domaine précis.
- Academic Search
- Oriente la recherche vers les sources scientifiques et articles de recherche. Idéal pour une revue de littérature ou une question technique pointue.
- Writing Assistant
- Un mode sans recherche web : Perplexica utilise seulement le LLM pour rédiger ou reformuler. Pratique quand vous n'avez pas besoin de sources externes.
- YouTube Search
- Cible les vidéos : la réponse s'appuie sur des contenus YouTube pertinents, avec les liens. Utile pour les tutoriels et démonstrations.
- Wolfram Alpha Search
- Pour les questions calculatoires, scientifiques et de données factuelles : la réponse s'appuie sur Wolfram Alpha.
- Reddit Search
- Cherche dans les discussions Reddit : avis, retours d'expérience, débats communautaires. Précieux pour les questions d'opinion ou de produits.
#La qualité réelle des réponses
Soyons honnêtes : avec un petit modèle local, la synthèse est moins fluide et moins fine qu'avec les modèles de pointe qui animent Perplexity. Mais le pipeline compte autant que le modèle. Trois leviers déterminent le rendu final.
- La taille du modèle de chat
- C'est le facteur dominant. Un 7-8B rédige des réponses correctes mais parfois superficielles ; un 14B suit mieux les instructions de citation et synthétise plus proprement. Au-delà, un 32B (~19 Go de VRAM) approche une expérience convaincante.
- La santé de SearXNG
- Si des moteurs sont bloqués ou en rate-limit, SearXNG renvoie peu de résultats, et la réponse s'appauvrit d'autant. Une réponse creuse vient souvent d'un manque de sources, pas du LLM.
- Le contexte disponible
- Perplexica injecte des extraits de plusieurs pages dans le prompt. Un modèle à contexte court tronque les sources et perd de l'information. Privilégiez un modèle confortable en contexte (8k minimum, plus si possible).
#Face à Perplexity : ce qu'on perd, ce qu'on gagne
Perplexica n'est pas un clone parfait, et le prétendre serait malhonnête. Voici la balance réaliste pour décider si le jeu en vaut la chandelle dans votre cas.
- On gagne — confidentialité
- Aucune requête ne sort de votre réseau. Ni le sujet de vos recherches, ni les réponses ne transitent par un tiers. Pour de la veille sensible, c'est décisif.
- On gagne — coût et quotas
- Rien à payer, aucune limite de requêtes. Vous pouvez lancer autant de recherches que votre matériel encaisse, et l'intégrer à d'autres outils sans facture d'API.
- On gagne — contrôle
- Vous choisissez le modèle, les moteurs interrogés via SearXNG, et vous pouvez auto-héberger le tout dans un homelab durablement.
- On perd — la finesse de rédaction
- Les modèles cloud de Perplexity sont plus gros et plus affûtés. À matériel modeste, la synthèse locale est plus terne et fait plus d'approximations.
- On perd — la robustesse clé en main
- Perplexity gère l'infra à votre place. Chez vous, un SearXNG en rate-limit ou un Ollama qui sature la VRAM, c'est à vous de le diagnostiquer et de le corriger.
- On perd — certaines fonctions
- Pas d'app mobile polie, pas de Pro Search multi-étapes aussi abouti, pas d'intégrations propriétaires. Perplexica couvre l'essentiel, pas tout le confort du produit commercial.
#Dépannage des problèmes courants
- Perplexica ne voit pas Ollama
- Presque toujours l'adresse. Depuis Docker, remplacez localhost par host.docker.internal (et sous Linux, ajoutez extra_hosts avec host-gateway). Vérifiez qu'Ollama écoute bien et acceptez les connexions hors localhost si nécessaire.
- Aucune source dans les réponses
- SearXNG ne renvoie rien. Ouvrez directement l'interface SearXNG pour tester une recherche : si elle échoue, des moteurs sont bloqués ou en rate-limit. Réduisez le nombre de moteurs actifs ou attendez.
- La liste des modèles est vide
- Perplexica interroge Ollama au chargement des paramètres. Si la liste est vide, l'URL de l'API est mauvaise ou Ollama n'a aucun modèle. Vérifiez avec ollama list côté hôte.
- Réponses très lentes
- Le modèle de chat est probablement trop gros pour votre VRAM et déborde sur le CPU. Passez à une quantification plus légère (Q4_K_M) ou à un modèle plus petit ; vérifiez que le GPU est bien utilisé.
- Erreurs d'embeddings
- Le modèle d'embeddings n'est pas sélectionné ou pas téléchargé. Faites un ollama pull nomic-embed-text et choisissez-le explicitement dans les paramètres.
- Le port 3000 est déjà pris
- Un autre service occupe le port. Modifiez le mapping de port dans le docker-compose (par ex. 3001:3000) et rechargez la stack.
#Pour aller plus loin
Perplexica n'est aussi bon que le modèle et l'infra qui le portent. Ces guides consolident les fondations sur lesquelles il repose.
- Ollama, c'est quoi et comment ça marche
- Le daemon qui sert votre modèle de chat et vos embeddings sur le port 11434 — la brique dont dépend toute la qualité de rédaction.
- Choisir sa quantification
- Q4_K_M, Q5_K_M, Q8_0 : comprendre le compromis VRAM/qualité pour choisir le bon modèle de synthèse selon votre carte graphique.
- AnythingLLM : RAG production-ready en local
- Pour aller plus loin que la recherche web et bâtir un RAG sur vos propres documents, avec le même backend Ollama.
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.