Przejdź do treści

Rozwiązania · Czat z dokumentami

VPS dla AnythingLLM

AnythingLLM to prywatna przestrzeń czatu nad własnymi dokumentami: przesyłają Państwo pliki, są one indeksowane we wbudowanej bazie wektorowej, a następnie rozmawiają Państwo z nimi przez model hostowany z kluczem API lub lokalny przez Ollama. Dokumentacja wymaga 2 GB RAM, 2-rdzeniowego procesora z AVX2 i 5 GB dysku, a AVX2 nazywa jedynym twardym wymogiem. GL2-4 za $11.90 miesięcznie to najtańsza maszyna spełniająca to minimum; BD-8 za $12.90 to ta, którą kupilibyśmy sami, ponieważ embedder działa na procesorze tej maszyny.

Czego potrzebuje

Oprogramowanie według dokumentacji, rozmiary z podanym źródłem

Oprogramowanie i zalecenia bezpieczeństwa pochodzą z dokumentacji danego projektu. Tam, gdzie projekt nie podaje wymagań sprzętowych, przy rozmiarach zaznaczamy, czyje to zalecenia.

Na podstawie docs.anythingllm.com i przewodnika Docker projektu

  • „RAM 2GB, 2-core CPU with AVX2, Storage 5GB”: minimum podane w dokumentacji. Dla maszyny w chmurze poradnik Dockera podaje co najmniej 2 GB RAM i minimum 10 GB dysku.
  • AVX2 to „jedyny twardy wymóg”: domyślna baza wektorowa jest zbudowana dla procesorów od 2013 roku, a bez niego serwer pada przy starcie. Sprawdź wewnątrz maszyny: lscpu | grep -o avx2. Jeśli nic nie zostanie wypisane, ustaw VECTOR_DB na inną bazę wektorową.
  • Instalacja: docker run -d -p 3001:3001 --cap-add SYS_ADMIN … mintplexlabs/anythingllm z katalogiem storage zamontowanym w /app/server/storage. Aplikacja działa na porcie 3001.
  • Czat wymaga modelu: klucza API dostawcy hostowanego albo Ollama na tej samej lub innej maszynie. Indeksowanie domyślnie działa na procesorze tej maszyny. Tryb wielu użytkowników z uprawnieniami to funkcja wersji Docker. Bez GPU.

Rozmiary (minimum projektu, potem nasze)

Dobór rozmiaru według zastosowania
ObciążenievCPURAM
Dokumenty, czaty, model hostowany (oficjalne minimum)Dwa rdzenie z AVX2. 5 GB dysku, 10 GB na maszynie w chmurze; same obrazy zajmują kilka gigabajtów.22 GB
Prawdziwa biblioteka dokumentów, wbudowany embedder CPU, kilku użytkownikówNasz wybór. Indeksowanie działa na tym procesorze; duży transfer plików na dwóch rdzeniach trwa długo.48 GB
Ollama obok dla w pełni lokalnego stosuNasz wybór. To pytanie o hostowanie modelu, nie o AnythingLLM: dobierz rozmiar na stronie Ollama.832 GB

Pasujące plany

Maszyny: 5, aktualne ceny

