Guida Didattica · Percorso Python

Embeddings e Vector Database

Trasforma il significato del testo in numeri confrontabili: i mattoni fondamentali del RAG.

0 di 5 passaggi completati

01Fondamenti

Cos'è un embedding?

Nella guida sull'NLP, Bag of Words contava solo le parole. Un embedding fa qualcosa di più profondo: trasforma una frase in un vettore di numeri (visto nella guida sui fondamenti matematici) che ne cattura il significato. Frasi con significato simile avranno vettori "vicini" tra loro nello spazio.

🔢EmbeddingUn vettore di numeri (spesso centinaia) che rappresenta il significato di un testo.
📏SimilaritàUna misura di quanto due embedding (e quindi due testi) sono vicini nel significato.
🗄️Vector DatabaseUn database ottimizzato per cercare rapidamente i vettori più simili tra milioni.

Il tuo primo embedding

from sentence_transformers import SentenceTransformer

modello = SentenceTransformer("all-MiniLM-L6-v2")
embedding = modello.encode("Python è un linguaggio di programmazione")
print(embedding.shape)  # es. (384,) → un vettore di 384 numeri

02Concetti Chiave

🔢 Come nasce un embedding▶

Un modello di embedding (spesso una rete neurale addestrata su enormi quantità di testo) legge una frase e produce un vettore che "riassume" il suo significato in uno spazio matematico, in modo che concetti simili finiscano vicini.

📏 Similarità coseno▶

La misura più comune per confrontare due embedding: un valore vicino a 1 indica testi molto simili nel significato, vicino a 0 indica testi non correlati.

from sklearn.metrics.pairwise import cosine_similarity similarita = cosine_similarity([embedding_1], [embedding_2])
🗄️ Vector Database▶

Cercare "a mano" l'embedding più simile tra milioni sarebbe lentissimo. I vector database (come FAISS o Chroma) indicizzano gli embedding per trovare rapidamente i più vicini a una query.

import chromadb client = chromadb.Client() collezione = client.create_collection("documenti")
➕ Aggiungere documenti a Chroma▶

Chroma calcola automaticamente gli embedding dei testi che gli passi, e li rende ricercabili tramite similarità semantica, senza che tu debba gestire i vettori manualmente.

collezione.add( documents=["Il gatto dorme sul divano", "Python è un linguaggio"], ids=["doc1", "doc2"] )
🔍 Query per similarità▶

Invece di cercare parole esatte (come farebbe Ctrl+F), interroghi il database con una domanda in linguaggio naturale e ottieni i documenti più semanticamente rilevanti, anche se non condividono le stesse parole.

risultati = collezione.query(query_texts=["animale che riposa"], n_results=1) # trova "Il gatto dorme sul divano" anche senza parole in comune!

03Checklist Pratica

Spunta ogni passaggio man mano che lo completi: sbloccherai l'attestato di questa guida al termine.

Esempio per il punto 1

from sentence_transformers import SentenceTransformer

modello = SentenceTransformer("all-MiniLM-L6-v2")
frase = "Il corso di Python è molto pratico"
embedding = modello.encode(frase)
print(embedding.shape)
1. Genera l'embedding di una fraseUsa SentenceTransformer per calcolare l'embedding di una frase a tua scelta, come nell'esempio sopra.

Esempio per il punto 2

emb_a = modello.encode("Il gatto dorme")
emb_b = modello.encode("Il felino riposa")

from sklearn.metrics.pairwise import cosine_similarity
print(cosine_similarity([emb_a], [emb_b]))  # valore alto: significato simile
2. Confronta due frasi con la similarità cosenoCalcola la similarità tra due frasi diverse ma dal significato simile, come nell'esempio sopra.

Esempio per il punto 3

import chromadb

client = chromadb.Client()
collezione = client.create_collection("note_corso")
print(collezione.name)
3. Crea una collezione ChromaUsa chromadb.Client() e create_collection(), come nell'esempio sopra.

Esempio per il punto 4

collezione.add(
    documents=["Il gatto dorme sul divano", "Python è un linguaggio di programmazione"],
    ids=["doc1", "doc2"]
)
risultati = collezione.query(query_texts=["animale che riposa"], n_results=1)
print(risultati)
4. Aggiungi documenti e interrogali per similaritàUsa .add() e .query() come nell'esempio sopra.
5. Completa il quiz di verificaScendi in fondo alla guida e rispondi correttamente ad almeno l'80% delle domande.

04Glossario Interattivo

Tocca ogni termine per vederne la definizione.

05Quiz di Verifica

06Esercitazioni Pratiche

Esercizio 1

Il motore di ricerca semantico

Crea una collezione Chroma con 5 frasi su argomenti diversi (sport, cucina, tecnologia, ecc.). Interrogala con una domanda che non condivide parole esatte con nessuna frase, e osserva quale trova come più rilevante.

⏱ 25 minuti📦 Script + risultati della query commentati🖥️ Individuale
Esercizio 2

Matrice di similarità

Genera gli embedding di 4 frasi (2 simili tra loro, 2 diverse). Calcola la similarità coseno tra tutte le coppie e verifica che le frasi simili abbiano un valore più alto.

⏱ 20 minuti📦 Matrice di similarità stampata e commentata🖥️ Individuale
Esercizio 3

Trova l'errore: confrontare vettori di dimensioni diverse

Questo codice genera un errore: si confronta un embedding generato con un modello (dimensione 384) con uno generato da un modello diverso (dimensione 768). Spiega perché due embedding devono provenire dallo stesso modello per essere confrontati correttamente.

⏱ 10 minuti📦 Spiegazione scritta🖥️ Individuale o in coppia

🎓 Attestato di completamento

Completa tutti i 5 passaggi della checklist per sbloccare il tuo attestato in PDF.

0 / 5 passaggi completati