DEV Community

Nicola Lorenzini
Nicola Lorenzini

Posted on

πŸš€ **DEV UPDATE β€” MyZubster MVP: Local AI + RAG Knowledge Pipeline**

πŸš€ DEV UPDATE β€” MyZubster MVP: Local AI + RAG Knowledge Pipeline

Oggi ho completato un nuovo step del mio progetto MyZubster MVP / N4K48: un sistema AI locale che puΓ² interrogare le osservazioni del progetto e una knowledge base versionata su GitHub.

πŸ”— Repository
https://github.com/nicolaususnicola-lgtm/myzubster-mvp

πŸ”— Commit del nuovo RAG
https://github.com/nicolaususnicola-lgtm/myzubster-mvp/commit/8da7435ddc1b9ae8b2f5c2eea5debd2df4bc5f47

Come funziona

La pipeline locale Γ¨:

Knowledge / Observations β†’ Embeddings β†’ Qdrant β†’ Retrieval β†’ Ollama β†’ Mistral β†’ risposta con fonti

Il progetto usa:

  • Ollama per eseguire i modelli AI localmente;
  • nomic-embed-text per trasformare documenti e domande in embedding;
  • Qdrant come vector database;
  • Mistral per generare la risposta finale;
  • Flask API come livello applicativo;
  • Docker Compose per orchestrare API, Qdrant, Ollama e Open WebUI.

Cosa abbiamo cambiato

Prima, ogni domanda inviata all'AI poteva causare una nuova indicizzazione delle osservazioni.

Ora abbiamo separato le due responsabilitΓ :

WRITE
create observation β†’ persist β†’ embed β†’ index in Qdrant

READ / ASK
question β†’ embed question β†’ search Qdrant β†’ retrieve context β†’ Mistral β†’ answer

Questo evita di re-indicizzare tutto a ogni domanda e rende il RAG piΓΉ vicino a una vera architettura di retrieval.

Knowledge Base

Ho aggiunto anche una knowledge base Markdown versionata direttamente nel repository:

knowledge/N4K48.md
knowledge/ROADMAP.md
knowledge/ZORGAX.md
knowledge/GALLERY.md
knowledge/PROFILE.md
knowledge/README.md

Uno script dedicato:

scripts/ingest_knowledge.py

divide i documenti in chunk, genera embedding locali e li registra in Qdrant usando ID deterministici.

Nel test attuale:

38 knowledge chunks + 4 observations = 42 vector points

Test

La suite locale Γ¨ passata:

25/25 tests βœ…

Abbiamo poi eseguito una vera richiesta RAG:

β€œQual Γ¨ lo stato del collegamento tra Nicola Comics e il Zorgax pubblico?”

Risultato:

HTTP 200 β€” 80.75 secondi

Il sistema ha recuperato informazioni dalla knowledge base e ha correttamente mantenuto un confine importante: il collegamento pubblico Zorgax end-to-end non Γ¨ ancora verificato.

Il retrieval in questo test ha selezionato due chunk di ROADMAP.md invece di ZORGAX.md: quindi il prossimo lavoro sarΓ  migliorare ranking, chunking e pertinenza delle fonti, oltre alle prestazioni del modello locale.

Evidence first

Una regola importante del progetto resta:

concept β‰  evidence

Un elemento viene dichiarato verificato solo quando esiste una prova tecnica concreta: test, commit, runtime, osservazione o altra evidenza controllabile.

Per esempio, Nicola Comics puΓ² avere una tavola nello stato NFT_CANDIDATE, ma questo non significa che sia stata mintata. Allo stesso modo, l'adapter Zorgax locale esiste, ma il collegamento con il Zorgax pubblico deve ancora essere provato end-to-end.

Next

I prossimi step sono:

better retrieval β†’ smaller/faster context β†’ Zorgax-specific retrieval β†’ public E2E verification

L'obiettivo Γ¨ costruire progressivamente un assistente MyZubster capace di lavorare sulle informazioni reali del progetto, mantenendo separate visione, storytelling e prove tecniche.

πŸ”— MyZubster MVP
https://github.com/nicolaususnicola-lgtm/myzubster-mvp

πŸ”— N4K48 knowledge
https://github.com/nicolaususnicola-lgtm/myzubster-mvp/tree/main/knowledge

πŸ”— RAG ingestion script
https://github.com/nicolaususnicola-lgtm/myzubster-mvp/blob/main/scripts/ingest_knowledge.py

MyZubster #RAG #LocalAI #Ollama #Qdrant #Mistral #AI #OpenSource #Docker #Python #N4K48 #Zorgax #DevLog

Top comments (0)