Vector store: Chroma e FAISS
Creazione e persistenza dei vector store, ricerca per similarità, recupero MMR, ricerca ibrida
Vector store: Chroma e FAISS è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Che cos'è un vector store?
Un vector store contiene i chunk sottoposti a embedding e trova quelli più simili a un vettore di query. È il motore di ricerca al centro di RAG. Due opzioni diffuse sono Chroma e FAISS.
pip install langchain-chroma faiss-cpuCreare un vector store Chroma
Chroma.from_documents crea gli embedding dei chunk e li indicizza con una sola chiamata. Passi i documenti e un oggetto per gli embedding. Chroma restituisce un vector store in cui può eseguire subito le ricerche.
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
db = Chroma.from_documents(chunks, embeddings)Salvare Chroma su disco
Passi persist_directory per salvare l'indice su disco e mantenerlo dopo il riavvio. In seguito può ricaricarlo costruendo Chroma con la stessa directory e gli stessi embedding, evitando il costo di creare nuovamente gli embedding.
db = Chroma.from_documents(
chunks, embeddings,
persist_directory="./chroma_db"
)
# Reload later
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)Ricerca per similarità
Esegua una query con similarity_search(query, k=4). Il metodo crea l'embedding della query, trova i k chunk più vicini e li restituisce come Document. k controlla quanti passaggi recuperare.
results = db.similarity_search("How do I reset my password?", k=4)
for doc in results:
print(doc.page_content[:80])Punteggi nella ricerca
Usi similarity_search_with_score per ottenere anche un punteggio di distanza per ogni risultato. Una distanza minore indica una maggiore similarità. I punteggi aiutano a filtrare le corrispondenze deboli prima di inviarle all'LLM.
pairs = db.similarity_search_with_score("password reset", k=4)
for doc, score in pairs:
print(round(score, 3), doc.page_content[:60])Presentazione di FAISS
FAISS (Facebook AI Similarity Search) è una libreria ad alte prestazioni per la ricerca vettoriale. È estremamente veloce ed efficiente in termini di memoria, ideale per grandi indici locali senza un server separato.
Creare un vector store FAISS
L'API è simile a quella di Chroma: FAISS.from_documents crea l'indice. FAISS mantiene l'indice in memoria, quindi è ottimo per ricerche con molte letture eseguite all'interno del processo.
from langchain_community.vectorstores import FAISS
db = FAISS.from_documents(chunks, embeddings)
results = db.similarity_search("refund policy", k=3)Salvare e caricare FAISS
Renda persistente un indice FAISS con save_local e lo ricarichi con load_local. Il ricaricamento richiede allow_dangerous_deserialization=True perché l'indice usa pickle.
db.save_local("faiss_index")
db = FAISS.load_local(
"faiss_index", embeddings,
allow_dangerous_deserialization=True
)Pertinenza e diversità
Una semplice ricerca per similarità può restituire quattro chunk quasi identici. A volte sono preferibili risultati diversi che coprano aspetti differenti della risposta. È qui che MMR è utile.
Recupero con MMR
Maximal Marginal Relevance (MMR) bilancia la pertinenza con la diversità, scegliendo chunk pertinenti ma non ridondanti. Usi search_type="mmr" tramite l'interfaccia del retriever.
retriever = db.as_retriever(
search_type="mmr",
search_kwargs={"k": 4, "fetch_k": 20}
)
docs = retriever.invoke("password reset")Scegliere tra Chroma e FAISS
Chroma è intuitivo, persistente e adatto a prototipi e applicazioni di piccole dimensioni. FAISS è più veloce su larga scala e ideale per la ricerca in memoria. Entrambi espongono similarity_search e as_retriever, quindi passare dall'uno all'altro è semplice.
Verifica rapida
Verifichi la sua conoscenza dei vector store.
Riepilogo: Chroma e FAISS
Ha creato vector store con Chroma.from_documents (usando persist_directory) e FAISS.from_documents, ha eseguito ricerche con similarity_search(query, k=4) e ha salvato e caricato entrambi. Ha usato as_retriever con MMR per ottenere risultati diversi e ha imparato quando scegliere ciascun vector store.
Domande Frequenti
La lezione «Vector store: Chroma e FAISS» è gratuita?
Sì — il testo completo di «Vector store: Chroma e FAISS» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Vector store: Chroma e FAISS»?
Creazione e persistenza dei vector store, ricerca per similarità, recupero MMR, ricerca ibrida Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Vector store: Chroma e FAISS»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Architettura di LangChain e LCEL
- Caricamento, suddivisione ed embedding dei documenti
- Vector store: Chroma e FAISS
- Creazione end-to-end di un sistema RAG di domande e risposte