Pular para o conteúdo

Soluções · Chat com documentos

Uma VPS para AnythingLLM

O AnythingLLM é um espaço de chat privado sobre seus próprios documentos: você envia arquivos, eles são indexados em um banco de dados vetorial integrado e você conversa com eles por meio de um modelo hospedado com chave de API ou de um modelo local pelo Ollama. A documentação pede 2 GB de RAM, uma CPU de 2 núcleos com AVX2 e 5 GB de disco, e chama o AVX2 de único requisito obrigatório. O GL2-4 por $11.90 por mês é a máquina mais barata que atende a esse mínimo; o BD-8 por $12.90 é o que nós compraríamos, porque o embedder roda na CPU desta máquina.

Do que ele precisa

Software segundo a documentação, tamanhos identificados pela fonte

O software e as práticas de segurança vêm da documentação do próprio projeto. Quando o projeto não publica requisitos de hardware, os tamanhos indicam de quem são.

De docs.anythingllm.com e do guia de Docker do projeto

  • “RAM 2GB, 2-core CPU with AVX2, Storage 5GB”: o mínimo da documentação. Em uma máquina na nuvem, o guia do Docker indica pelo menos 2 GB de RAM e no mínimo 10 GB de disco.
  • O AVX2 é “o único requisito obrigatório”: o banco de dados vetorial padrão é compilado para CPUs de 2013 em diante e, sem ele, o servidor cai ao iniciar. Verifique dentro da máquina: lscpu | grep -o avx2. Se não exibir nada, configure VECTOR_DB para outro banco de dados vetorial.
  • Instalação: docker run -d -p 3001:3001 --cap-add SYS_ADMIN … mintplexlabs/anythingllm com um diretório de armazenamento montado em /app/server/storage. O app fica na porta 3001.
  • O chat precisa de um modelo: uma chave de API de um provedor hospedado, ou o Ollama na mesma máquina ou em outra. Por padrão, a indexação roda na CPU desta máquina. O modo multiusuário com permissões é um recurso da versão Docker. Sem GPU.

Tamanhos (o mínimo do projeto, depois o nosso)

Dimensionamento por carga de trabalho
Carga de trabalhovCPURAM
Documentos, chats, um modelo hospedado (mínimo oficial)Dois núcleos com AVX2. 5 GB de disco, 10 GB em uma máquina na nuvem; só as imagens ocupam alguns gigabytes.22 GB
Uma biblioteca de documentos de verdade, o embedder de CPU integrado, alguns usuáriosA nossa. A indexação roda nesta CPU; um upload grande em dois núcleos demora bastante.48 GB
Ollama ao lado para uma pilha totalmente localA nossa. Essa é uma questão de hospedagem de modelo, não do AnythingLLM: dimensione na página do Ollama.832 GB

Os planos adequados

5 máquinas, com preços em tempo real

Primeiro a máquina adequada mais barata. Os preços são os de hoje, por mês, lidos do catálogo. Faça a verificação de AVX2 na que você comprar, no primeiro minuto.

  • GL2-4$11.90/mês

    2 vCPU · 4 GB · 40 GB de disco · Unmetered

    A mais barata que atende ao mínimo, não medido. 2 vCPU / 4 GB / 40 GB, o dobro da memória que a documentação pede, e tráfego não medido para uploads. Faça a verificação de AVX2 antes de qualquer coisa.

  • BD-8$12.90/mês

    4 vCPU · 8 GB · 100 GB de disco · 32 TB

    A que nós compraríamos: 4 núcleos para o embedder. 4 vCPU, 8 GB, 100 GB e 32 TB de transferência por um dólar a mais. Indexar uma biblioteca em quatro núcleos em vez de dois é a diferença que você sente.

  • BD-24$31.90/mês

    8 vCPU · 24 GB · 300 GB de disco · 32 TB

    8 vCPU / 24 GB para muitos usuários e Ollama ao lado. Espaço para um modelo 8B no Ollama na mesma máquina, lentamente, e os documentos de uma equipe.

  • C2-4-80$37.90/mês

    2 vCPU · 4 GB · 80 GB de disco · 3 TB

    O formato do mínimo, em dezenas de cidades. 2 vCPU / 4 GB / 80 GB. Escolha pela cidade. Modelo hospedado, biblioteca modesta.

  • C4-8-160$75.90/mês

    4 vCPU · 8 GB · 160 GB de disco · 3 TB

    4 vCPU / 8 GB / 160 GB, em dezenas de cidades. O tamanho confortável, com disco para uma biblioteca grande e seus vetores.

Ainda não há uma predefinição de inicialização para o AnythingLLM: a instalação são as cinco etapas abaixo, digitadas por você. A etapa 3 difere do comando do projeto em uma flag, que vincula a porta ao loopback, e informa isso.

A instalação

Cinco passos, a partir do guia de Docker do projeto

