Hospedagem própria do Perplexica - com Ollama

Executando um serviço estilo Copilot localmente? Fácil!

Conteúdo da página

Isso é muito emocionante! Em vez de chamar o Copilot ou o Perplexity.ai e contar a todos o que você busca, agora você pode hospedar um serviço similar no seu próprio PC ou laptop!

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

  • Você faz uma pergunta
  • A IA pesquisa na internet as respostas (você pode especificar onde pesquisar: artigos acadêmicos, textos, YouTube, Reddit…)
  • Em seguida, a IA resume tudo o que encontrou
  • Depois apresenta o resultado com referências aos sites originais
  • Também há uma lista de imagens e vídeos do YouTube à direita
  • E perguntas de acompanhamento prontas para você clicar, se quiser explorar o tópico um pouco mais

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

A mesma base de código upstream agora é distribuída como Vane; Início Rápido do Vane (Perplexica 2.0) com Ollama e llama.cpp cobre as imagens Docker atuais, o SearxNG e os caminhos de inferência local se você estiver alinhado com o projeto renomeado.

Para uma comparação mais ampla do Ollama local com vLLM, Docker Model Runner, LocalAI e provedores de nuvem—including trade-offs de custo e infraestrutura—consulte Hospedagem de LLM: Infraestrutura Local, Auto-Hospedada e em Nuvem Comparadas.

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

A Perplexica consiste em vários módulos:

  1. SearxNG - Metamotor de busca. Ele chamará mais de 10 outros motores de busca para obter os resultados, para que a Perplexica possa 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 da Perplexica. Tecnicamente, estes são dois módulos separados; um fornece a API, o outro é a IU (Interface do Usuário).
  3. Serviço Ollama - que não faz 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 completo consiste em duas grandes etapas:

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

Instalando o Ollama

Para começar com o Ollama, siga estes passos:

Instale o Ollama executando o script:

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

Diga ao Ollama para baixar seu LLM favorito. 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 o 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 (a Perplexica precisa se conectar a ele de dentro do Docker):

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Recarregue o daemon systemd e reinicie o serviço 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

Para uma descrição detalhada de como instalar, atualizar e configurar o Ollama, consulte: Instalar e configurar o Ollama

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

Instalando a Perplexica

Instalei a Perplexica dockerizada no Linux, mas um docker-compose muito similar pode ser usado no Windows ou Mac.

Vamos lá!

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

Clone o repositório da Perplexica:

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

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

cd Perplexica

Renomeie o arquivo sample.config.toml para config.toml. Se você pretende atualizar a Perplexica posteriormente - para fazer git pull neste repositório - então basta copiar 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 Docker, você precisa preencher apenas os seguintes campos:

OLLAMA: Sua URL de API do Ollama.

Você deve inseri-la 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.

Quando você ainda estiver no diretório da Perplexica, execute:

docker compose up -d

Isso baixará as imagens Docker do SearxNG e do node base, construirá duas imagens Docker da Perplexica e iniciará 3 contêineres. Aguarde alguns minutos para que a configuração seja concluída.

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

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

perplexica settings - configuring ollama models

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 selecionar o tema Claro ou Escuro, conforme preferir.

Opções de pesquisa da Perplexica (Clique no ícone do olho na caixa), no tema Escuro: perplexica search options

Instalando outros modelos do Ollama

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

Você precisa apenas de um modelo para chat, mas há muitos modelos disponíveis. Eles se comportam de maneira ligeiramente 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.8GB), mas se sua GPU tiver mais memória, recomendo que você tente:

  • llama3.1:8b-instruct-q6_K (6.7GB) - nos meus testes, mostrou uma resposta muito melhor, embora fosse um pouco mais lento.
  • llama3.1:8b-instruct-q8_0 (8.5GB) - ou talvez este.

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

Você pode baixar aqueles que recomendei testar com o script:

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

Em comparação com o Llama3.1:8b, o Gemma2 produz respostas mais concisas e artísticas. Tente estes:

# 9.8GB
ollama pull gemma2:9b-instruct-q8_0

# 14GB
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.1GB
ollama pull mistral-nemo:12b-instruct-2407-q4_0

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

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

Você também pode querer tentar os modelos Qwen2:

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

# 8.1GB
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 destes, a Perplexica já possui 3 modelos de embedding pré-instalados: BGE Small, GTE Small e Bert bilingual. Eles funcionam bem, mas você pode querer tentar outros modelos de embedding.

Na seção de instalação do Ollama acima, você instalou o modelo de embedding nomic-embed-text:latest, é um bom modelo, mas recomendo 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 da Perplexica

Se você instalá-lo em um servidor de rede, então antes de

docker compose up -d

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

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

Insira o endereço IP do seu servidor Perplexica no docker-compose.yaml: depois, 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 Perplexica e SearxNG:

docker compose up -d

Ou reconstrua e inicie:

docker compose up -d --build

Atualizando a Perplexica

Perplexica em execução no Docker:

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

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

# puxe as atualizações
git pull

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

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

FAQ

  • Q: O que é a Perplexica?

  • A: A Perplexica é um mecanismo de busca de IA auto-hospedado gratuito e uma alternativa aos sistemas Perplexity.ai e Copilot que permite aos usuários executar seu próprio mecanismo de busca localmente em seus computadores.

  • Q: Quais são os passos para instalar e configurar a Perplexica com o Ollama?

  • A: Os passos incluem instalar o Ollama, baixar os modelos e depois instalar a Perplexica.

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

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

  • Q: Qual modelo do Ollama usar com a Perplexica?

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

Para ver como o Ollama (o backend típico da Perplexica) se encaixa com o vLLM, Docker Model Runner, LocalAI e provedores de nuvem, verifique nosso guia Hospedagem de LLM: Infraestrutura Local, Auto-Hospedada e em Nuvem Comparadas.

Assinar

Receba novos artigos sobre sistemas, infraestrutura e engenharia de IA.