Meilisearch
Configurer Meilisearch pour activer la recherche de conversations dans LibreChat
Meilisearch est un moteur de recherche open-source qui alimente la recherche de conversations de LibreChat, ajoutant une recherche en texte intégral, une tolérance aux fautes de frappe et des résultats instantanés dans les conversations passées. Pour un aperçu des fonctionnalités, consultez Recherche dans LibreChat.
Comment cela se connecte
LibreChat communique avec Meilisearch via HTTP en utilisant quelques variables d'environnement. La configuration Docker fournit Meilisearch en tant que service pour vous. Une installation à partir de la source pointe LibreChat vers un processus Meilisearch que vous exécutez vous-même.
Configurer Meilisearch
Le docker-compose.yml par défaut inclut déjà un service meilisearch, vous n'avez donc qu'à activer la recherche et définir une clé maîtresse dans votre fichier .env.
Générez une clé maîtresse. Utilisez n'importe quelle chaîne aléatoire suffisamment longue (16 octets ou plus). Par exemple :
openssl rand -base64 32Ajoutez les variables de recherche à .env. Le fichier Compose définit MEILI_HOST sur l'adresse de service interne pour le conteneur api, vous n'avez donc pas besoin de définir l'hôte ici. Gardez la clé maîtresse identique à celle utilisée par le service meilisearch.
SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_MASTER_KEY=<your_master_key>Transmettez la clé maîtresse au service Meilisearch. Le service meilisearch intégré ne lit pas le fichier .env, vous devez donc l'ajouter via docker-compose.override.yml. Cela permet à la fois à LibreChat et à Meilisearch d'utiliser la même clé.
services:
meilisearch:
environment:
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}Consultez Docker Override pour savoir comment les fichiers de remplacement sont fusionnés.
Démarrez la stack. Compose fusionne automatiquement la surcharge et démarre Meilisearch aux côtés de LibreChat.
docker compose up -dGarder le port interne
Les conteneurs accèdent à Meilisearch via le réseau interne Docker, il n'est donc pas nécessaire de publier le port 7700 sur l'hôte. L'exposer publiquement peut rendre vos données de recherche vulnérables.
Lorsque vous exécutez LibreChat à partir de la source, exécutez le binaire Meilisearch en tant que processus séparé et pointez LibreChat vers celui-ci.
Téléchargez Meilisearch. Obtenez la dernière version pour votre système d'exploitation depuis la page des versions de Meilisearch, par exemple meilisearch-linux-amd64.tar.gz (Linux), meilisearch-macos-amd64 (macOS), ou meilisearch-windows-amd64.zip (Windows). Extrayez-le dans le répertoire de votre choix. Pour les installations via un gestionnaire de paquets, consultez le guide d'installation de Meilisearch.
Rendre le binaire exécutable (Linux/macOS). Depuis le répertoire où vous l'avez extrait :
chmod +x meilisearchGénérez une clé maîtresse. Meilisearch peut en générer une pour vous :
./meilisearch --generate-master-keyCopiez la clé générée ; vous la réutiliserez dans les étapes suivantes.
Démarrez Meilisearch. Exécutez-le avec votre clé maîtresse. Il écoute sur le port 7700 par défaut.
./meilisearch --master-key=<your_master_key>Ajoutez les variables de recherche à .env. Pointez MEILI_HOST vers le processus Meilisearch et utilisez la même clé maîtresse que celle définie ci-dessus.
SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_HOST=http://localhost:7700
MEILI_MASTER_KEY=<your_master_key>Démarrer LibreChat. Démarrez ou redémarrez l'application afin qu'elle prenne en compte la nouvelle configuration.
npm run backendMaintenir Meilisearch en cours d'exécution
La recherche dans les conversations ne fonctionne que lorsque Meilisearch est en cours d'exécution. Exécutez-le en tant que service géré ou conteneur afin qu'il reste actif après les redémarrages.
Une fois configuré, LibreChat indexe les conversations et les messages dans Meilisearch, et la barre de recherche renvoie des résultats en texte intégral avec une tolérance aux fautes de frappe.
Variables d'environnement
| Variable | Description |
|---|---|
SEARCH | Active la fonctionnalité de recherche de conversations. Définir sur true. |
MEILI_HOST | URL où LibreChat accède à Meilisearch. Dans Docker, il s'agit de http://meilisearch:7700 (défini par Compose) ; depuis la source, il s'agit généralement de http://localhost:7700. |
MEILI_MASTER_KEY | Secret partagé utilisé pour l'authentification auprès de Meilisearch. Doit correspondre à la clé avec laquelle Meilisearch démarre. |
MEILI_NO_ANALYTICS | Désactive la télémétrie anonyme de Meilisearch. Définir sur true. |
MEILI_NO_SYNC | Voir configurations multi-nœuds. |
Désactiver la synchronisation dans une configuration multi-nœuds
Si vous exécutez LibreChat en tant que cluster de nœuds ou déploiement multi-nœuds, définissez MEILI_NO_SYNC sur true afin qu'une seule instance gère l'indexation. Cela évite la synchronisation redondante des documents de la base de données entre les instances et l'utilisation inutile des ressources qui en découle.
MEILI_NO_SYNC=trueRéinitialiser la synchronisation
Si les données de Meilisearch sont supprimées ou corrompues, ou si LibreChat considère que tout est synchronisé alors que ce n'est pas le cas (par exemple après une mise à jour de Meilisearch ou la suppression de ses fichiers de données), utilisez le script de réinitialisation pour forcer une resynchronisation complète. Il réinitialise les indicateurs de synchronisation dans MongoDB, ce qui déclenche la réindexation par LibreChat de toutes les conversations et de tous les messages lors du prochain démarrage ou de la prochaine vérification de synchronisation.
Exécutez le script de réinitialisation. Utilisez la commande qui correspond à votre configuration.
# Local development
npm run reset-meili-sync
# Docker (default setup)
docker compose exec api npm run reset-meili-sync
# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run reset-meili-sync"Redémarrez LibreChat. La resynchronisation commence une fois que l'application a redémarré.
Le script réinitialise l'indicateur _meiliIndex à false pour tous les messages et conversations dans MongoDB, puis rapporte combien de documents ont été réinitialisés et combien il en reste à synchroniser.
Quand l'utiliser :
- Après avoir supprimé les fichiers de données Meilisearch
- Lors de la mise à niveau de Meilisearch vers une version nécessitant une réindexation
- Lorsque LibreChat affiche les conversations comme étant entièrement synchronisées mais que des données manquent dans Meilisearch
- Après avoir restauré une sauvegarde MongoDB sans faire correspondre les données Meilisearch
Options de synchronisation avancées. Après la réinitialisation, contrôlez le comportement de synchronisation avec ces variables d'environnement :
| Variable | Default | Description |
|---|---|---|
MEILI_SYNC_BATCH_SIZE | 100 | Nombre de documents synchronisés par lot. |
MEILI_SYNC_DELAY_MS | 100 | Délai entre les lots de synchronisation, en millisecondes. |
MEILI_SYNC_THRESHOLD | 1000 | Nombre minimum de documents non synchronisés avant qu'une synchronisation ne soit déclenchée. |
Que pensez-vous de ce guide ?