Almacenes vectoriales: Chroma y FAISS
Creación y persistencia de almacenes vectoriales, búsqueda por similitud, recuperación MMR y búsqueda híbrida.
Almacenes vectoriales: Chroma y FAISS es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué es un almacén vectorial?
Un almacén vectorial contiene sus fragmentos convertidos en embeddings y encuentra los más similares a un vector de consulta. Es el motor de búsqueda en el núcleo de RAG. Dos opciones populares son Chroma y FAISS.
pip install langchain-chroma faiss-cpuCrear un almacén de Chroma
Chroma.from_documents genera los embeddings de sus fragmentos y los indexa en una sola llamada. Pase los documentos y un objeto de embeddings. Chroma devuelve un almacén en el que puede buscar inmediatamente.
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
db = Chroma.from_documents(chunks, embeddings)Persistir Chroma en disco
Pase persist_directory para que el índice se guarde en disco y sobreviva a los reinicios. Vuelva a cargarlo más adelante construyendo Chroma con el mismo directorio y los mismos embeddings, evitando el coste de generarlos de nuevo.
db = Chroma.from_documents(
chunks, embeddings,
persist_directory="./chroma_db"
)
# Reload later
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)Búsqueda por similitud
Realice consultas con similarity_search(query, k=4). Genera el embedding de la consulta, encuentra los k fragmentos más cercanos y los devuelve como Documents. k controla cuántos pasajes se recuperan.
results = db.similarity_search("How do I reset my password?", k=4)
for doc in results:
print(doc.page_content[:80])Puntuaciones de la búsqueda
Use similarity_search_with_score para obtener también una puntuación de distancia por cada resultado. Una distancia menor significa una mayor similitud. Las puntuaciones le ayudan a filtrar las coincidencias débiles antes de enviarlas al LLM.
pairs = db.similarity_search_with_score("password reset", k=4)
for doc, score in pairs:
print(round(score, 3), doc.page_content[:60])Presentación de FAISS
FAISS (Facebook AI Similarity Search) es una biblioteca de alto rendimiento para búsquedas vectoriales. Es extremadamente rápida y eficiente en el uso de memoria, ideal para índices locales grandes sin un servidor independiente.
Crear un almacén de FAISS
La API refleja la de Chroma: FAISS.from_documents crea el índice. FAISS mantiene el índice en memoria, por lo que es excelente para búsquedas intensivas en lectura dentro del proceso.
from langchain_community.vectorstores import FAISS
db = FAISS.from_documents(chunks, embeddings)
results = db.similarity_search("refund policy", k=3)Guardar y cargar FAISS
Persista un índice de FAISS con save_local y vuelva a cargarlo con load_local. La recarga requiere allow_dangerous_deserialization=True porque el índice utiliza pickle.
db.save_local("faiss_index")
db = FAISS.load_local(
"faiss_index", embeddings,
allow_dangerous_deserialization=True
)Relevancia frente a diversidad
Una búsqueda simple por similitud puede devolver cuatro fragmentos prácticamente idénticos. A veces necesita resultados diversos que cubran distintos aspectos de la respuesta. Ahí es donde MMR resulta útil.
Recuperación MMR
Maximal Marginal Relevance (MMR) equilibra la relevancia y la diversidad, seleccionando fragmentos relevantes pero no redundantes. Use search_type="mmr" mediante la interfaz del recuperador.
retriever = db.as_retriever(
search_type="mmr",
search_kwargs={"k": 4, "fetch_k": 20}
)
docs = retriever.invoke("password reset")Elegir entre Chroma y FAISS
Chroma es fácil de usar, persistente y adecuado para prototipos y aplicaciones pequeñas. FAISS es más rápido a gran escala e ideal para búsquedas en memoria. Ambos ofrecen similarity_search y as_retriever, por lo que cambiar de uno a otro es sencillo.
Comprobación rápida
Compruebe sus conocimientos sobre almacenes vectoriales.
Repaso: Chroma y FAISS
Creó almacenes vectoriales con Chroma.from_documents (usando persist_directory) y FAISS.from_documents, realizó búsquedas con similarity_search(query, k=4) y guardó y cargó ambos. Usó as_retriever con MMR para obtener resultados diversos y aprendió cuándo elegir cada almacén.
Preguntas frecuentes
¿La lección «Almacenes vectoriales: Chroma y FAISS» es gratis?
Sí — el texto completo de «Almacenes vectoriales: Chroma y FAISS» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Almacenes vectoriales: Chroma y FAISS»?
Creación y persistencia de almacenes vectoriales, búsqueda por similitud, recuperación MMR y búsqueda híbrida. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Almacenes vectoriales: Chroma y FAISS»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Arquitectura de LangChain y LCEL
- Carga, división y embedding de documentos
- Almacenes vectoriales: Chroma y FAISS
- Construcción integral de un sistema de preguntas y respuestas RAG