Najpierw najtańsza pasująca maszyna. Ceny są dzisiejsze, miesięczne, pobrane z katalogu. Na kupionej maszynie proszę sprawdzić AVX2 w pierwszej minucie.

  • GL2-4$11.90/mies.

    2 vCPU · 4 GB · dysk 40 GB · Unmetered

    Najtańsza spełniająca minimum, niemierzony transfer. 2 vCPU / 4 GB / 40 GB, dwa razy więcej pamięci, niż wymaga dokumentacja, i niemierzony transfer dla przesyłanych plików. Zanim zrobią Państwo cokolwiek innego, proszę sprawdzić AVX2.

  • BD-8$12.90/mies.

    4 vCPU · 8 GB · dysk 100 GB · 32 TB

    Ta, którą kupilibyśmy: 4 rdzenie dla embeddera. 4 vCPU, 8 GB, 100 GB i 32 TB transferu za dolara więcej. Indeksowanie biblioteki na czterech rdzeniach zamiast dwóch to różnica, którą się odczuwa.

  • BD-24$31.90/mies.

    8 vCPU · 24 GB · dysk 300 GB · 32 TB

    8 vCPU / 24 GB dla wielu użytkowników i Ollama obok. Miejsce na model 8B w Ollama na tej samej maszynie (powoli) i dokumenty zespołu.

  • C2-4-80$37.90/mies.

    2 vCPU · 4 GB · dysk 80 GB · 3 TB

    Kształt minimum, w dziesiątkach miast. 2 vCPU / 4 GB / 80 GB. Wybór ze względu na miasto. Model hostowany, niewielka biblioteka.

  • C4-8-160$75.90/mies.

    4 vCPU · 8 GB · dysk 160 GB · 3 TB

    4 vCPU / 8 GB / 160 GB, w dziesiątkach miast. Wygodny rozmiar z dyskiem na dużą bibliotekę i jej wektory.

Nie ma jeszcze gotowego presetu startowego dla AnythingLLM: instalacja to pięć poniższych kroków, wpisywanych samodzielnie. Krok 3 różni się od polecenia projektu jedną flagą, która wiąże port z loopbackiem, i to zaznacza.

Instalacja

Pięć kroków według przewodnika Docker projektu

Sprawdź procesor, zainstaluj Docker, uruchom kontener na loopbacku, skonfiguruj przez SSH, a następnie przypisz domenę.

  1. Najpierw sprawdź AVX2. lscpu | grep -o avx2 Polecenie musi wypisać avx2. Dokumentacja jasno mówi, że to jedyny wymóg sprzętowy i że nie da się go emulować; maszyna bez niego wymaga ustawienia VECTOR_DB na zewnętrzną bazę wektorową przed pierwszym uruchomieniem.
  2. Docker. curl -fsSL https://get.docker.com | sh
  3. Uruchom na loopbacku. 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 To polecenie projektu z jedną zmianą: -p 127.0.0.1:3001:3001 zamiast -p 3001:3001, aby czat nie był dostępny w otwartym internecie, zanim ustawisz hasło. Katalog storage zawiera bazę danych, wektory i Twoje dokumenty; rób jego kopie zapasowe.
  4. Skonfiguruj przez SSH. ssh -N -L 3001:127.0.0.1:3001 root@your-server, a następnie http://127.0.0.1:3001. Wybierz LLM: dostawcę hostowanego i jego klucz API albo Ollama pod adresem http://host.docker.internal:11434, jeśli działa na tej maszynie. Włącz tryb wielu użytkowników lub ustaw hasło instancji w ustawieniach, zanim ktokolwiek inny będzie mógł się do niej dostać.
  5. Przypisz domenę. Skieruj rekord A na serwer, zainstaluj Caddy, a jeden blok Caddyfile reverse_proxy 127.0.0.1:3001 pod Twoją domeną pobierze certyfikat i umieści HTTPS przed portem 3001. Otwórz w zaporze porty 80 i 443, nic więcej.

Szczerze

Co kupilibyśmy sami

Minimum to 2 rdzenie i 2 GB, a najtańszy wiersz je spełnia. My i tak dopłacilibyśmy tego dolara.

Dla biblioteki dokumentów, z której naprawdę będą Państwo korzystać

BD-8 · $12.90/mies.

4 vCPU, 8 GB i 100 GB za $12.90, w porównaniu z GL2-4 za $11.90: dolar miesięcznie więcej daje dwa dodatkowe rdzenie dla modelu embeddingów, który działa na tej maszynie przy każdym przesłaniu pliku, oraz 100 GB na dokumenty i ich wektory. Model działa gdzie indziej, za kluczem API, więc GPU nie jest potrzebne; jeśli chcą Państwo uruchomić obok Ollama, proszę przeczytać stronę o Ollama i dobrać serwer pod model, a nie pod AnythingLLM. Na każdym z nich proszę wykonać test AVX2, zanim prześlą Państwo choćby jeden plik.

