===== 26.007 Opzetten AI Search Max ===== * **Aangemaakt:** 2026-03-12 * **Context / Aanleiding:** Ik heb op diverse plekken informatie staan, waardoor ik op al die plekken moet zoeken om het te vinden. * **[[resources:metadata:tags:status|Status]]**: {{tag>wip}} * Opsomming wat te doen voor vaststelling ===== Relaties ===== /* Specificeer hieronder (dmv links) op welke items dit besluit van toepassing is Opties voor netwerk: firewall, vlan, dns-dhcp Opties voor tags: bandbreedte container vpn multi-user backup vm Gebruik van tags: {{tag>tag1 tag2}} Voeg aanvullingen mogen ook toe aan [[i_template|de template]] */ ^ [[homelab:services:start|Services]] ^ [[homelab:devices:start|Devices]] ^ [[homelab:standaarden:netwerk:start|Netwerk]] ^ [[resources:metadata:tags:start|Tags]] ^ | | | | ^ ===== Besluit ===== * **Gekozen optie:** * Bouwen van een stack met: * **QDrant**: De database voor LLM-tools * **Python**: Voor de indexatiescripts die QDrant vullen * **AnythingLLM**: User interface waarin je de zoekopdracht kan geven * **Motivatie** (Keuze gebaseerd op ChatGPT): * **LLM: AnythingLLM** = simpel te deployen, selfhosted, en integratieklaar met Qdrant. Alternatieven zoals LlamaIndex/LangChain zijn krachtiger en flexibeler, maar vragen meer setup, Python-kennis en resources, en draaien minder soepel op een NAS met beperkte CPU/RAM. Tools zoals Weaviate-only hebben wél vector DB, maar missen een gebruiksvriendelijke ingest- en search frontend. Met andere woorden: AnythingLLM is de balans tussen gemak, selfhosted, en functionaliteit op een NAS. * **Database: QDrant** = makkelijkste, stabiele en resource-vriendelijke keuze voor lokale LLM document search op een NAS, terwijl alternatieven zoals Weaviate en Milvus meer resources en setup vereisen. ===== Leermomenten & notities ===== ==== Python / Scripts-container ==== In /volume2/docker/localsearchai heb ik de volgende bestanden gezet: * Dockerfile_tbv_JoplinIndexer-PythonInclPIP \\ Bij het builden van een image zoekt Docker standaard naar een bestand dat Dockerfile heet (zonder extensie). Maar daarbij zag ik de kans dat ik dat in de toekomst niet meer zou snappen. Dus heb ik de naam aangepast. Builden kan met het volgende commando: ''docker build -t joplin-indexer:latest -f Dockerfile_tbv_JoplinIndexer-PythonInclPIP .'' * joplin_indexer.py \\ Deze verzorgt de indexatie van Joplin naar QDrant. Het is niet nodig om de build opnieuw uit te voeren als het script wordt gewijzigd. Hij kijkt altijd naar het bestaan van dit bestand in de datadir en gebruikt die. \\ Het was nog een heel gedoe om de vertaling van de Joplin databasestructuur naar QDrant goed te maken (zodanig dat de titel, datum en inhoud van de notitie allemaal netjes in hun eigen velden in QDrant terecht kwamen) ==== AnythingLLM / QDrant ==== Ik dacht dat je in Anything meerdere bronnen kon koppelen, maar dat is niet zo. Je kan maar 1 database toevoegen. Dus ook in QDrant kan ik maar 1 database gebruiken waarin ik vervolgens al mijn bronnen kan toevoegen. (Het is wel mogelijk om de source te specificeren, zodat je die kan herkennen in de zoekresultaten). ===== Gevolgen ===== * **Technisch:** * Impact/overwegingen/eigenschappen mbt (netwerk)configuratie, performance, beheer * **Operationeel:** * Aandachtspunten mbt beheer, onderhoud/updates, monitoring, backups * **Risico’s / aandachtspunten:** * Ik wilde alle containers aanvankelijk draaien onder user Dockeruser-apps (3031:100), maar daarmee liep ik tegen problemen aan. Uiteindelijk geen user gespecificeerd (dus draait nog onder root) * Mitigaties ===== Evaluatie ===== * **Ervaring:** * Wat werkt goed / minder goed * **Wanneer herbeoordelen:** * Concrete momenten of drempels * **Aanleiding voor herziening:** * Gebeurtenissen die aanleiding kunnen zijn voor herziening van dit besluit