


{"id":4426,"date":"2024-12-25T00:50:51","date_gmt":"2024-12-25T00:50:51","guid":{"rendered":"https:\/\/yininit.nl\/?post_type=blossom-portfolio&#038;p=4426"},"modified":"2025-01-06T22:43:34","modified_gmt":"2025-01-06T22:43:34","slug":"kba-end-to-end-kennisbeheersysteem","status":"publish","type":"blossom-portfolio","link":"https:\/\/yininit.nl\/index.php\/portfolio\/kba-end-to-end-kennisbeheersysteem\/","title":{"rendered":"KBA: end-to-end kennisbeheersysteem"},"content":{"rendered":"\n<p>Hier is een overzicht van wat je hebt gebouwd, hoe het werkt, welke tools je hebt gebruikt, en hoe alles samenkomt om een <strong>end-to-end oplossing<\/strong> te vormen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>End-to-End Overzicht van jouw Systeem<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>1. Gebruik van Supabase<\/strong><\/h4>\n\n\n\n<p>Supabase wordt gebruikt als:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Storage voor documenten:<\/strong> Alle ge\u00fcploade bestanden worden opgeslagen in een bucket genaamd <code>documents<\/code>.<\/li>\n\n\n\n<li><strong>API-integratie:<\/strong> Via de Supabase Python SDK kunnen bestanden worden ge\u00fcpload, verwijderd en opgehaald.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>2. Functionaliteiten in je FastAPI-code<\/strong><\/h4>\n\n\n\n<p>De FastAPI-backend is opgebouwd om:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Documentbeheer:<\/strong> Bestanden uploaden, verwijderen en een lijst ophalen van opgeslagen documenten.<\/li>\n\n\n\n<li><strong>Document retrieval:<\/strong> FAISS-vectorstore gebruiken om relevante documenten op te halen op basis van een query.<\/li>\n\n\n\n<li><strong>Antwoordgeneratie:<\/strong> Gebruik van een NLP-model (BLOOMZ) om antwoorden te genereren op basis van context.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>3. Tools en Technologie\u00ebn<\/strong><\/h4>\n\n\n\n<p>Je hebt de volgende tools en technologie\u00ebn gebruikt:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Tool<\/strong><\/th><th><strong>Doel<\/strong><\/th><\/tr><\/thead><tbody><tr><td><strong>FastAPI<\/strong><\/td><td>Backend-framework voor het opzetten van API&#8217;s.<\/td><\/tr><tr><td><strong>Render<\/strong><\/td><td>Cloudplatform voor hosting van je FastAPI-backend.<\/td><\/tr><tr><td><strong>Supabase<\/strong><\/td><td>Cloudopslag voor het beheren van documenten.<\/td><\/tr><tr><td><strong>FAISS<\/strong><\/td><td>Vectorstore voor effici\u00ebnte document retrieval op basis van embeddings.<\/td><\/tr><tr><td><strong>LangChain<\/strong><\/td><td>Integratie van embeddings met FAISS en ondersteuning voor NLP-workflows.<\/td><\/tr><tr><td><strong>SentenceTransformers<\/strong><\/td><td>Genereren van embeddings voor documenten en queries.<\/td><\/tr><tr><td><strong>BLOOMZ<\/strong><\/td><td>NLP-model voor geavanceerde tekstgeneratie.<\/td><\/tr><tr><td><strong>WordPress Plugin<\/strong><\/td><td>Frontend-interface voor interactie met je FastAPI-backend.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>4. Code-Functionaliteiten<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>A. Documentbeheer (CRUD)<\/strong><\/h5>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Bestanden uploaden<\/strong>:\n<ul class=\"wp-block-list\">\n<li>WordPress-gebruikers kunnen bestanden uploaden via een formulier in jouw plugin.<\/li>\n\n\n\n<li>Deze bestanden worden doorgestuurd naar het <strong><code>\/upload\/<\/code><\/strong> endpoint van FastAPI.<\/li>\n\n\n\n<li>FastAPI uploadt de bestanden naar de Supabase bucket.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Bestanden verwijderen<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Via het <strong><code>\/documents\/<\/code><\/strong> DELETE-endpoint kun je een specifiek bestand verwijderen uit Supabase.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Lijst van bestanden ophalen<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Het <strong><code>\/documents\/<\/code><\/strong> GET-endpoint haalt de lijst met opgeslagen bestanden op uit Supabase.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>B. Document Retrieval en FAISS-vectorstore<\/strong><\/h5>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>FAISS-vectorstore opbouwen<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Bij het starten van de backend worden alle documenten uit Supabase opgehaald.<\/li>\n\n\n\n<li>Hun inhoud wordt omgezet naar embeddings met <strong>SentenceTransformers<\/strong> en opgeslagen in FAISS.<\/li>\n\n\n\n<li>Dit stelt je in staat om snel relevante documenten te zoeken op basis van een query.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Documenten zoeken<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Het <strong><code>retrieve_documents<\/code><\/strong>-proces gebruikt FAISS om de meest relevante documenten op te halen op basis van een zoekvraag.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>C. Antwoordgeneratie<\/strong><\/h5>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Prompt bouwen<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Een prompt wordt samengesteld met de context (de relevante documenten) en de vraag.<\/li>\n\n\n\n<li>De promptstructuur is zo ontworpen dat het model duidelijke en relevante antwoorden kan genereren.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Antwoord genereren<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Het <strong>BLOOMZ NLP-model<\/strong> wordt aangeroepen via Hugging Face Transformers om een tekstueel antwoord te genereren.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>D. Frontend via WordPress Plugin<\/strong><\/h5>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Uploaden en beheren van documenten<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Een WordPress-plugin biedt een eenvoudig formulier waarmee gebruikers documenten kunnen uploaden of verwijderen.<\/li>\n\n\n\n<li>De plugin communiceert via API-aanroepen met de FastAPI-backend.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>API-integratie<\/strong>:\n<ul class=\"wp-block-list\">\n<li>De plugin gebruikt de gedeployde Render-service URL om interactie te hebben met de backend.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>5. Hosting en Deployment<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>FastAPI op Render<\/strong>:\n<ul class=\"wp-block-list\">\n<li>De FastAPI-code wordt gedeployed op Render met een startcommand:bashCode kopi\u00ebren<code>uvicorn app:app --host 0.0.0.0 --port $PORT<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Supabase Configuratie<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Supabase URL<\/strong> en <strong>API Key<\/strong> worden ingesteld als omgevingsvariabelen in Render.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>WordPress Plugin<\/strong>:\n<ul class=\"wp-block-list\">\n<li>De plugin gebruikt de Render-URL om API-aanroepen te doen.<\/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>End-to-End Workflow<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Document Upload<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Een gebruiker uploadt een bestand via het WordPress-formulier.<\/li>\n\n\n\n<li>Het bestand wordt doorgestuurd naar FastAPI en opgeslagen in Supabase.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Vectorstore Update<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Wanneer nieuwe documenten worden toegevoegd, kan de FAISS-vectorstore worden ge\u00fcpdatet.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Vraag stellen en antwoord genereren<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Een gebruiker stelt een vraag via je WordPress-plugin.<\/li>\n\n\n\n<li>De vraag wordt doorgestuurd naar FastAPI.<\/li>\n\n\n\n<li>FastAPI haalt relevante documenten op uit FAISS.<\/li>\n\n\n\n<li>BLOOMZ genereert een antwoord op basis van de documenten.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Antwoord Retourneren<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Het antwoord wordt teruggestuurd naar de gebruiker en weergegeven in de WordPress-plugin.<\/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 Heb Je Gebouwd?<\/strong><\/h3>\n\n\n\n<p>Je hebt een <strong>end-to-end kennisbeheersysteem<\/strong> gebouwd met de volgende mogelijkheden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Documentopslag:<\/strong> Veilige opslag van documenten in Supabase.<\/li>\n\n\n\n<li><strong>Relevante document retrieval:<\/strong> Snelle en nauwkeurige zoekresultaten met FAISS.<\/li>\n\n\n\n<li><strong>Antwoordgeneratie:<\/strong> Intelligente antwoorden via BLOOMZ NLP-modellen.<\/li>\n\n\n\n<li><strong>Frontend integratie:<\/strong> Een gebruiksvriendelijke interface in WordPress voor interactie met de backend.<\/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>Volgende Stappen<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Testen en Optimaliseren<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Test je systeem met verschillende soorten documenten en vragen.<\/li>\n\n\n\n<li>Optimaliseer de prompt en FAISS-parameters voor nauwkeurigere antwoorden.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Beveiliging<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Overweeg aanvullende beveiligingslagen, zoals gebruikersauthenticatie in je WordPress-plugin.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Schaalbaarheid<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Monitor de prestaties van Render en Supabase bij grotere documentvolumes.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Hier is een overzicht van wat je hebt gebouwd, hoe het werkt, welke tools je hebt gebruikt, en hoe alles samenkomt om een end-to-end oplossing te vormen. End-to-End Overzicht van jouw Systeem 1. Gebruik van Supabase Supabase wordt gebruikt als: 2. Functionaliteiten in je FastAPI-code De FastAPI-backend is opgebouwd om: 3. Tools en Technologie\u00ebn Je [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"template":"","blossom_portfolio_categories":[17],"class_list":["post-4426","blossom-portfolio","type-blossom-portfolio","status-publish","hentry","blossom_portfolio_categories-kba"],"_links":{"self":[{"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/blossom-portfolio\/4426","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=4426"}],"wp:term":[{"taxonomy":"blossom_portfolio_categories","embeddable":true,"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/blossom_portfolio_categories?post=4426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}