Meilisearch
Configure o Meilisearch para habilitar a pesquisa de conversas no LibreChat
Meilisearch é um mecanismo de busca open-source que potencializa a busca de conversas do LibreChat, adicionando busca de texto completo, tolerância a erros de digitação e resultados instantâneos em conversas passadas. Para uma visão geral do recurso, veja Search in LibreChat.
Como ele se conecta
O LibreChat comunica-se com o Meilisearch via HTTP usando algumas variáveis de ambiente. A configuração Docker disponibiliza o Meilisearch como um serviço para você. Uma instalação a partir do código-fonte aponta o LibreChat para um processo do Meilisearch executado por você mesmo.
Configurar o Meilisearch
O docker-compose.yml padrão já inclui um serviço meilisearch, portanto, você só precisa habilitar a pesquisa e definir uma chave mestra (master key) no seu arquivo .env.
Gere uma master key. Use qualquer string aleatória suficientemente longa (16 bytes ou mais). Por exemplo:
openssl rand -base64 32Adicione as variáveis de busca ao .env. O arquivo Compose define MEILI_HOST para o endereço de serviço interno do contêiner api, portanto, você não precisa definir o host aqui. Mantenha a chave mestra idêntica à que o serviço meilisearch utiliza.
SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_MASTER_KEY=<your_master_key>Passe a chave mestra para o serviço Meilisearch. O serviço meilisearch integrado não lê o .env, portanto, adicione-a através do docker-compose.override.yml. Isso mantém tanto o LibreChat quanto o Meilisearch usando a mesma chave.
services:
meilisearch:
environment:
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}Veja Docker Override para saber como os arquivos de substituição são mesclados.
Inicie a stack. O Compose mescla o override automaticamente e inicia o Meilisearch junto com o LibreChat.
docker compose up -dMantenha a porta interna
Os containers alcançam o Meilisearch através da rede interna do Docker, portanto não há necessidade de publicar a porta 7700 para o host. Exponê-la publicamente pode deixar seus dados de busca vulneráveis.
Ao executar o LibreChat a partir do código-fonte, execute o binário do Meilisearch como um processo separado e aponte o LibreChat para ele.
Baixe o Meilisearch. Obtenha a versão mais recente para o seu sistema operacional na página de lançamentos do Meilisearch, por exemplo meilisearch-linux-amd64.tar.gz (Linux), meilisearch-macos-amd64 (macOS) ou meilisearch-windows-amd64.zip (Windows). Extraia-o para um diretório de sua escolha. Para instalações via gerenciador de pacotes, consulte o guia de instalação do Meilisearch.
Torne o binário executável (Linux/macOS). A partir do diretório onde você o extraiu:
chmod +x meilisearchGere uma chave mestra. O Meilisearch pode gerar uma para você:
./meilisearch --generate-master-keyCopie a chave gerada; você a reutilizará nas próximas etapas.
Inicie o Meilisearch. Execute-o com sua chave mestra. Ele escuta na porta 7700 por padrão.
./meilisearch --master-key=<your_master_key>Adicione as variáveis de busca ao .env. Aponte MEILI_HOST para o processo do Meilisearch e use a mesma chave mestra que você definiu acima.
SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_HOST=http://localhost:7700
MEILI_MASTER_KEY=<your_master_key>Inicie o LibreChat. Inicie ou reinicie o aplicativo para que ele carregue a nova configuração.
npm run backendMantenha o Meilisearch em execução
A pesquisa de conversas só funciona enquanto o Meilisearch estiver em execução. Execute-o como um serviço gerenciado ou container para que ele permaneça ativo após reinicializações.
Uma vez configurado, o LibreChat indexa conversas e mensagens no Meilisearch, e a barra de pesquisa retorna resultados de texto completo com tolerância a erros de digitação.
Variáveis de Ambiente
| Variável | Descrição |
|---|---|
SEARCH | Habilita o recurso de busca de conversas. Defina como true. |
MEILI_HOST | URL onde o LibreChat acessa o Meilisearch. No Docker, é http://meilisearch:7700 (definido pelo Compose); a partir do código-fonte, geralmente é http://localhost:7700. |
MEILI_MASTER_KEY | Segredo compartilhado usado para autenticar com o Meilisearch. Deve corresponder à chave com a qual o Meilisearch é iniciado. |
MEILI_NO_ANALYTICS | Desabilita a telemetria anônima do Meilisearch. Defina como true. |
MEILI_NO_SYNC | Veja configurações multi-nó. |
Desativar a sincronização em uma configuração multi-nó
Se você executar o LibreChat como um cluster de nós ou uma implantação de múltiplos nós, defina MEILI_NO_SYNC como true para que apenas uma instância gerencie a indexação. Isso evita a sincronização redundante de documentos do banco de dados entre instâncias e o uso desnecessário de recursos que isso acarreta.
MEILI_NO_SYNC=trueRedefinir Sincronização
Se os dados do Meilisearch forem excluídos ou corrompidos, ou se o LibreChat tratar tudo como sincronizado quando não estiver (por exemplo, após atualizar o Meilisearch ou excluir seus arquivos de dados), use o script de redefinição para forçar uma ressincronização completa. Ele redefine as flags de sincronização no MongoDB, o que faz com que o LibreChat reindexe todas as conversas e mensagens na próxima inicialização ou verificação de sincronização.
Execute o script de redefinição. Use o comando que corresponde à sua configuração.
# 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"Reinicie o LibreChat. A ressincronização começa assim que o aplicativo for reiniciado.
O script redefine a flag _meiliIndex para false para todas as mensagens e conversas no MongoDB, e então relata quantos documentos foram redefinidos e quantos ainda precisam ser sincronizados.
Quando usar:
- Após excluir os arquivos de dados do Meilisearch
- Ao atualizar o Meilisearch para uma versão que requer reindexação
- Quando o LibreChat mostra as conversas como totalmente sincronizadas, mas o Meilisearch está com dados ausentes
- Após restaurar um backup do MongoDB sem os dados correspondentes do Meilisearch
Opções avançadas de sincronização. Após redefinir, controle o comportamento da sincronização com estas variáveis de ambiente:
| Variável | Padrão | Descrição |
|---|---|---|
MEILI_SYNC_BATCH_SIZE | 100 | Número de documentos sincronizados por lote. |
MEILI_SYNC_DELAY_MS | 100 | Atraso entre lotes de sincronização, em milissegundos. |
MEILI_SYNC_THRESHOLD | 1000 | Número mínimo de documentos não sincronizados antes que uma sincronização seja acionada. |
Como está este guia?