Meilisearch
Stel Meilisearch in om gesprekszoekopdrachten in LibreChat mogelijk te maken
Meilisearch is een open-source zoekmachine die de gesprekszoekfunctie van LibreChat aandrijft, wat full-text zoeken, typefoutcorrectie en directe resultaten voor eerdere gesprekken toevoegt. Voor een overzicht van de functies, zie Zoeken in LibreChat.
Hoe het verbinding maakt
LibreChat communiceert met Meilisearch via HTTP met behulp van een paar omgevingsvariabelen. De Docker-setup levert Meilisearch als een service voor je. Bij een broninstallatie wijs je LibreChat naar een Meilisearch-proces dat je zelf uitvoert.
Meilisearch configureren
De standaard docker-compose.yml bevat al een meilisearch service, dus je hoeft alleen zoekfunctionaliteit in te schakelen en een master key in te stellen in je .env bestand.
Genereer een master key. Gebruik een willekeurige tekenreeks die lang genoeg is (16 bytes of meer). Bijvoorbeeld:
openssl rand -base64 32Voeg de zoekvariabelen toe aan .env. Het Compose-bestand stelt MEILI_HOST in op het interne serviceadres voor de api-container, dus je hoeft de host hier niet in te stellen. Houd de master key identiek aan degene die de meilisearch-service gebruikt.
SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_MASTER_KEY=<your_master_key>Geef de master key door aan de Meilisearch service. De gebundelde meilisearch service leest geen .env, dus voeg deze toe via docker-compose.override.yml. Dit zorgt ervoor dat zowel LibreChat als Meilisearch dezelfde key gebruiken.
services:
meilisearch:
environment:
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}Zie Docker Override voor hoe override-bestanden worden samengevoegd.
Start de stack. Compose voegt de override automatisch samen en start Meilisearch naast LibreChat.
docker compose up -dHoud de poort intern
Containers bereiken Meilisearch via het interne Docker-netwerk, dus het is niet nodig om poort 7700 naar de host te publiceren. Het publiekelijk blootstellen hiervan kan uw zoekgegevens kwetsbaar maken.
Wanneer je LibreChat vanuit de broncode uitvoert, draai dan het Meilisearch-binary als een apart proces en laat LibreChat hiernaar verwijzen.
Download Meilisearch. Haal de nieuwste release voor jouw besturingssysteem op van de Meilisearch releases page, bijvoorbeeld meilisearch-linux-amd64.tar.gz (Linux), meilisearch-macos-amd64 (macOS), of meilisearch-windows-amd64.zip (Windows). Pak het uit naar een map naar keuze. Voor installaties via pakketbeheerders, zie de Meilisearch installation guide.
Maak het binaire bestand uitvoerbaar (Linux/macOS). Vanuit de map waar je het hebt uitgepakt:
chmod +x meilisearchGenereer een master key. Meilisearch kan er een voor je genereren:
./meilisearch --generate-master-keyKopieer de gegenereerde sleutel; je gebruikt deze opnieuw in de volgende stappen.
Start Meilisearch. Voer het uit met je master key. Het luistert standaard op poort 7700.
./meilisearch --master-key=<your_master_key>Voeg de zoekvariabelen toe aan .env. Wijs MEILI_HOST naar het Meilisearch-proces en gebruik dezelfde master key die je hierboven hebt ingesteld.
SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_HOST=http://localhost:7700
MEILI_MASTER_KEY=<your_master_key>Start LibreChat. Start of herstart de app zodat deze de nieuwe configuratie overneemt.
npm run backendHoud Meilisearch actief
Gesprekszoekopdrachten werken alleen terwijl Meilisearch actief is. Voer het uit als een beheerde service of container zodat het beschikbaar blijft na herstarts.
Zodra LibreChat is geconfigureerd, indexeert het gesprekken en berichten in Meilisearch, en de zoekbalk geeft full-text resultaten terug met typefouttolerantie.
Omgevingsvariabelen
| Variabele | Beschrijving |
|---|---|
SEARCH | Schakelt de zoekfunctie voor gesprekken in. Instellen op true. |
MEILI_HOST | URL waar LibreChat Meilisearch bereikt. In Docker is dit http://meilisearch:7700 (ingesteld door Compose); vanuit de broncode is dit doorgaans http://localhost:7700. |
MEILI_MASTER_KEY | Gedeeld geheim dat wordt gebruikt voor authenticatie bij Meilisearch. Moet overeenkomen met de sleutel waarmee Meilisearch start. |
MEILI_NO_ANALYTICS | Schakelt de anonieme telemetrie van Meilisearch uit. Instellen op true. |
MEILI_NO_SYNC | Zie multi-node setups. |
Synchronisatie uitschakelen in een multi-node setup
Als je LibreChat uitvoert als een node-cluster of een multi-node deployment, stel MEILI_NO_SYNC dan in op true, zodat slechts één instantie de indexering afhandelt. Dit voorkomt redundante synchronisatie van database-documenten tussen instanties en het onnodige verbruik van resources dat hiermee gepaard gaat.
MEILI_NO_SYNC=trueSynchronisatie opnieuw instellen
Als Meilisearch-gegevens worden verwijderd of beschadigd raken, of als LibreChat alles als gesynchroniseerd beschouwt terwijl dat niet zo is (bijvoorbeeld na het upgraden van Meilisearch of het verwijderen van de gegevensbestanden), gebruik dan het reset-script om een volledige hersynchronisatie af te dwingen. Dit reset de synchronisatievlaggen in MongoDB, wat LibreChat activeert om alle gesprekken en berichten opnieuw te indexeren bij de volgende opstart of synchronisatiecontrole.
Voer het reset-script uit. Gebruik het commando dat overeenkomt met jouw configuratie.
# 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"Herstart LibreChat. De her-synchronisatie begint zodra de app opnieuw is opgestart.
Het script zet de _meiliIndex vlag terug naar false voor alle berichten en gesprekken in MongoDB, en rapporteert vervolgens hoeveel documenten zijn gereset en hoeveel er nog moeten worden gesynchroniseerd.
Wanneer te gebruiken:
- Na het verwijderen van Meilisearch-databestanden
- Bij het upgraden van Meilisearch naar een versie die opnieuw indexeren vereist
- Wanneer LibreChat gesprekken als volledig gesynchroniseerd weergeeft, maar er gegevens ontbreken in Meilisearch
- Na het herstellen van een MongoDB-back-up zonder bijbehorende Meilisearch-gegevens
Geavanceerde synchronisatie-opties. Na het resetten kun je het synchronisatiegedrag beheren met deze omgevingsvariabelen:
| Variabele | Standaard | Beschrijving |
|---|---|---|
MEILI_SYNC_BATCH_SIZE | 100 | Aantal documenten dat per batch wordt gesynchroniseerd. |
MEILI_SYNC_DELAY_MS | 100 | Vertraging tussen synchronisatiebatches, in milliseconden. |
MEILI_SYNC_THRESHOLD | 1000 | Minimum aantal niet-gesynchroniseerde documenten voordat een synchronisatie wordt geactiveerd. |
Hoe is deze gids?