AI Generativa · NLP

Chatbot RAG per
Knowledge Base Aziendale

Assistente conversazionale AI basato su Retrieval-Augmented Generation per rispondere a domande su documentazione interna: manuali tecnici, procedure operative, FAQ di prodotto. Risposte accurate con citazione della fonte, senza allucinazioni.

Python LangChain FAISS OpenAI Embeddings FastAPI GPT-4
91%Accuratezza risposte
1.2sTempo medio risposta
340+Documenti indicizzati
98%Citazioni corrette
Architettura del sistema RAG
📄
Documenti
PDF, DOCX, MD
✂️
Chunking
512 token, overlap 64
🧮
Embeddings
text-embedding-3-small
🗄️
FAISS Index
Vector store locale
🤖
GPT-4 + Contesto
Risposta con fonti
Esempio di interazione
Qual è la procedura per richiedere un rimborso su un ordine già spedito?
🤖
Per richiedere un rimborso su un ordine già spedito, il cliente deve:

1. Contattare il supporto entro 14 giorni dalla consegna
2. Compilare il modulo RMA dal portale clienti
3. Attendere l'approvazione (max 48h lavorative)
4. Spedire il reso con etichetta prepagata

Il rimborso viene elaborato entro 5-7 giorni dal ricevimento.
📎 Fonte: procedure_rimborsi_v3.pdf — pagg. 12-14
E se il prodotto è danneggiato?
🤖
In caso di prodotto danneggiato, la procedura è accelerata: il cliente può saltare il passaggio 2 e allegare direttamente le foto del danno nella chat di supporto. Il rimborso o la sostituzione vengono approvati entro 24h.
📎 Fonte: procedure_rimborsi_v3.pdf — pag. 18 · policy_garanzia.pdf — pag. 6

Componenti del sistema

📑 Document Loader

Ingestione multi-formato (PDF, DOCX, Markdown, HTML). Chunking intelligente con overlap per preservare il contesto tra i segmenti.

🧮 Vector Store

FAISS per ricerca vettoriale ad alta velocità. Embeddings via OpenAI text-embedding-3-small con 1536 dimensioni. Top-k retrieval con re-ranking.

🧠 LLM + Prompt Chain

GPT-4 con prompt engineering per risposte fedeli al contesto. Chain di validazione per citare sempre la fonte e segnalare quando l'informazione non è disponibile.

🔌 API & Integrazione

Backend FastAPI con WebSocket per streaming risposte. Integrabile in Slack, Teams, portali interni o widget web. Auth via API key o OAuth2.

Performance su benchmark interno

Accuratezza risposte
91%
Citazione fonte corretta
98%
Rifiuto domande fuori scope
95%
Soddisfazione utenti (test)
4.4/5
Allucinazioni rilevate
3%

Snippet chiave

from langchain.document_loaders import PyPDFDirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI

# 1. Caricamento e chunking documenti
loader = PyPDFDirectoryLoader("./docs")
documents = loader.load()
splitter = RecursiveCharacterTextSplitter(
    chunk_size=512, chunk_overlap=64,
    separators=["\n\n", "\n", ". ", " "]
)
chunks = splitter.split_documents(documents)

# 2. Embeddings + Vector Store
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = FAISS.from_documents(chunks, embeddings)
vectorstore.save_local("./faiss_index")

# 3. Retrieval chain con GPT-4
llm = ChatOpenAI(model="gpt-4", temperature=0)
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever(search_kwargs={"k": 4}),
    return_source_documents=True,
    chain_type="stuff"
)

# 4. Query
result = qa_chain({"query": "Come richiedere un rimborso?"})
print(result["result"])
for doc in result["source_documents"]:
    print(f"Fonte: {doc.metadata['source']} — pag. {doc.metadata['page']}")

Risultati e applicabilità

Il sistema raggiunge un'accuratezza del 91% su un set di 120 domande di test, con un tasso di allucinazione di appena il 3% — ottenuto grazie al prompt engineering che forza il modello a rispondere solo dal contesto fornito.

Il tempo medio di risposta di 1.2 secondi include retrieval vettoriale, re-ranking e generazione — adatto all'uso interattivo in tempo reale.

Il 98% delle risposte include la citazione corretta del documento e della pagina sorgente, rendendo verificabile ogni informazione e riducendo il rischio di affidarsi a risposte non tracciabili.

Il sistema è progettato per aziende con documentazione tecnica, commerciale o operativa dispersa su più formati. Integrabile come widget web, bot Slack/Teams, o API per applicazioni custom. Aggiornamento della knowledge base tramite semplice upload di nuovi documenti, senza necessità di re-training.

← Tutti i progetti Prossimo progetto →