LLM che consultano i tuoi documenti
RAG permette a un LLM di rispondere basandosi sui tuoi documenti: manuali, documentazione, knowledge base. Tutto in locale, senza inviare dati all'esterno.
1. Come funziona
- I documenti vengono divisi in chunk e convertiti in embedding (vettori numerici)
- Gli embedding vengono salvati in un database vettoriale
- Quando fai una domanda, i chunk più rilevanti vengono recuperati
- I chunk vengono passati come contesto al LLM che genera la risposta
2. Stack locale
- Embedding model: nomic-embed-text via Ollama
- Vector DB: ChromaDB (leggero, locale)
- LLM: Llama 3.2 via Ollama
- Framework: LangChain o LlamaIndex
3. Esempio con Python e LangChain
from langchain_community.llms import Ollama
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
# Caricare documenti
from langchain_community.document_loaders import DirectoryLoader
loader = DirectoryLoader("./docs/", glob="**/*.txt")
documents = loader.load()
# Dividere in chunk
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(documents)
# Creare vector store
embeddings = OllamaEmbeddings(model="nomic-embed-text", base_url="http://localhost:11434")
vectorstore = Chroma.from_documents(chunks, embeddings, persist_directory="./chroma_db")
# Query
llm = Ollama(model="llama3.2", base_url="http://localhost:11434")
qa = RetrievalQA.from_chain_type(llm=llm, retriever=vectorstore.as_retriever())
result = qa.invoke("Come configuro il firewall?")
4. Applicazioni pratiche
- Assistente per la documentazione interna
- Ricerca semantica su manuali tecnici
- Chatbot per FAQ basate su knowledge base
RAG locale = privacy totale + conoscenza specifica del tuo dominio, senza API cloud.