Intermedio 11 minRAG

RAG locale con LM Studio: dialogare con i tuoi documenti

LM Studio include dalla versione 0.3 una funzione «Chat with Documents» che esegue un RAG completo in locale: indicizzazione, embeddings, retrieval e generazione, senza che un solo byte esca dalla tua macchina. È probabilmente la strada più rapida per passare da una chat simile a ChatGPT a un assistente che risponde basandosi sui tuoi PDF, contratti o appunti. Questa guida mostra come attivarla, cosa sa fare, quali sono i suoi limiti e quando occorre passare ad AnythingLLM o a uno stack Python.

Di Mohamed Meguedmi·Agg. 2026-08-27·Testato su Windows, macOS e Linux

#Perché LM Studio per il RAG

Fare RAG in locale significa in genere combinare quattro componenti: un parser di file, un modello di embedding, un database vettoriale e un LLM per la generazione. La maggior parte dei tutorial usa Python + LlamaIndex + ChromaDB + Ollama. È una soluzione potente, ma comporta anche quattro dipendenze, un ambiente da gestire e uno script da mantenere.

LM Studio nasconde tutto questo dietro l'icona di una graffetta. Carichi un modello di generazione (Qwen 3.5 9B, Granite 4.2 8B, Gemma 4 12B…), carichi un modello di embedding, trascini un PDF nella conversazione e poni la tua domanda. L'interfaccia si occupa del chunking, dell'indicizzazione in memoria e dell'inserimento dei passaggi pertinenti nel prompt.

Nessuna riga di codice
Tutto passa attraverso l'interfaccia grafica. È il percorso più breve tra «ho una cartella di PDF» e «ci converso».
100 % offline
Embedding, retrieval, generazione: tutto viene eseguito sulla tua GPU o CPU. Nessuna telemetria sul contenuto dei documenti.
Compatibile con OpenAI
Il server locale sulla porta 1234 rimane accessibile. Puoi utilizzare il RAG dalla GUI e collegare in parallelo uno script allo stesso modello.
i
Non è un sostituto di AnythingLLM
LM Studio gestisce il RAG « per conversazione »: trascini i documenti in una determinata chat e l'indice resta associato a quella chat. Non prevede workspace persistenti, raccolte condivise né reindicizzazione incrementale. Per una base di conoscenze stabile che interroghi ogni giorno, AnythingLLM o uno stack Python restano più adatti. Vedere la sezione di confronto più avanti.

#Prerequisiti

Il kit RAG Local

LM Studio interroga i tuoi documenti. Per passare da una prova a uno strumento affidabile, il kit RAG Local affronta ciò che fa la differenza: la suddivisione dei documenti (cap. 7), la scelta di un modello di embedding valido per il francese (cap. 8) e la valutazione delle risposte (cap. 14).

  • Spazio online a vita
  • PDF + file
  • Aggiornamenti a vita
LM Studio 0.3 o successivo
La funzione Chat with Documents è stata introdotta nella versione 0.3 e successivamente migliorata. Controlla la tua versione in Settings → About. Su un LM Studio più vecchio, aggiorna prima di procedere.
Un LLM di generazione caricato
Qwen 3.5 9B Q4_K_M (6,6 GB, contesto 256k), Granite 4.2 8B Q4_K_M (5,3 GB, 128k) o Gemma 4 12B Q4_K_M (7,6 GB, multimodale) sono buone scelte predefinite, tutti con licenza Apache 2.0. Questi modelli recenti hanno ampie finestre di contesto, ma imposta comunque il parametro Context Length in LM Studio (vedi più avanti) — altrimenti sarai limitato nel numero di passaggi che LM Studio può inserire.
Un modello di embeddings
Necessario e distinto dal LLM. nomic-embed-text-v1.5 (137M, ~80 MB in Q4) è la scelta predefinita raccomandata da LM Studio. mxbai-embed-large (335M) se hai margine disponibile. Per contenuti esclusivamente in francese, multilingual-e5-large è più pertinente.
VRAM o RAM
Calcola la dimensione del LLM + circa 200 MB per il modello di embedding + 1-2 GB per l'indice in memoria di una cartella di medie dimensioni. Su una GPU con 12 GB di VRAM, un modello 7B Q4 + nomic-embed lascia circa 5 GB per l'indice e il contesto.
Finestra di contesto ≥ 8192
Imposta il parametro Context Length del LLM ad almeno 8192, idealmente a 16384, dal pannello a destra della chat. Al di sotto di questi valori, LM Studio tronca i passaggi recuperati e la qualità della risposta peggiora.

#1. Attivare Chat with Documents

