Meilisearch
Skonfiguruj Meilisearch, aby włączyć wyszukiwanie konwersacji w LibreChat
Meilisearch to wyszukiwarka typu open-source, która obsługuje wyszukiwanie konwersacji w LibreChat, dodając wyszukiwanie pełnotekstowe, tolerancję na literówki oraz natychmiastowe wyniki w przeszłych konwersacjach. Przegląd funkcji znajduje się w sekcji Search in LibreChat.
Jak to działa
LibreChat komunikuje się z Meilisearch przez HTTP przy użyciu kilku zmiennych środowiskowych. Konfiguracja Docker dostarcza Meilisearch jako usługę. W przypadku instalacji ze źródeł, LibreChat wskazuje na proces Meilisearch uruchomiony samodzielnie.
Konfiguracja Meilisearch
Domyślny plik docker-compose.yml zawiera już usługę meilisearch, więc wystarczy włączyć wyszukiwanie i ustawić klucz główny (master key) w pliku .env.
Wygeneruj klucz główny. Użyj dowolnego wystarczająco długiego, losowego ciągu znaków (16 bajtów lub więcej). Na przykład:
openssl rand -base64 32Dodaj zmienne wyszukiwania do .env. Plik Compose ustawia MEILI_HOST na wewnętrzny adres usługi dla kontenera api, więc nie ustawiasz tutaj hosta. Upewnij się, że klucz główny (master key) jest identyczny z tym, którego używa usługa meilisearch.
SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_MASTER_KEY=<your_master_key>Przekaż klucz główny (master key) do usługi Meilisearch. Dołączona usługa meilisearch nie odczytuje pliku .env, więc dodaj go poprzez docker-compose.override.yml. Dzięki temu zarówno LibreChat, jak i Meilisearch będą używać tego samego klucza.
services:
meilisearch:
environment:
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}Zobacz Docker Override, aby dowiedzieć się, w jaki sposób pliki zastępujące (override) są scalane.
Uruchom stos. Compose automatycznie scala nadpisanie i uruchamia Meilisearch wraz z LibreChat.
docker compose up -dZachowaj port jako wewnętrzny
Kontenery łączą się z Meilisearch poprzez wewnętrzną sieć Docker, więc nie ma potrzeby publikowania portu 7700 na hoście. Publiczne udostępnienie go może narazić dane wyszukiwania na niebezpieczeństwo.
Kiedy uruchamiasz LibreChat ze źródeł, uruchom plik binarny Meilisearch jako osobny proces i wskaż go w LibreChat.
Pobierz Meilisearch. Pobierz najnowszą wersję dla swojego systemu operacyjnego ze strony wydań Meilisearch, na przykład meilisearch-linux-amd64.tar.gz (Linux), meilisearch-macos-amd64 (macOS) lub meilisearch-windows-amd64.zip (Windows). Wypakuj ją do wybranego katalogu. W przypadku instalacji za pomocą menedżera pakietów, zapoznaj się z przewodnikiem instalacji Meilisearch.
Uczyń plik binarny wykonywalnym (Linux/macOS). Z katalogu, w którym go wypakowano:
chmod +x meilisearchWygeneruj klucz główny. LibreChat może wygenerować go dla Ciebie:
./meilisearch --generate-master-keySkopiuj wygenerowany klucz; wykorzystasz go ponownie w kolejnych krokach.
Uruchom Meilisearch. Uruchom go przy użyciu swojego klucza głównego (master key). Domyślnie nasłuchuje na porcie 7700.
./meilisearch --master-key=<your_master_key>Dodaj zmienne wyszukiwania do .env. Skieruj MEILI_HOST na proces Meilisearch i użyj tego samego klucza głównego (master key), który ustawiono powyżej.
SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_HOST=http://localhost:7700
MEILI_MASTER_KEY=<your_master_key>Uruchom LibreChat. Uruchom lub zrestartuj aplikację, aby uwzględniła nową konfigurację.
npm run backendUtrzymuj działanie Meilisearch
Wyszukiwanie w konwersacjach działa tylko wtedy, gdy Meilisearch jest uruchomiony. Uruchom go jako usługę zarządzaną lub kontener, aby działał po ponownym uruchomieniu systemu.
Po skonfigurowaniu, LibreChat indeksuje konwersacje i wiadomości w Meilisearch, a pasek wyszukiwania zwraca wyniki pełnotekstowe z tolerancją na literówki.
Zmienne środowiskowe
| Zmienna | Opis |
|---|---|
SEARCH | Włącza funkcję wyszukiwania konwersacji. Ustaw na true. |
MEILI_HOST | URL, pod którym LibreChat łączy się z Meilisearch. W Docker jest to http://meilisearch:7700 (ustawione przez Compose); przy uruchamianiu ze źródeł zazwyczaj jest to http://localhost:7700. |
MEILI_MASTER_KEY | Współdzielony klucz (secret) używany do uwierzytelniania w Meilisearch. Musi być zgodny z kluczem, z którym uruchamia się Meilisearch. |
MEILI_NO_ANALYTICS | Wyłącza anonimową telemetrię Meilisearch. Ustaw na true. |
MEILI_NO_SYNC | Zobacz konfiguracje wielowęzłowe. |
Wyłączanie synchronizacji w konfiguracji wielowęzłowej
Jeśli uruchamiasz LibreChat jako klaster węzłów lub wdrożenie wielowęzłowe, ustaw MEILI_NO_SYNC na true, aby tylko jedna instancja zajmowała się indeksowaniem. Zapobiega to redundantnej synchronizacji dokumentów bazy danych między instancjami oraz niepotrzebnemu zużyciu zasobów, które się z tym wiąże.
MEILI_NO_SYNC=trueResetowanie synchronizacji
Jeśli dane Meilisearch zostaną usunięte lub uszkodzone, albo jeśli LibreChat traktuje wszystko jako zsynchronizowane, mimo że tak nie jest (na przykład po aktualizacji Meilisearch lub usunięciu jego plików danych), użyj skryptu resetującego, aby wymusić pełną ponowną synchronizację. Resetuje on flagi synchronizacji w MongoDB, co powoduje, że LibreChat ponownie indeksuje wszystkie konwersacje i wiadomości przy następnym uruchomieniu lub sprawdzeniu synchronizacji.
Uruchom skrypt resetujący. Użyj polecenia odpowiadającego Twojej konfiguracji.
# 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"Zrestartuj LibreChat. Ponowna synchronizacja rozpocznie się po ponownym uruchomieniu aplikacji.
Skrypt resetuje flagę _meiliIndex na false dla wszystkich wiadomości i konwersacji w MongoDB, a następnie raportuje, ile dokumentów zostało zresetowanych i ile pozostało do zsynchronizowania.
Kiedy używać:
- Po usunięciu plików danych Meilisearch
- Podczas aktualizacji Meilisearch do wersji wymagającej reindeksacji
- Gdy LibreChat pokazuje konwersacje jako w pełni zsynchronizowane, ale w Meilisearch brakuje danych
- Po przywróceniu kopii zapasowej MongoDB bez odpowiadających jej danych Meilisearch
Zaawansowane opcje synchronizacji. Po zresetowaniu, kontroluj zachowanie synchronizacji za pomocą tych zmiennych środowiskowych:
| Zmienna | Domyślnie | Opis |
|---|---|---|
MEILI_SYNC_BATCH_SIZE | 100 | Liczba dokumentów synchronizowanych w jednej partii. |
MEILI_SYNC_DELAY_MS | 100 | Opóźnienie między partiami synchronizacji, w milisekundach. |
MEILI_SYNC_THRESHOLD | 1000 | Minimalna liczba niezsynchronizowanych dokumentów, po której wyzwalana jest synchronizacja. |
Jaka jest ta instrukcja?