


{"id":4468,"date":"2025-01-05T16:53:35","date_gmt":"2025-01-05T16:53:35","guid":{"rendered":"https:\/\/yininit.nl\/?post_type=blossom-portfolio&#038;p=4468"},"modified":"2025-01-05T16:53:35","modified_gmt":"2025-01-05T16:53:35","slug":"status-ckba-5-jan-2025","status":"publish","type":"blossom-portfolio","link":"https:\/\/yininit.nl\/index.php\/portfolio\/status-ckba-5-jan-2025\/","title":{"rendered":"Status CKBA &#8211; 5 jan 2025"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\"><strong>Overzicht van jouw systeem:<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Endpoints:<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong><code>\/upload<\/code><\/strong>: Voor het uploaden van documenten en toevoegen van hun inhoud aan de vectorstore.<\/li>\n\n\n\n<li><strong><code>\/answer<\/code><\/strong>: Voor het beantwoorden van vragen door relevante context op te halen uit de vectorstore en een antwoord te genereren met je model.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Vectorstore:<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong><code>SimpleVectorStore<\/code><\/strong>:\n<ul class=\"wp-block-list\">\n<li>Gebruikt voor het opslaan en ophalen van documenten op basis van semantische overeenkomsten.<\/li>\n\n\n\n<li><strong>Toevoegen<\/strong>: Teksten worden toegevoegd via <code>\/upload<\/code>.<\/li>\n\n\n\n<li><strong>Zoeken<\/strong>: Relevante teksten worden opgehaald via <code>\/answer<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>NLP-model:<\/strong>\n<ul class=\"wp-block-list\">\n<li>De <strong><code>generate_answer<\/code><\/strong>-functie in <strong><code>generation.py<\/code><\/strong>:\n<ul class=\"wp-block-list\">\n<li>Combineert de opgehaalde context met de vraag.<\/li>\n\n\n\n<li>Gebruikt een model zoals <strong>BLOOMZ<\/strong> om een antwoord te genereren.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>FastAPI-webservice:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Beheert de communicatie tussen de frontend (zoals je WordPress-plugin) en de backend.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Dummy dataset:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Je hebt een eenvoudige dataset toegevoegd aan de vectorstore om te testen.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Integratie met een frontend (plugin):<\/strong>\n<ul class=\"wp-block-list\">\n<li>Je hebt een <strong>WordPress-plugin<\/strong> gebouwd om <code>\/upload<\/code> en <code>\/answer<\/code> te gebruiken via shortcodes, wat de gebruikerservaring vereenvoudigt.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wat werkt goed in je systeem:<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Upload functionaliteit (<code>\/upload<\/code>)<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Je kunt documenten uploaden, verwerken en aan de vectorstore toevoegen.<\/li>\n\n\n\n<li>De teksten worden semantisch doorzoekbaar gemaakt.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Vraag-antwoord functionaliteit (<code>\/answer<\/code>)<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Context wordt correct opgehaald uit de vectorstore.<\/li>\n\n\n\n<li>Antwoorden worden gegenereerd op basis van context en vraag.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>End-to-end werkend RAG-systeem:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Invoer: Documenten of vragen.<\/li>\n\n\n\n<li>Verwerking: Vectorstore voor context en model voor generatie.<\/li>\n\n\n\n<li>Uitvoer: Geformuleerde antwoorden gebaseerd op de data.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Verbeterpunten en vervolgstappen:<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>1. Beveiliging en validatie<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bestandsvalidatie bij uploaden<\/strong>:<ul><li>Controleer of het bestand een tekstbestand is voordat het wordt ge\u00fcpload.<\/li><\/ul>pythonCode kopi\u00ebren<code>if file.content_type != \"text\/plain\": raise HTTPException(status_code=400, detail=\"Alleen tekstbestanden zijn toegestaan.\")<\/code><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>2. Persistentie van de vectorstore<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Momenteel:<\/strong>\n<ul class=\"wp-block-list\">\n<li>De vectorstore is tijdelijk en verliest alle gegevens bij herstarten.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Oplossing:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Gebruik een <strong>FAISS-vectorstore<\/strong> of sla de inhoud op in een bestand of database:pythonCode kopi\u00ebren<code>vectorstore.save_local(\"path\/to\/vectorstore\") vectorstore = FAISS.load_local(\"path\/to\/vectorstore\", embeddings_model)<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>3. Prestaties<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Optimaliseer voor grote datasets<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Voeg batching toe bij het toevoegen van teksten aan de vectorstore.<\/li>\n\n\n\n<li>Beperk de lengte van de context (bijvoorbeeld de top 3 resultaten).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>4. Logging en debugging<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Voeg meer gedetailleerde logs toe om fouten snel te identificeren:pythonCode kopi\u00ebren<code>import logging logging.basicConfig(level=logging.INFO) @app.post(\"\/upload\") async def upload_document(file: UploadFile = File(...)): try: logging.info(f\"Ontvangen bestand: {file.filename}\") ... except Exception as e: logging.error(f\"Fout bij upload: {str(e)}\") raise HTTPException(status_code=500, detail=f\"Fout bij uploaden: {str(e)}\")<\/code><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>5. Frontend-functionaliteit uitbreiden<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Huidige situatie<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Je kunt vragen stellen en documenten uploaden via je WordPress-plugin.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Uitbreiding<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Voeg een visuele lijst toe van ge\u00fcploade documenten.<\/li>\n\n\n\n<li>Voeg een functionaliteit toe om specifieke documenten te verwijderen of bij te werken.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Samenvatting<\/strong><\/h3>\n\n\n\n<p>Je hebt een werkend end-to-end RAG-systeem, bestaande uit:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Uploaden<\/strong>: Via <code>\/upload<\/code> worden documenten toegevoegd aan de vectorstore.<\/li>\n\n\n\n<li><strong>Vraag-antwoord<\/strong>: Via <code>\/answer<\/code> worden vragen beantwoord met behulp van context en een NLP-model.<\/li>\n\n\n\n<li><strong>Frontend<\/strong>: Via je WordPress-plugin kun je interactie hebben met de backend.<\/li>\n<\/ol>\n\n\n\n<p>Vervolgstappen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Maak je vectorstore persistent.<\/li>\n\n\n\n<li>Breid beveiliging, prestaties, en foutafhandeling uit.<\/li>\n\n\n\n<li>Voeg meer functies toe aan je WordPress-frontend.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Overzicht van jouw systeem: Wat werkt goed in je systeem: Verbeterpunten en vervolgstappen: 1. Beveiliging en validatie 2. Persistentie van de vectorstore 3. Prestaties 4. Logging en debugging 5. Frontend-functionaliteit uitbreiden Samenvatting Je hebt een werkend end-to-end RAG-systeem, bestaande uit: Vervolgstappen:<\/p>\n","protected":false},"author":1,"featured_media":0,"template":"","blossom_portfolio_categories":[30],"class_list":["post-4468","blossom-portfolio","type-blossom-portfolio","status-publish","hentry","blossom_portfolio_categories-ckba"],"_links":{"self":[{"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/blossom-portfolio\/4468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/blossom-portfolio"}],"about":[{"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/types\/blossom-portfolio"}],"author":[{"embeddable":true,"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/media?parent=4468"}],"wp:term":[{"taxonomy":"blossom_portfolio_categories","embeddable":true,"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/blossom_portfolio_categories?post=4468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}