Non c'è nulla da attivare in senso stretto — è una funzionalità nativa della chat. Basta fornire un documento a una conversazione perché LM Studio avvii la pipeline RAG in background.

  1. 01
    Apri una nuova chat
    Scheda Chat nella barra laterale, poi pulsante + in alto per creare una conversazione. Verifica che un LLM sia effettivamente caricato nel menu a discesa in alto. Se non è caricato alcun modello, seleziona il tuo modello di generazione e attendi che la VRAM si riempia.
  2. 02
    Trascina il tuo file nella zona di inserimento
    Trascina e rilascia un PDF, DOCX, TXT o MD direttamente nel campo messaggio in basso. Si visualizza una miniatura sopra il campo con il nome e la dimensione del file. Puoi aggiungere più file di seguito.
  3. 03
    Poni la tua domanda
    Inserisci normalmente la tua domanda, come in una chat classica. LM Studio rileva la presenza del documento, lo suddivide in blocchi, lo codifica, cerca i passaggi pertinenti e li inserisce nel prompt — tutto in 1-5 secondi a seconda delle dimensioni.
  4. 04
    Leggi la risposta e le fonti
    Il modello risponde basandosi sui passaggi trovati. A seconda del LLM utilizzato, citerà o meno gli estratti. Per forzare la citazione, aggiungi «Cita i passaggi esatti del documento» nella tua domanda.
→
Documento breve vs documento lungo
Se il documento rientra nella finestra di contesto (tipicamente meno di 20 pagine di testo), LM Studio lo inserisce integralmente senza passare per il RAG — nessun chunking, nessun embedding, solo un lungo prompt. Oltre questo limite, passa automaticamente alla modalità RAG. Non devi modificare alcuna impostazione, ma capire questo comportamento è utile per interpretare i risultati.

#2. Il modello di embedding

Il modello di embedding è ciò che trasforma un pezzo di testo in un vettore di numeri. La qualità del retrieval — quindi la qualità finale del RAG — dipende direttamente da questo modello. Molto più che dal LLM di generazione, contrariamente a quanto si immagina all'inizio.

  1. 01
    Scarica un modello di embeddings
    Nella scheda Discover, filtra per «Text Embedding» nella colonna di sinistra. nomic-embed-text-v1.5 è proposto in posizione ben visibile — è una buona scelta predefinita. Scarica la variante Q4_K_M (~80 MB) oppure Q8_0 (~140 MB) se vuoi la massima qualità.
  2. 02
    Verifica che venga rilevato
    Settings → My Models → scheda Embeddings. Il modello deve apparire qui. Se LM Studio non lo vede in questa scheda anche se è stato scaricato, significa che non è stato riconosciuto come modello di embedding — controlla i tag Hugging Face o scaricalo di nuovo tramite Discover.
  3. 03
    Selezionalo nella chat
    Quando un documento è allegato a una chat, LM Studio mostra in fondo alla conversazione il nome del modello di embedding utilizzato. Cliccaci sopra per cambiarlo. La scelta viene salvata per ogni chat — utile per confrontare nomic e multilingual-e5 sullo stesso documento.
nomic-embed-text-v1.5
137M parametri, 768 dimensioni, contesto di 8192 token. Ottima scelta predefinita per l'inglese, discreto in francese. Consigliato da LM Studio.
mxbai-embed-large-v1
335M, 1024 dimensioni. Miglior posizionamento su MTEB in inglese, ma 3× più lento e 3× più pesante. Utile se la qualità del retrieval è il fattore limitante.
multilingual-e5-large
560M, 1024 dimensioni. La scelta migliore se i tuoi documenti sono in francese o multilingui. Richiede di anteporre « query: » alle query e « passage: » ai brani, un'operazione che LM Studio gestisce automaticamente.
bge-large-en-v1.5
335M, 1024 dimensioni. Eccellente in inglese puro, da evitare per il francese.
!
L'insidia di usare un modello di embedding inglese su testi in francese
Usare nomic-embed o bge su contenuti in francese divide la pertinenza del retrieval per un fattore compreso tra 1,5 e 2. Otterrai passaggi vagamente collegati all'argomento anziché quelli esattamente pertinenti. Se i tuoi documenti sono in francese, scegli multilingual-e5-large fin dall'inizio — il rallentamento aggiuntivo è trascurabile rispetto al guadagno in qualità.

#3. Formati e dimensioni dei file supportati

LM Studio gestisce un sottoinsieme pratico dei formati comuni. Nessun OCR sui PDF scansionati, nessun parsing di tabelle complesse, nessuna importazione diretta da un URL: bisogna conoscere questi limiti prima di aspettarsi troppo.

