Status CKBA – 5 jan 2025

Overzicht van jouw systeem:

  1. Endpoints:
    • /upload: Voor het uploaden van documenten en toevoegen van hun inhoud aan de vectorstore.
    • /answer: Voor het beantwoorden van vragen door relevante context op te halen uit de vectorstore en een antwoord te genereren met je model.
  2. Vectorstore:
    • SimpleVectorStore:
      • Gebruikt voor het opslaan en ophalen van documenten op basis van semantische overeenkomsten.
      • Toevoegen: Teksten worden toegevoegd via /upload.
      • Zoeken: Relevante teksten worden opgehaald via /answer.
  3. NLP-model:
    • De generate_answer-functie in generation.py:
      • Combineert de opgehaalde context met de vraag.
      • Gebruikt een model zoals BLOOMZ om een antwoord te genereren.
  4. FastAPI-webservice:
    • Beheert de communicatie tussen de frontend (zoals je WordPress-plugin) en de backend.
  5. Dummy dataset:
    • Je hebt een eenvoudige dataset toegevoegd aan de vectorstore om te testen.
  6. Integratie met een frontend (plugin):
    • Je hebt een WordPress-plugin gebouwd om /upload en /answer te gebruiken via shortcodes, wat de gebruikerservaring vereenvoudigt.

Wat werkt goed in je systeem:

  1. Upload functionaliteit (/upload):
    • Je kunt documenten uploaden, verwerken en aan de vectorstore toevoegen.
    • De teksten worden semantisch doorzoekbaar gemaakt.
  2. Vraag-antwoord functionaliteit (/answer):
    • Context wordt correct opgehaald uit de vectorstore.
    • Antwoorden worden gegenereerd op basis van context en vraag.
  3. End-to-end werkend RAG-systeem:
    • Invoer: Documenten of vragen.
    • Verwerking: Vectorstore voor context en model voor generatie.
    • Uitvoer: Geformuleerde antwoorden gebaseerd op de data.

Verbeterpunten en vervolgstappen:

1. Beveiliging en validatie

  • Bestandsvalidatie bij uploaden:
    • Controleer of het bestand een tekstbestand is voordat het wordt geüpload.
    pythonCode kopiërenif file.content_type != "text/plain": raise HTTPException(status_code=400, detail="Alleen tekstbestanden zijn toegestaan.")

2. Persistentie van de vectorstore

  • Momenteel:
    • De vectorstore is tijdelijk en verliest alle gegevens bij herstarten.
  • Oplossing:
    • Gebruik een FAISS-vectorstore of sla de inhoud op in een bestand of database:pythonCode kopiërenvectorstore.save_local("path/to/vectorstore") vectorstore = FAISS.load_local("path/to/vectorstore", embeddings_model)

3. Prestaties

  • Optimaliseer voor grote datasets:
    • Voeg batching toe bij het toevoegen van teksten aan de vectorstore.
    • Beperk de lengte van de context (bijvoorbeeld de top 3 resultaten).

4. Logging en debugging

  • Voeg meer gedetailleerde logs toe om fouten snel te identificeren:pythonCode kopiërenimport 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)}")

5. Frontend-functionaliteit uitbreiden

  • Huidige situatie:
    • Je kunt vragen stellen en documenten uploaden via je WordPress-plugin.
  • Uitbreiding:
    • Voeg een visuele lijst toe van geüploade documenten.
    • Voeg een functionaliteit toe om specifieke documenten te verwijderen of bij te werken.

Samenvatting

Je hebt een werkend end-to-end RAG-systeem, bestaande uit:

  1. Uploaden: Via /upload worden documenten toegevoegd aan de vectorstore.
  2. Vraag-antwoord: Via /answer worden vragen beantwoord met behulp van context en een NLP-model.
  3. Frontend: Via je WordPress-plugin kun je interactie hebben met de backend.

Vervolgstappen:

  1. Maak je vectorstore persistent.
  2. Breid beveiliging, prestaties, en foutafhandeling uit.
  3. Voeg meer functies toe aan je WordPress-frontend.