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

Meilisearch

Meilisearch einrichten, um die Konversationssuche in LibreChat zu aktivieren

Meilisearch ist eine Open-Source-Suchmaschine, die die Konversationssuche von LibreChat antreibt und Volltextsuche, Fehlertoleranz sowie sofortige Ergebnisse für vergangene Konversationen ermöglicht. Einen Überblick über die Funktionen finden Sie unter Search in LibreChat.

Wie es sich verbindet

LibreChat kommuniziert mit Meilisearch über HTTP unter Verwendung einiger Umgebungsvariablen. Das Docker-Setup liefert Meilisearch als Dienst für Sie mit. Bei einer Quellcode-Installation verweisen Sie LibreChat auf einen Meilisearch-Prozess, den Sie selbst ausführen.

Meilisearch konfigurieren

Die standardmäßige docker-compose.yml enthält bereits einen meilisearch-Dienst, daher müssen Sie lediglich die Suche aktivieren und einen Master-Key in Ihrer .env-Datei festlegen.

Generieren Sie einen Master-Key. Verwenden Sie eine ausreichend lange, zufällige Zeichenfolge (16 Bytes oder mehr). Zum Beispiel:

openssl rand -base64 32

Fügen Sie die Suchvariablen zur .env hinzu. Die Compose-Datei setzt MEILI_HOST auf die interne Service-Adresse für den api-Container, daher müssen Sie den Host hier nicht festlegen. Halten Sie den Master-Key identisch mit dem, den der meilisearch-Service verwendet.

SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_MASTER_KEY=<your_master_key>

Übergeben Sie den Master-Key an den Meilisearch-Dienst. Der mitgelieferte meilisearch-Dienst liest keine .env-Datei, fügen Sie ihn daher über die docker-compose.override.yml hinzu. Dadurch stellen Sie sicher, dass sowohl LibreChat als auch Meilisearch denselben Key verwenden.

services:
  meilisearch:
    environment:
      - MEILI_MASTER_KEY=${MEILI_MASTER_KEY}

Siehe Docker Override, um zu erfahren, wie Override-Dateien zusammengeführt werden.

Starten Sie den Stack. Compose führt die Überschreibung automatisch zusammen und startet Meilisearch zusammen mit LibreChat.

docker compose up -d

Port intern halten

Container erreichen Meilisearch über das interne Docker-Netzwerk, daher ist es nicht erforderlich, Port 7700 auf dem Host freizugeben. Eine öffentliche Bereitstellung kann Ihre Suchdaten gefährden.

Sobald LibreChat konfiguriert ist, indiziert es Unterhaltungen und Nachrichten in Meilisearch, und die Suchleiste liefert Volltext-Ergebnisse mit Fehlertoleranz.

Umgebungsvariablen

VariableBeschreibung
SEARCHAktiviert die Konversationssuchfunktion. Auf true setzen.
MEILI_HOSTURL, unter der LibreChat Meilisearch erreicht. In Docker ist dies http://meilisearch:7700 (durch Compose festgelegt); aus dem Quellcode ist es typischerweise http://localhost:7700.
MEILI_MASTER_KEYGemeinsames Geheimnis (Shared Secret), das zur Authentifizierung bei Meilisearch verwendet wird. Muss mit dem Schlüssel übereinstimmen, mit dem Meilisearch gestartet wird.
MEILI_NO_ANALYTICSDeaktiviert die anonyme Telemetrie von Meilisearch. Auf true setzen.
MEILI_NO_SYNCSiehe Multi-Node-Setups.

Deaktivieren der Synchronisierung in einem Multi-Node-Setup

Wenn Sie LibreChat als Node-Cluster oder Multi-Node-Deployment betreiben, setzen Sie MEILI_NO_SYNC auf true, damit nur eine Instanz die Indizierung übernimmt. Dies verhindert eine redundante Synchronisierung von Datenbankdokumenten über Instanzen hinweg und die damit verbundene unnötige Ressourcennutzung.

MEILI_NO_SYNC=true

Synchronisierung zurücksetzen

Wenn Meilisearch-Daten gelöscht oder beschädigt wurden oder LibreChat alles als synchronisiert betrachtet, obwohl dies nicht der Fall ist (zum Beispiel nach einem Upgrade von Meilisearch oder dem Löschen seiner Datendateien), verwenden Sie das Reset-Skript, um eine vollständige erneute Synchronisierung zu erzwingen. Es setzt die Synchronisierungs-Flags in MongoDB zurück, was LibreChat dazu veranlasst, beim nächsten Start oder bei der nächsten Synchronisierungsprüfung alle Unterhaltungen und Nachrichten neu zu indizieren.

Führen Sie das Reset-Skript aus. Verwenden Sie den Befehl, der zu Ihrem Setup passt.

# 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"

Starten Sie LibreChat neu. Die Neusynchronisierung beginnt, sobald die App neu gestartet wurde.

Das Skript setzt das _meiliIndex-Flag für alle Nachrichten und Konversationen in MongoDB auf false zurück und berichtet anschließend, wie viele Dokumente zurückgesetzt wurden und wie viele noch synchronisiert werden müssen.

Wann man es verwendet:

  • Nach dem Löschen der Meilisearch-Datendateien
  • Beim Upgrade von Meilisearch auf eine Version, die eine Neuindizierung erfordert
  • Wenn LibreChat Unterhaltungen als vollständig synchronisiert anzeigt, aber in Meilisearch Daten fehlen
  • Nach dem Wiederherstellen eines MongoDB-Backups ohne übereinstimmende Meilisearch-Daten

Erweiterte Synchronisierungsoptionen. Steuern Sie nach dem Zurücksetzen das Synchronisierungsverhalten mit diesen Umgebungsvariablen:

VariableDefaultDescription
MEILI_SYNC_BATCH_SIZE100Anzahl der pro Batch synchronisierten Dokumente.
MEILI_SYNC_DELAY_MS100Verzögerung zwischen Synchronisations-Batches in Millisekunden.
MEILI_SYNC_THRESHOLD1000Mindestanzahl an nicht synchronisierten Dokumenten, bevor eine Synchronisation ausgelöst wird.

Wie finden Sie diese Anleitung?