PDF (testo nativo)
Supportato. I PDF generati da Word, Google Docs o LaTeX funzionano bene. Dai PDF scansionati senza un livello OCR non è possibile estrarre il testo: elaborali prima con ocrmypdf o Tesseract.
DOCX
Supportato. La formattazione viene ignorata e il testo viene estratto senza struttura. Tabelle e immagini vengono perse.
TXT e MD
Supportato nativamente, è il formato ideale. Il Markdown mantiene la sua struttura (titoli, elenchi) che aiuta nel chunking.
Codice sorgente (.py, .js, .ts…)
Trattato come testo. Funziona, ma per discutere con un repository intero, preferisci Continue.dev o uno strumento pensato per il codice.
CSV, XLSX, JSON, HTML, EPUB
Nessun supporto ufficiale attualmente. Converti in TXT o MD con pandoc, csvkit o un script prima dell'import.
Dimensione massima per file
Non è stato annunciato alcun limite rigido. In pratica, considera un massimo di 50-100 MB per PDF nell'interfaccia grafica: oltre questa soglia, il chunking diventa lento e il consumo di RAM aumenta rapidamente.
Preparare file non supportati
# PDF scanné -> PDF avec couche OCR
ocrmypdf scan.pdf scan_ocr.pdf

# HTML -> Markdown propre
pandoc page.html -o page.md

# XLSX -> CSV puis -> TXT lisible
libreoffice --headless --convert-to csv data.xlsx
column -s, -t < data.csv > data.txt

# EPUB -> TXT
pandoc livre.epub -t plain -o livre.txt
→
Più file contemporaneamente
Puoi allegare fino a 5 file alla stessa chat (questo limite è cambiato nel corso delle versioni, verificalo nella tua build). Oltre questo limite, riuniscili in un unico grande file TXT tramite cat. LM Studio suddividerà l'insieme in blocchi trattandolo come un unico corpus, il che funziona bene per note Markdown o capitoli dello stesso documento.

#4. Testare con un documento reale

Il miglior test è un documento che conosci. Prendi un PDF di una ventina di pagine — un manuale utente, un rapporto, un contratto — e poni prima domande di cui conosci la risposta per calibrare la fiducia nel sistema.

Workflow tipico di validazione
# Préparer un document test
# - Un PDF de 20-50 pages avec une structure claire
# - Notez 5 faits précis présents dans le document
# - Notez 2 faits absents du document

# Dans LM Studio :
# 1. Chat -> nouvelle conversation
# 2. Charger Qwen 3.5 9B Q4_K_M (ou équivalent)
# 3. Context Length -> 16384 (panneau droit)
# 4. Drag-and-drop du PDF
# 5. Vérifier que nomic-embed (ou e5) est sélectionné
# 6. Poser les 5 questions à réponse connue
# 7. Poser les 2 questions à réponse absente

# Verdict :
# - 5/5 corrects + 2/2 "je ne trouve pas" -> RAG fiable sur ce corpus
# - Hallucinations sur les 2 absents -> baisser la température à 0.1
# - Réponses approximatives -> changer d'embeddings ou monter Top K
Temperatura bassa
Per il RAG, abbassa la temperatura a 0.1-0.3 nel pannello di destra. L'obiettivo è attenersi ai passaggi, non creare.
Prompt esplicito di sistema
« Rispondi solo a partire dagli estratti forniti. Se l'informazione non è presente, dillo chiaramente. Cita i passaggi esatti tra virgolette. » Questa semplice aggiunta riduce le allucinazioni a un terzo.
Domanda strutturata
«Qual è il periodo di preavviso? Cita la clausola esatta.» è più utile di «parlami del preavviso». La citazione costringe il modello a restare ancorato al testo.

#Limiti rispetto a AnythingLLM

