AnythingLLM opzetten als complete desktop-werkplek
Wie lokale taalmodellen wil inzetten voor het doorzoeken van eigen documenten, ontdekt al snel dat een kale chat-interface zoals Ollama CLI tekortschiet. Het handmatig chunking toepassen op PDF-bestanden, vectoren berekenen en context injecteren vraagt om een gestroomlijnde RAG-pijplijn (Retrieval-Augmented Generation). In het leertraject van kiezen naar beheren bevindt dit artikel zich in de fase gebruiken en koppelen. Voordat we naar de applicatie-inrichting kijken, is het verstandig om te controleren of de computer over voldoende rekenkracht beschikt; bekijk de analyse over welke hardware nodig is voor lokale LLM's om niet tegen geheugentekorten aan te lopen.
AnythingLLM biedt een complete desktop-oplossing waarin documentparsing, vectoropslag, LLM-orchestratie en een moderne gebruikersinterface samenkomen in één pakket. Waar een losse backendconfiguratie vaak meerdere actieve processen vereist, bundelt de desktop-app van AnythingLLM een ingebouwde vectoropslag (LanceDB) en een documentverwerker. In deze gids doorlopen we de volledige configuratie van AnythingLLM als dagelijkse werkomgeving op Windows, macOS en Linux, met nadruk op lokale privacy, werkruimtebeheer en prestatie-optimalisatie.
Geteste configuratie en ondergrens
- Minimale hardware: 16 GB werkgeheugen (RAM/Unified Memory), 4 CPU-kernen, 10 GB vrije schijfruimte (SSD).
- Aanbevolen hardware: 32 GB RAM of 16 GB VRAM (NVIDIA RTX 4070/3060 of Apple Silicon M-serie).
- Softwarecomponenten: AnythingLLM Desktop, Ollama, LanceDB embedded.
- Modellen: Llama-3.1-8B-Instruct (Q4_K_M) als LLM, Nomic-Embed-Text als embeddingmodel.
Wat maakt AnythingLLM geschikt als desktop-omgeving?
Traditionele interfaces focussen primair op het verzenden en ontvangen van tekstprompts. AnythingLLM is fundamenteel anders opgebouwd rondom het concept van Workspaces (werkruimtes). Elke werkruimte beschikt over een eigen verzameling documenten, een eigen systeemprompt, configureerbare temperatuurinstellingen en een afzonderlijke vectorindex. Hierdoor kunnen juridische documenten, programmeerhandleidingen en persoonlijke aantekeningen strikt van elkaar gescheiden blijven zonder dat contexten vervuilen.
Een belangrijk voordeel is de modulaire opbouw onder de motorkap. De desktopversie draait als een Electron-schil met een geïntegreerde NodeJS/Express-backend en een lokale LanceDB-vectoropslag. De gebruiker kan er echter voor kiezen om specifieke onderdelen los te koppelen: een externe Ollama-instantie voor de generatie, een remote embeddingmodel, of een centrale vectordatabase. Voor wie een lokaal model op een Apple-systeem wil aansturen, biedt de installatiehandleiding over Ollama op macOS installeren een solide uitgangspunt om de achterliggende inferentiemotor draaiend te krijgen.
Bovendien ondersteunt AnythingLLM zogeheten agent skills en web scraping direct vanuit de interface. Het programma kan niet alleen lokale PDF-, DOCX- en TXT-bestanden inlezen, maar ook webpagina's ophalen, GitHub-repositories indexeren en audio-opnames transcriberen mits er een spraakmodel beschikbaar is gesteld.
Installatie en initiële setup per besturingssysteem
De eenvoudigste manier om aan de slag te gaan is de officiële desktop-installer van AnythingLLM. Deze installeert alle noodzakelijke hulpdiensten (document-engine, LanceDB en de UI) zonder dat Docker vereist is.
| Besturingssysteem | Installatiebron | Standaard data-opslaglocatie |
|---|---|---|
| macOS (Apple Silicon / Intel) | .dmg installatiebestand |
~/Library/Application Support/anythingllm-desktop/storage |
| Windows (x64) | .exe installatiewizard |
%APPDATA%\anythingllm-desktop\storage |
| Linux (Ubuntu / Debian / Fedora) | .AppImage bestand |
~/.config/anythingllm-desktop/storage |
Tijdens de eerste opstartfase vraagt de configuratiewizard om drie keuzes: de LLM-provider, de Embedding-provider en de Vector Database. Voor een volledig afgeschermde werkomgeving selecteren we bij alle drie de stappen lokale componenten:
- LLM Provider: Kies voor Ollama of LocalAI. Vul als basis-URL
http://127.0.0.1:11434in wanneer Ollama op dezelfde computer draait. - Embedding Provider: Kies eveneens voor Ollama of de ingebouwde Native Embedder.
- Vector Database: Selecteer LanceDB (standaard ingebouwd, geen verdere configuratie nodig).
Koppeling met lokale inference-engines (Ollama en LM Studio)
Om AnythingLLM van tekstgeneratie te voorzien, koppelen we de applicatie aan een lokale engine. Ollama is hiervoor de meest gebruikte optie vanwege de stabiele API. Zorg ervoor dat het gewenste model vooraf is binnengehaald via de commandolijn:
# Haal het LLM en het embeddingmodel binnen via de terminal
ollama pull llama3.1:8b-instruct-q4_K_M
ollama pull nomic-embed-text
Open vervolgens de instellingen in AnythingLLM (het tandwielicoon linksonder) en navigeer naar AI Providers > LLM. Selecteer Ollama in het dropdownmenu. De applicatie controleert direct de verbinding via http://127.0.0.1:11434 en toont een lijst met lokaal aanwezige modellen. Selecteer hier llama3.1:8b-instruct-q4_K_M. Stel het contextvenster (Token Context Window) in op een waarde die past bij het beschikbare geheugen, bijvoorbeeld 8192 tokens.
Indien LM Studio de voorkeur heeft, start dan daarin de Local Server op poort 1234 en kies in AnythingLLM voor de provider LM Studio met URL http://127.0.0.1:1234/v1. Dit protocol volgt de OpenAI-standaard, waardoor AnythingLLM naadloos kan communiceren met vrijwel elke engine die een compatibel eindpunt levert.
De vector-engine inrichten: LanceDB versus externe databases
De standaard vectoropslag in AnythingLLM is LanceDB, een embedded vector-engine die direct wegschrijft naar lokale bestanden op de harde schijf. Voor een individuele werkplek met enkele honderden documenten presteert LanceDB uitstekend: er is geen apart databaseproces nodig, het geheugengebruik blijft laag en back-ups maken is een kwestie van één map kopiëren.
Wanneer de documentencollectie groeit naar tienduizenden pagina's of wanneer meerdere applicaties dezelfde vectoren moeten bevragen, kan een externe database uitkomst bieden. In het artikel over een lokale vectordatabase opzetten met Qdrant en Chroma wordt gedetailleerd beschreven hoe zulke engines via Docker kunnen draaien. In AnythingLLM kan onder AI Providers > Vector Database eenvoudig worden overgeschakeld naar een externe Qdrant-instantie op http://127.0.0.1:6333.
| Eigenschap | LanceDB (Ingebouwd) | Qdrant (Extern via Docker) |
|---|---|---|
| Installatiecomplexiteit | Geen (ingebouwd in desktop-app) | Gemiddeld (vereist Docker/container) |
| Geheugenbeslag (RAM) | Minimaal (~50-100 MB bij gebruik) | Continu 300-600 MB als achtergronddienst |
| Schaalbaarheid | Ideaal tot ca. 50.000 tekstfragmenten | Geschikt voor miljoenen vectoren en clusters |
| Onderhoud en back-up | Map kopiëren in Application Support | Database-snapshots en containerbeheer |
Documentbeheer en werkruimtes (Workspaces) structureren
Het organiseren van bestanden in AnythingLLM gebeurt via Workspaces. Maak voor elk afgebakend project of kennisterrein een aparte werkruimte aan via de knop New Workspace op het startscherm. Geef de werkruimte een duidelijke naam, zoals Onderzoek-Energiecontracten of Documentatie-Softwareproject.
Klik binnen de werkruimte op het upload-icoon om documenten toe te voegen. AnythingLLM ondersteunt onder meer:
- Tekst en opmaak: PDF, DOCX, TXT, MD, CSV, JSON.
- Webbronnen: Directe URL's (worden lokaal gescraped en omgezet naar schone tekst).
- Codebases: ZIP-bestanden met broncode of gekoppelde Git-repositories.
Nadat documenten zijn geüpload, bevinden ze zich in de centrale Document Storage van de applicatie. Om ze daadwerkelijk doorzoekbaar te maken binnen de gekozen werkruimte, moeten de bestanden geselecteerd worden en gekoppeld via de knop Move to Workspace > Save and Embed. Op dat moment leest AnythingLLM de tekst uit, splitst deze in fragmenten (chunks) en berekent het embeddingmodel de bijbehorende vectoren.
Embeddingmodellen selecteren voor Nederlandstalige documenten
De kwaliteit van het terugvinden van informatie (retrieval) staat of valt met het gekozen embeddingmodel. Veel Engelstalige standaardmodellen presteren matig op samengestelde Nederlandse woorden of vakjargon. Wie dieper wil ingaan op de specifieke prestatieverschillen leest het overzicht over welk embeddingmodel te kiezen voor Nederlandse documenten.
Voor algemeen gebruik levert nomic-embed-text via Ollama een stabiele basis met een contextlengte van 8192 tokens. Voor strikt Nederlandstalige bedrijfsdocumenten en beleidsteksten geven meertalige modellen zoals bge-m3 of paraphrase-multilingual-mpnet-base-v2 vaak een nauwkeurigere semantische overeenkomst. In AnythingLLM kan het actieve embeddingmodel per werkruimte of globaal worden aangepast onder AI Providers > Embedding.
RAG-parameters fijnregelen: Chunking, Similarity en Context Window
Als een model irrelevante fragmenten citeert of juist wezenlijke feiten mist, ligt de oorzaak meestal in verkeerd afgestelde RAG-parameters. Binnen AnythingLLM kunnen deze per werkruimte worden geoptimaliseerd via Workspace Settings > Vector Database Settings.
Chunk Size en Chunk Overlap
Standaard splitst AnythingLLM documenten in blokken van ongeveer 1000 karakters met een overlap van 20 karakters. Voor gestructureerde rapporten met lange paragrafen functioneert een chunk-grootte van 1500 karakters met 150 karakters overlap beter, omdat zinnen en redeneringen dan minder snel doormidden worden gesneden. Voor korte vraag-antwoorddocumenten of tabellen is een kleinere chunk van 500 karakters aan te bevelen.
Similarity Threshold en Top-K
De Similarity Threshold bepaalt hoe sterk een documentfragment moet overeenkomen met de vraag om te worden meegestuurd naar het taalmodel. Een waarde tussen 0.60 en 0.75 (bij cosine similarity) filtert ruis effectief weg. De Max Context Snippets (Top-K) stelt in hoeveel tekstfragmenten maximaal worden geïnjecteerd. Voor een model met een 8k contextvenster is 4 tot 6 snippets een veilige instelling die voldoende diepgang biedt zonder de prompt overmatig te vullen.
// Richtlijnen voor RAG-instellingen in AnythingLLM:
{
"chunk_size": 1200,
"chunk_overlap": 120,
"similarity_threshold": 0.65,
"top_k_snippets": 5,
"system_prompt_mode": "strict_context"
}
Chat versus Query Mode: wanneer gebruik je welke modus?
Rechtsboven in het chatvenster van elke werkruimte bevindt zich een schakelaar tussen Chat en Query modus. Dit is een fundamenteel onderscheid in hoe AnythingLLM prompts opbouwt:
- Chat Mode (Standaard conversatie): Het model beantwoordt vragen met behulp van de gekoppelde documenten, maar mag putten uit zijn eigen algemene trainingsdata als het antwoord niet in de documenten staat. Ook onthoudt het model eerdere berichten in het gesprek.
- Query Mode (Strikte documentanalyse): Het model fungeert louter als samenvatter van de gevonden context. Als de opgevraagde feiten niet letterlijk in de geïndexeerde documenten staan, weigert het model te antwoorden. Dit voorkomt hallucinaties en is essentieel voor juridische en financiële documentverificatie.
Privacy, netwerkverkeer en AVG-waarborgen
Een primaire reden om AnythingLLM lokaal te draaien is het garanderen van datasoevereiniteit. Bij een standaard cloudoplossing worden geüploade bestanden verwerkt op externe servers. Door AnythingLLM te combineren met een lokale Ollama-instantie blijft de gehele gegevensverwerking op het eigen fysieke apparaat.
Om te verifiëren dat er geen data weglekt, kunnen we het netwerkverkeer van het proces analyseren. AnythingLLM voert bij het starten een controle uit op software-updates via GitHub en haalt optioneel telemetry-pings op. Deze telemetrie kan volledig worden uitgeschakeld in de instellingen onder Privacy & Data > Anonymous Telemetry. Zie voor een breed overzicht van organisatorische privacymaatregelen de praktische gids over privacyvriendelijk AI gebruiken.
Bij het inladen van vertrouwelijke persoonsgegevens of interne bedrijfsverslagen is het raadzaam om de ingebouwde web scraper met zorg te gebruiken: voorkom dat publieke URL's worden opgevraagd die trackers bevatten. Zorg er tevens voor dat de opslagmap van AnythingLLM meegenomen wordt in het lokale versleutelde back-upprotocol (zoals FileVault op macOS of BitLocker op Windows).
Voor een breder perspectief op de inzet van compacte architecturen die direct op de werkplek draaien, biedt het achtergrondartikel over kleine modellen op het apparaat zelf nuttige inzichten in hoe 3B- en 8B-modellen zich staande houden ten opzichte van zware clouddiensten.
Zwakke punten en bekende beperkingen
Hoewel AnythingLLM een zeer complete omgeving biedt, zijn er duidelijke technische beperkingen waarmee rekening moet worden gehouden:
- Complexe PDF-tabellen: De ingebouwde documentparser leest PDF's primair als platte tekststromen. Complexe tabellen met samengevoegde cellen worden soms verminkt ingelezen, wat leidt tot verlies van kolomrelaties in de vectoropslag.
- Geheugenbeslag bij grote bulk-ingesties: Bij het gelijktijdig indexeren van honderden documenten kan het embeddingproces via de CPU of GPU piekbelastingen veroorzaken. Het is verstandig om grote documentenverzamelingen in batches van 20 tot 30 stuks te importeren.
- Geen geavanceerde herordening (Re-ranking): De desktopversie bevat standaard geen cross-encoder re-ranking-stap na de vector-search, waardoor soms minder relevante chunks toch in de context belanden als de top-k te ruim staat afgesteld.
Praktische workflow: van document tot betrouwbaar antwoord
Een doordachte inrichting van AnythingLLM transformeert een computer in een krachtige, volledig afgeschermde onderzoeksassistent. Door werkruimtes thematisch in te richten, een stabiel lokaal model zoals Llama 3.1 8B te koppelen via Ollama, en de RAG-parameters zorgvuldig af te stemmen op de documentstructuur, ontstaat een werkomgeving die snel, betrouwbaar en 100% vertrouwelijk opereert.


