Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

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 32

Ajoutez 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 -d

Garder 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 meilisearch

Générez une clé maîtresse. Meilisearch peut en générer une pour vous :

./meilisearch --generate-master-key

Copiez 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 backend

Maintenir 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

VariableDescription
SEARCHActive la fonctionnalité de recherche de conversations. Définir sur true.
MEILI_HOSTURL 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_KEYSecret partagé utilisé pour l'authentification auprès de Meilisearch. Doit correspondre à la clé avec laquelle Meilisearch démarre.
MEILI_NO_ANALYTICSDésactive la télémétrie anonyme de Meilisearch. Définir sur true.
MEILI_NO_SYNCVoir 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=true

Ré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 :

VariableDefaultDescription
MEILI_SYNC_BATCH_SIZE100Nombre de documents synchronisés par lot.
MEILI_SYNC_DELAY_MS100Délai entre les lots de synchronisation, en millisecondes.
MEILI_SYNC_THRESHOLD1000Nombre minimum de documents non synchronisés avant qu'une synchronisation ne soit déclenchée.

Que pensez-vous de ce guide ?