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

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 32

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

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

Gere uma chave mestra. O Meilisearch pode gerar uma para você:

./meilisearch --generate-master-key

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

Mantenha 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ávelDescrição
SEARCHHabilita o recurso de busca de conversas. Defina como true.
MEILI_HOSTURL 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_KEYSegredo compartilhado usado para autenticar com o Meilisearch. Deve corresponder à chave com a qual o Meilisearch é iniciado.
MEILI_NO_ANALYTICSDesabilita a telemetria anônima do Meilisearch. Defina como true.
MEILI_NO_SYNCVeja 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=true

Redefinir 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ávelPadrãoDescrição
MEILI_SYNC_BATCH_SIZE100Número de documentos sincronizados por lote.
MEILI_SYNC_DELAY_MS100Atraso entre lotes de sincronização, em milissegundos.
MEILI_SYNC_THRESHOLD1000Número mínimo de documentos não sincronizados antes que uma sincronização seja acionada.

Como está este guia?