Auto-hospedagem do Perplexica - com Ollama

Executando um serviço do tipo copilot localmente? Fácil!

Conteúdo da página

Isso é muito emocionante! Em vez de chamar o copilot ou perplexity.ai e contar ao mundo inteiro o que você está buscando, agora você pode hospedar um serviço semelhante no seu próprio PC ou laptop!

O que é

Perplexica é um sistema semelhante ao Copilot e à Perplexity.ai.

  • Você faz uma pergunta
  • A IA busca na internet por respostas (você pode especificar onde buscar: artigos acadêmicos, escrita, YouTube, Reddit…)
  • Depois, a IA resumirá tudo o que encontrou
  • Em seguida, apresentará o resultado com referências aos sites originais
  • Também uma lista de imagens e vídeos do YouTube à direita
  • Além disso, perguntas de acompanhamento prontas para você clicar, se quiser explorar o tema um pouco mais

Esses sistemas são hospedados na nuvem e pertencem a algumas corporações (por exemplo, Microsoft ou Meta). Perplexica é um software de código aberto que você pode hospedar no seu PC ou em um laptop poderoso.

resposta do perplexica com llama3.1 8b q6 e jina embeddings Aqui vemos a resposta do Perplexica com o modelo de chat llama3.1 8b q6 e o modelo de embedding da Jina - à pergunta Quem é Elon Musk?

Perplexica consiste em vários módulos

  1. SearxNG - motor de metapesquisa. Ele chamará 10+ outros motores de busca para obter os resultados, então o Perplexica pode combiná-los. O SearxNG é muito configurável por si só, você pode ligar e desligar cada motor e adicionar novos. Mas, para nossos propósitos, a configuração padrão funciona bem.
  2. Backend e Frontend do Perplexica. Técnicamente, esses são dois módulos separados, um fornece a API, outro é a interface do usuário
  3. Serviço Ollama - que não é parte do projeto Perplexica, mas se você quiser hospedar seus LLMs localmente, o Ollama é a única maneira de usá-los.

Então, a instalação do sistema inteiro consiste em dois grandes passos:

  1. Instalar o Ollama + baixar os modelos do Ollama
  2. Instalar o Perplexica junto com o SearxNG

Instalando o Ollama

Para começar com o Ollama, siga estas etapas:

Instale o Ollama executando o script:

curl -fsSL https://ollama.com/install.sh | sh

Diga ao Ollama para baixar seu modelo favorito de LLM. Se for o Llama3.1 8b q4 - execute o script:

ollama pull llama3.1:latest

Baixe a versão mais recente do Nomic-Embed-Text para usar como modelo de embedding (se for seu favorito) usando

ollama pull nomic-embed-text:latest

Edite o arquivo de serviço do Ollama executando

sudo systemctl edit ollama.service

Adicione as seguintes linhas para expor o Ollama à rede (o Perplexica precisa se conectar a ele dentro do docker)

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Recarregue o daemon do systemd e reinicie o serviço do Ollama:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Verifique se o Ollama foi iniciado com sucesso

systemctl status ollama.service
sudo journalctl -u ollama.service --no-pager

Descrição detalhada sobre como instalar, atualizar e configurar o Ollama, veja: Instale e configure o Ollama

Para detalhes sobre como usar outros modelos do Ollama com o Perplexica, veja a seção ‘Instalando outros modelos do Ollama’ abaixo.

Instalando o Perplexica

Instalei o Perplexica dockerizado no Linux, mas um docker-compose muito semelhante pode ser usado no Windows ou no Mac.

Vamos lá!

Começando com o Docker (Recomendado) Certifique-se de que o Docker esteja instalado e em execução no seu sistema.

Clone o repositório do Perplexica:

git clone https://github.com/ItzCrazyKns/Perplexica.git

Após clonar, navegue até o diretório que contém os arquivos do projeto.

cd Perplexica

Renomeie o arquivo sample.config.toml para config.toml. Se você planeja atualizar o Perplexica posteriormente - para fazer um git pull dentro desse repositório - então apenas copie o arquivo sample.config.toml para config.toml

cp sample.config.toml config.toml

Edite o arquivo de configuração

nano config.toml

Para configurações com Docker, você precisa preencher apenas os seguintes campos:

OLLAMA: URL da API do seu Ollama.

Você deve inseri-lo como http://host.docker.internal:PORT_NUMBER.

Se você instalou o Ollama na porta 11434 (que é a padrão), use http://host.docker.internal:11434. Para outras portas, ajuste conforme necessário.

Enquanto ainda estiver no diretório do Perplexica, execute:

docker compose up -d

Ele vai puxar as imagens do SearxNG e do nó base do docker, construir duas imagens do Perplexica do docker e iniciar 3 contêineres. Espere alguns minutos para que a configuração seja concluída.

Você pode acessar o Perplexica em http://localhost:3000 no seu navegador da web.

Vá para Configurações. Você sabe - o ícone de engrenagem no canto inferior esquerdo, e escolha seus modelos do Ollama

configurações do perplexica - configurando modelos do ollama

Aqui você vê o modelo de chat selecionado llama3.1:8b-instruct-q6_K (Llama 3.1 8b com quantização q6_K), e o modelo de embedding nomic-embed-text:137m-v1.5-fp16.

Você também pode escolher o tema claro ou escuro, dependendo do que preferir mais.

Opções de busca do Perplexica (Clique nesse olho no ícone da caixa), no tema escuro: opções de busca do perplexica