Pytania

O co ludzie pytają przed zakupem.

Jakie są wymagania systemowe AnythingLLM?
Dokumentacja podaje minimum 2 GB RAM, 2-rdzeniowy procesor z AVX2 i 5 GB pamięci masowej i stwierdza, że wystarcza to do przechowywania kilku dokumentów, czatu i korzystania z funkcji. Przewodnik Docker projektu dodaje, że na maszynie w chmurze należy zapewnić co najmniej 2 GB RAM i 10 GB dysku, ponieważ zajętość dysku rośnie wraz z dokumentami, wektorami i lokalnymi modelami. Dokumentacja zaznacza też, że aplikacja jest nakładką na usługi zewnętrzne, więc jest lekka, gdy model i embedder działają gdzie indziej, a cięższa, gdy działają na tej samej maszynie.
Czym jest wymóg AVX2 i czy mój VPS go spełni?
Domyślna baza wektorowa, LanceDB, jest kompilowana dla procesorów z zestawem instrukcji AVX2 (Intel Haswell, 2013, i nowsze). Bez niego proces serwera jest zabijany w chwili załadowania bazy, a dokumentacja nazywa to jedynym twardym wymogiem sprzętowym. Haczyk tkwi w maszynach wirtualnych: hipernadzorca może prezentować ogólny model procesora, który ukrywa AVX2 nawet na nowoczesnym hoście, dlatego dokumentacja zaleca sprawdzenie wewnątrz maszyny gościa poleceniem lscpu | grep -o avx2, a nie na hoście. Nie obiecujemy flagi procesora, której nie widzimy w katalogu, więc proszę uruchomić tę jedną linię w pierwszej minucie. Jeśli nic nie zostanie wypisane, proszę ustawić VECTOR_DB na jedną z innych obsługiwanych baz wektorowych, które działają jako osobne usługi.
Czy potrzebuje GPU?
Nie. Samo AnythingLLM uruchamia aplikację webową, potok dokumentów i domyślnie embedder działający tylko na CPU. Odpowiedzi czatu pochodzą z podłączonego LLM: dostawcy hostowanego przez klucz API, z narzutem, który dokumentacja nazywa niemal zerowym, albo lokalnego przez Ollama. Dokumentacja radzi hostować lokalny model na innej maszynie z GPU, jeśli maszyna z AnythingLLM go nie ma. Do tego służy strona Ollama i linia GPU, nie ta strona.
Czy po instalacji jest otwarty w internecie?
Polecenie projektu publikuje port 3001 na wszystkich interfejsach, a świeża instancja nie ma hasła, dopóki go nie ustawisz. Instalacja na tej stronie wiąże port 3001 z 127.0.0.1, więc do czasu dodania domeny jedynym dostępem jest tunel SSH. Następnie w ustawieniach ustaw hasło instancji lub włącz tryb wielu użytkowników, który README wymienia jako funkcję wersji Docker, zanim umieścisz przed nią HTTPS.
Gdzie są przechowywane moje dane?
W katalogu storage montowanym w /app/server/storage: baza danych SQLite, wektory LanceDB, przesłane dokumenty i lokalnie pobrane modele. Przewodnik Docker zaleca zamontowanie go na hoście właśnie po to, by można było pobrać nowy obraz bez utraty danych. Proszę robić kopie zapasowe tego katalogu i pliku .env obok niego; razem stanowią całą instancję.
Czy może korzystać z Ollama na tej samej maszynie?
Tak. Z wnętrza kontenera host jest dostępny pod http://host.docker.internal:11434, co w Linux wymaga dodania --add-host=host.docker.internal:host-gateway do polecenia run; powyższy krok to zawiera. Wtedy rozmiar maszyny trzeba dobrać do modelu: model 8B potrzebuje własnych 8 GB ponad AnythingLLM i odpowiada z prędkością kilku tokenów na sekundę na CPU. Wiersz 24 GB to najmniejszy na tej stronie, na którym jest to wygodne.