Verifique a CPU, instale o Docker, execute o contêiner em loopback, configure via SSH e depois dê a ele um domínio.

  1. Verifique o AVX2 primeiro. lscpu | grep -o avx2 Deve exibir avx2. A documentação é clara: esta é a única regra de hardware e não pode ser emulada; uma máquina sem ele precisa de VECTOR_DB configurado para um banco de dados vetorial externo antes da primeira inicialização.
  2. Docker. curl -fsSL https://get.docker.com | sh
  3. Execute-o em loopback. export STORAGE_LOCATION=/opt/anythingllm && mkdir -p $STORAGE_LOCATION && touch $STORAGE_LOCATION/.env docker run -d --name anythingllm --restart unless-stopped -p 127.0.0.1:3001:3001 --cap-add SYS_ADMIN --add-host=host.docker.internal:host-gateway -v $STORAGE_LOCATION:/app/server/storage -v $STORAGE_LOCATION/.env:/app/server/.env -e STORAGE_DIR="/app/server/storage" mintplexlabs/anythingllm Este é o comando do projeto com uma alteração: -p 127.0.0.1:3001:3001 em vez de -p 3001:3001, para que o chat não fique exposto na internet antes de você definir uma senha. O diretório de armazenamento guarda o banco de dados, os vetores e seus documentos; faça backup dele.
  4. Configure-o via SSH. ssh -N -L 3001:127.0.0.1:3001 root@your-server e depois http://127.0.0.1:3001. Escolha o LLM: um provedor hospedado e sua chave de API, ou o Ollama em http://host.docker.internal:11434 se ele rodar nesta máquina. Ative o modo multiusuário ou defina a senha da instância em Settings antes que qualquer outra pessoa possa acessá-lo.
  5. Dê a ele um domínio. Aponte um registro A para o servidor, instale o Caddy, e um bloco do Caddyfile reverse_proxy 127.0.0.1:3001 no seu domínio obtém o certificado e coloca HTTPS na frente da porta 3001. Abra 80 e 443 no firewall, nada mais.

Com franqueza

O que nós realmente compraríamos

O mínimo é 2 núcleos e 2 GB, e a linha mais barata o atende. Mesmo assim, nós gastaríamos o dólar a mais.

Para uma biblioteca de documentos que você vai realmente usar

BD-8 · $12.90/mês

4 vCPU, 8 GB e 100 GB por $12.90, contra GL2-4 por $11.90: um dólar por mês compra mais dois núcleos para o embedder que roda nesta máquina a cada upload, e 100 GB para os documentos e seus vetores. O modelo fica em outro lugar, atrás de uma chave de API, então sem GPU; se quiser o Ollama ao lado, leia a página do Ollama e compre para o modelo, não para o AnythingLLM. Em qualquer uma delas, faça a verificação de AVX2 antes de enviar um único arquivo.

Perguntas

O que as pessoas perguntam antes de comprar.

Quais são os requisitos de sistema do AnythingLLM?
A documentação indica um mínimo de 2 GB de RAM, uma CPU de 2 núcleos com AVX2 e 5 GB de armazenamento, e diz que isso basta para armazenar alguns documentos, conversar e usar seus recursos. O guia de Docker do projeto acrescenta que, em uma máquina na nuvem, você deve visar pelo menos 2 GB de RAM e 10 GB de disco, porque o disco cresce com documentos, vetores e modelos locais. A documentação também diz que o app é uma camada sobre serviços externos, então é leve quando o modelo e o embedder estão em outro lugar, e mais pesado quando rodam na mesma máquina.
O que é o requisito AVX2, e minha VPS terá?
O banco de dados vetorial padrão, LanceDB, é compilado para CPUs com o conjunto de instruções AVX2 (Intel Haswell, 2013, e posteriores). Sem ele, o processo do servidor é encerrado no momento em que o banco de dados carrega, e a documentação o chama de único requisito de hardware obrigatório. As máquinas virtuais são o ponto delicado: um hipervisor pode apresentar um modelo de CPU genérico que oculta o AVX2 mesmo em um host moderno, por isso a documentação manda verificar dentro do convidado com lscpu | grep -o avx2, e não no host. Não prometemos um recurso de CPU que não conseguimos ver pelo catálogo, então execute essa linha no primeiro minuto. Se não exibir nada, configure VECTOR_DB para um dos outros bancos de dados vetoriais suportados, que rodam como serviços separados.
Ele precisa de GPU?
Não. O próprio AnythingLLM executa o web app, o pipeline de documentos e, por padrão, um embedder somente de CPU. As respostas do chat vêm do LLM que você conectar: um provedor hospedado via chave de API, com o que a documentação chama de sobrecarga quase nula, ou um local pelo Ollama. A própria dica da documentação é hospedar um modelo local em outra máquina que tenha GPU, se a máquina do AnythingLLM não tiver. Isso é assunto da página do Ollama e da linha GPU, não desta.
Ele fica aberto na internet após a instalação?
O comando do projeto publica a porta 3001 em todas as interfaces, e uma instância nova não tem senha até que você defina uma. A instalação desta página vincula a 3001 a 127.0.0.1, então, até você adicionar um domínio, o único acesso é por um túnel SSH. Depois, em Settings, defina a senha da instância ou ative o modo multiusuário, que o README lista como recurso da versão Docker, antes de colocar HTTPS na frente.
Onde ficam meus dados?
No diretório de armazenamento que você monta em /app/server/storage: o banco de dados SQLite, os vetores do LanceDB, os documentos enviados e quaisquer modelos baixados localmente. O guia de Docker manda montá-lo no host justamente para que você possa baixar uma nova imagem sem perder nada. Faça backup desse diretório e do .env ao lado; juntos, eles são a instância inteira.
Ele pode usar o Ollama na mesma máquina?
Sim. De dentro do contêiner, o host é http://host.docker.internal:11434, o que no Linux exige --add-host=host.docker.internal:host-gateway no comando run; a etapa acima inclui isso. Dimensione a máquina para o modelo: um modelo 8B precisa de 8 GB próprios além do AnythingLLM e responde a poucos tokens por segundo na CPU. A linha de 24 GB é a menor desta página em que isso fica confortável.