LM Studio usa un RAG «usa e getta»: per singola conversazione, senza persistenza tra chat e senza regolazioni avanzate. È una scelta voluta: la funzione è pensata per una consultazione occasionale, non per una base di conoscenze. Appena vuoi di più, subentra AnythingLLM (gratuito, open source, con lo stesso approccio basato su un'interfaccia grafica).

Spazi di lavoro persistenti
AnythingLLM conserva i tuoi documenti in spazi di lavoro riutilizzabili. Indicizzi 200 PDF una sola volta e tutte le tue chat nello spazio di lavoro vi hanno accesso. LM Studio reindicizza a ogni nuova chat.
Citazioni cliccabili
AnythingLLM mostra le fonti con un link al passaggio esatto. LM Studio si limita a inserire il passaggio nel prompt — il modello può citare o no, a suo piacimento.
Impostazioni RAG accessibili
Top K, dimensione del chunk, soglia di similarità, modello di embedding: tutto è configurabile in AnythingLLM. LM Studio gestisce tutto come una scatola nera, con valori predefiniti ragionevoli.
Database vettoriali esterni
AnythingLLM si connette a ChromaDB, Qdrant, Pinecone, Weaviate. LM Studio mantiene tutto in memoria nel processo, il che lo limita a corpus modesti.
Multi-utilisateurs
AnythingLLM prevede utenti e condivisione dei workspace. LM Studio è progettato per un singolo utente.
Connettori per le fonti
AnythingLLM può acquisire contenuti da URL, Confluence, GitHub e trascrizioni di YouTube. LM Studio si limita al trascinamento dei file.
i
La scelta giusta in base all'uso
LM Studio Chat with Documents: provare un PDF, riassumere un rapporto ricevuto, porre qualche domanda su un contratto, monitorare occasionalmente gli aggiornamenti. AnythingLLM: base di conoscenze del team, assistenza clienti, documentazione di prodotto consultata ogni giorno tramite domande. Se hai dubbi, inizia con LM Studio — il passaggio ad AnythingLLM si fa in 30 minuti il giorno in cui il limite ti crea problemi.

#Quando passare a uno stack Python

Arriva un momento in cui la GUI raggiunge i suoi limiti e scrivere codice diventa più semplice che aggirarli. Ecco i segnali che dovrebbero spingerti a passare a Python + LlamaIndex (o Haystack):

Chunking che tiene conto della struttura
I tuoi documenti hanno una struttura ben definita (sezioni giuridiche, codice, articoli scientifici) che il chunking ingenuo compromette. Uno splitter che riconosce la struttura Markdown o un parser docling fa la differenza.
Ricerca ibrida
Vuoi combinare la ricerca vettoriale (semantica) e BM25 (lessicale) per non perdere i termini esatti (numeri di clausola, nomi di variabili, identificatori). Nessuna interfaccia grafica lo fa nativamente oggi.
Reranking
Aggiungi un cross-encoder (BAAI/bge-reranker-v2-m3) per riordinare i primi 20 risultati. +15% di rilevanza, ma richiede di scrivere codice.
Metadati e filtraggio
« Cerca solo nei contratti firmati nel 2024 ». Richiede metadati per chunk e un filtro durante la richiesta.
Pipeline di ingestione automatizzata
Una cartella monitorata, un cron, un webhook che riindicizza all'arrivo di ogni nuovo file. A quel punto si abbandona definitivamente l'interfaccia grafica.
Valutazione
Misurare la qualità del retrieval su 50 domande di riferimento. Senza Python, procedi alla cieca.

Buona notizia: LM Studio può rimanere come interfaccia mentre Python esegue la pipeline. Il server compatibile con OpenAI su localhost:1234 può essere utilizzato da LlamaIndex in due righe — mantieni LM Studio per la chat esplorativa e programmi la pipeline dietro l’interfaccia.

Collegare LlamaIndex a LM Studio
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.openai_like import OpenAILike

# LM Studio sert le LLM via son endpoint OpenAI-compatible
Settings.llm = OpenAILike(
    model="local-model",
    api_base="http://localhost:1234/v1",
    api_key="lm-studio",
    is_chat_model=True,
    context_window=16384,
)

# Embeddings côté Python (LM Studio peut aussi les exposer)
Settings.embed_model = HuggingFaceEmbedding("intfloat/multilingual-e5-large")

docs = SimpleDirectoryReader("./mes_documents").load_data()
index = VectorStoreIndex.from_documents(docs)
index.storage_context.persist("./storage")

qe = index.as_query_engine(similarity_top_k=5)
print(qe.query("Quelles sont les obligations du prestataire ?"))
→
Embedding anche tramite LM Studio
Dalla versione 0.3, LM Studio espone gli embedding su /v1/embeddings (endpoint compatibile con OpenAI). Puoi quindi eseguire sia il LLM sia gli embedding tramite LM Studio e usare Python solo per la pipeline. È pratico per riutilizzare la VRAM già allocata.

#Per approfondire

Chat with Documents copre l'80% delle esigenze per un uso personale o in un piccolo team. I passi successivi più logici dopo questo primo RAG:

Capire i meccanismi
La guida « RAG locale: introduzione » illustra in dettaglio chunking, embedding, retrieval e le insidie che nessuna interfaccia grafica mostra. Una lettura utile prima di modificare le impostazioni.
Scegliere un modello di embedding migliore per il francese
La guida I migliori modelli di embedding FR confronta Solon, multilingual-e5 e BGE su contenuti in lingua francese. La differenza è misurabile.
Passare alla modalità server API
La guida Trasformare LM Studio in un server API mostra come esporre l'endpoint compatibile con OpenAI per collegare LlamaIndex, Continue.dev o uno script personalizzato senza perdere la tua configurazione attuale.
Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.