# Chatten met je documenten via lokale AI [[TOC]] ## Document-chat met lokale AI "Chatten met documenten" betekent dat je een AI kunt ondervragen over de inhoud van jouw specifieke bestanden. De AI verwijst niet naar haar trainingsdata maar naar de documenten die jij aanlevert. Lokale implementaties garanderen dat je gevoelige documenten niet naar externe servers stuurt: het model, de documenten en de chats blijven allemaal op je eigen machine. Typische toepassingen: - Juridische contracten doorzoeken en clausules opvragen - Technische documentatie bevragen zonder zelf te bladeren - Interne kennisbanken doorzoekbaar maken - Jaarverslagen en rapporten samenvatten en analyseren :::info Document-chat werkt via RAG (Retrieval-Augmented Generation). Documenten worden opgesplitst in stukken (chunks), omgezet naar embeddings (wiskundige representaties van betekenis) en opgeslagen in een vectordatabase. Bij een vraag worden de meest relevante chunks opgehaald en samen met je vraag aan het taalmodel meegegeven. Het model formuleert dan een antwoord op basis van die gevonden passages. ::: ## Optie 1: Open WebUI Open WebUI is een zelf-gehoste webinterface voor Ollama die ook document-upload en een aparte kennisbank ondersteunt. Sinds 2025 heeft het een volwaardige Knowledge-functie waarmee je documenten centraal beheert in plaats van ze per gesprek te uploaden. ### Installatie via Docker ```bash docker run -d \ -p 3000:8080 \ --add-host=host.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main ``` Open daarna `http://localhost:3000` in je browser en maak een (lokaal) account aan. ### Een kennisbank aanmaken in Open WebUI :::howto title="Documenten toevoegen aan een kennisbank" 1. Ga naar **Workspace** en open het tabblad **Knowledge**. 2. Klik op **Create a Knowledge Base** en geef die een naam, bijvoorbeeld "Contracten Q2". 3. Upload losse bestanden of een hele map. Ondersteund zijn onder andere PDF, TXT, DOCX, HTML, CSV en XLSX. 4. Start een nieuw gesprek en typ `#` om je kennisbank als bron te koppelen. 5. Stel je vraag. Open WebUI toont onder het antwoord welke passages als bron zijn gebruikt. ::: Wil je snel iets vragen over één bestand? Dan kun je in de chat ook gewoon op het paperclip-icoon klikken of een bestand naar de invoer slepen, zonder eerst een kennisbank te maken. :::tip title="Kies bewust je embedding-model" In **Admin Panel, Settings, Documents** stel je het embedding-model in. Voor Nederlandstalige documenten levert een meertalig model zoals `bge-m3` vaak betere zoekresultaten dan een Engelstalig standaardmodel. ::: ## Optie 2: AnythingLLM AnythingLLM is een uitgebreidere desktop-applicatie met sterke document-management functies: werkruimtes per project, persistente kennisbases en veel configuratieopties. Het draait volledig lokaal en vereist geen account. ### Installatie Download de installatiebestanden voor macOS, Windows of Linux van de officiële site: [anythingllm.com/desktop](https://anythingllm.com/desktop). De broncode staat op [github.com/Mintplex-Labs/anything-llm](https://github.com/Mintplex-Labs/anything-llm). ### Werkruimte aanmaken en documenten laden :::howto title="Een werkruimte vullen met documenten" 1. Open AnythingLLM en klik op **New Workspace**. 2. Geef de werkruimte een naam, bijvoorbeeld "Contracten Q2". 3. Klik op het document-icoon en upload je bestanden. 4. Selecteer de bestanden en klik op **Save and Embed** om de embeddings te genereren. 5. Stel je vraag in de chatinterface van die werkruimte. ::: ### Koppeling met Ollama In de AnythingLLM-instellingen kies je Ollama als LLM-provider. Vul daarbij in: | Instelling | Waarde | | --- | --- | | LLM Provider | Ollama | | Ollama Base URL | `http://localhost:11434` | | Chatmodel | `llama3.1:8b`, `qwen2.5:7b` of `mistral:7b` | | Embedding model | `nomic-embed-text` of `bge-m3` | Kies voor het chatmodel er een met goede redeneer- en instructiecapaciteiten. Voor complexe technische, juridische of financiële documenten presteert een groter model zoals `qwen2.5:14b` doorgaans merkbaar beter. ## Embedding-modellen installeren Voor goede document-chat heb je naast je chatmodel een apart embedding-model nodig. Haal er een op via Ollama: ```bash ollama pull nomic-embed-text ollama pull bge-m3 ``` Embedding-modellen zijn klein (ongeveer 50 MB tot enkele honderden MB) en zetten tekst om naar vectorrepresentaties. Ze worden niet gebruikt voor het schrijven van antwoorden, maar alleen om de relevante tekstdelen terug te vinden. `nomic-embed-text` draait prima op een CPU; `bge-m3` is sterker voor meertalige (en dus Nederlandstalige) documenten. ## Tips voor betere resultaten ### Documentkwaliteit - Gebruik tekst-PDF's, geen gescande PDF's zonder OCR. Een scan zonder herkende tekst levert lege embeddings op. - Verwijder onnodige paginanummers en kopteksten als ze de lopende tekst onderbreken. - Splits zeer grote documenten in logische secties voor betere chunking. ### Vragen stellen - Stel specifieke vragen in plaats van brede vragen. - Vraag om bronvermelding, bijvoorbeeld: "Citeer de exacte passage waarop je dit antwoord baseert." - Gebruik follow-up vragen om dieper op een antwoord in te gaan. :::warn title="Controleer altijd de bronnen" RAG vermindert verzinsels, maar sluit ze niet volledig uit. Zowel Open WebUI als AnythingLLM tonen welke documentsecties als bron zijn gebruikt. Controleer die verwijzingen altijd bij kritieke of juridische informatie voordat je op een antwoord vertrouwt. ::: :::faq ### Welk taalmodel is het beste voor document-chat? Modellen met sterk begrip van instructies presteren het best, zoals Llama 3.1, Qwen2.5 en Mistral. Voor Nederlandstalige documenten zijn modellen die op meertalige data zijn getraind in het voordeel. Voor zware, technische documenten loont een groter model zoals `qwen2.5:14b`. ### Kan ik ook websites als bron toevoegen? Ja. Zowel AnythingLLM als Open WebUI ondersteunen URL's als bron. De tool haalt de tekst van de webpagina op en verwerkt die net als een document. ### Hoe groot mogen documenten zijn? De praktische limiet hangt af van je hardware. Grotere documenten worden in meer chunks opgesplitst, wat meer opslag en langere embeddingtijd kost. De meeste tools werken vlot met documenten tot ongeveer 50 a 100 pagina's, en met meerdere documenten samen aanzienlijk meer. ### Zijn de embeddings permanent opgeslagen? Ja. Embeddings worden lokaal opgeslagen in een vectordatabase. Je hoeft documenten niet opnieuw te embedden bij een nieuwe sessie; alleen nieuwe of gewijzigde bestanden moeten opnieuw verwerkt worden. ### Kan ik meerdere documenten tegelijk bevragen? Ja. Door meerdere documenten in dezelfde werkruimte of kennisbank te laden, zoekt de AI over alles tegelijk. Je kunt zo ook vragen stellen die documenten met elkaar vergelijken. ### Gaat er echt geen data naar buiten? Bij een volledig lokale opstelling (Ollama plus Open WebUI of AnythingLLM) blijven je documenten, embeddings en chats op je eigen machine. Let er wel op dat je geen externe LLM-provider (zoals een cloud-API) instelt, want dan stuur je je vragen en context alsnog naar buiten. :::