Instalando outros modelos do Ollama

Você já instalou os modelos llama3.1:latest e nomic-embed-text:latest na seção “Instalando o Ollama” anteriormente.

Você precisa apenas de um modelo para chat, mas há muitos modelos disponíveis. Eles se comportam um pouco diferente, é bom começar com os mais comuns: Llama3.1, Gemma2, Mistral Nemo ou Qwen2.

Modelos de chat

O nome completo do modelo de chat que você viu na seção de instalação - llama3.1:latest é llama3.1:8b-text-q4_0. Isso significa que ele tem 8 bilhões de parâmetros e quantização 4_0. É rápido e relativamente pequeno (4,8 GB), mas se seu GPU tiver mais memória eu recomendaria que você tente

  • llama3.1:8b-instruct-q6_K (6,7 GB) - em meus testes ele mostrou muito melhor resposta, embora fosse um pouco mais lento.
  • llama3.1:8b-instruct-q8_0 (8,5 GB) - ou talvez este.

Em geral, todos os modelos do grupo llama3.1:8b são relativamente rápidos.

você pode puxar aqueles que recomendei para tentar com o script:

ollama pull llama3.1:8b-instruct-q6_K
ollama pull llama3.1:8b-instruct-q8_0

Comparando com Llama3.1:8b, o Gemma2 produz respostas mais concisas e artísticas. Tente estas:

# 9,8 GB
ollama pull gemma2:9b-instruct-q8_0

# 14 GB
ollama pull gemma2:27b-instruct-q3_K_L

Os modelos Mistral Nemo produzem respostas em algum lugar entre o gemma2 e o llama3.1.

# o padrão, 7,1 GB
ollama pull mistral-nemo:12b-instruct-2407-q4_0

# 10 GB
ollama pull mistral-nemo:12b-instruct-2407-q6_K

# 13 GB
ollama pull mistral-nemo:12b-instruct-2407-q8_0

Você também pode querer tentar os modelos Qwen2

# o padrão, 4,4 GB
ollama pull qwen2:7b-instruct-q4_0

# 8,1 GB
ollama pull qwen2:7b-instruct-q8_0

Os modelos que mais gostei foram: llama3.1:8b-instruct-q6_K e mistral-nemo:12b-instruct-2407-q8_0.

Para verificar os modelos que o Ollama tem no repositório local:

ollama list

Para remover algum modelo desnecessário:

ollama rm qwen2:7b-instruct-q4_0 # por exemplo

Modelos de embedding

Você pode pular a instalação desses, o Perplexica já tem 3 modelos de embedding pré-instalados: BGE Small, GTE Small e Bert bilingue. Eles funcionam razoavelmente bem, mas você pode querer tentar outros modelos de embedding.

Na seção de instalação do Ollama acima você instalou o nomic-embed-text:latest modelo de embedding, é um bom modelo, mas eu recomendaria que você também tente:

ollama pull jina/jina-embeddings-v2-base-en:latest
# e 
ollama pull bge-m3:567m-fp16

Gostei mais do resultado do jina/jina-embeddings-v2-base-en:latest, mas veja por si mesmo.

Instalação de Rede do Perplexica

Se você instalar em um servidor de rede, então antes da

docker compose up -d

ou se você já estiver executando o Perplexica e precisar reconstruir as imagens

# Pare e remova todos os contêineres (!!! se precisar apenas dele)
docker compose down --rmi all

Coloque o endereço IP do seu servidor do perplexica no docker-compose.yaml: então antes de

nano docker-compose.yaml
perplexica-frontend:
    build:
      context: .
      dockerfile: app.dockerfile
      args:
      - NEXT_PUBLIC_API_URL=http://127.0.0.1:3001/api   # << aqui
      - NEXT_PUBLIC_WS_URL=ws://127.0.0.1:3001          # << aqui
    depends_on:
      - perplexica-backend

agora inicie os contêineres do Perplexica e do SearxNG:

docker compose up -d

Ou reconstrua e inicie:

docker compose up -d --build

Atualizando o Perplexica

Perplexica rodando no docker:

# Pare e remova todos os contêineres (!!! se precisar apenas dele)
docker compose down --rmi all

# navegue até a pasta do projeto
# onde você clonou o perplexica durante a instalação
cd Perplexica

# puxe as atualizações
git pull

# Atualize e Reconstrua os Contêineres do Docker:
docker compose up -d --build

Para instalações não docker, veja: https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md

Perguntas Frequentes

  • P: O que é o Perplexica?

  • R: O Perplexica é um motor de busca gratuito e auto-hospedado de IA e uma alternativa ao perplexity.ai e aos sistemas Copilot que permite aos usuários executar seu próprio motor de busca localmente no seu computador.

  • P: Quais são as etapas para instalar e configurar o Perplexica com o Ollama?

  • R: As etapas incluem instalar o Ollama, puxar os modelos, depois instalar o Perplexica.

  • P: Quais opções de personalização estão disponíveis no Perplexica?

  • R: As opções incluem escolher diferentes modelos como LLama 3.1, Mistral Nemo ou Gemma2, configurar modelos de embedding locais e explorar várias opções de busca como notícias, artigos acadêmicos, vídeos do YouTube e fóruns do Reddit.

  • P: Qual modelo do Ollama usar com o Perplexica?

  • R: Os melhores resultados que obtivemos em nossos testes foram quando executamos o Perplexica com llama3.1:8b-instruct-q6_K e jina/jina-embeddings-v2-base-en:latest.