Capítulo 1: Introducción a los Almacenes Vectoriales
¿Qué hace especiales a las bases de datos vectoriales?
Las bases de datos tradicionales están optimizadas para coincidencias exactas:
SELECT * FROM products WHERE id = 123;
Las bases de datos vectoriales están optimizadas para búsquedas por similitud:
# Encontrar los 10 vectores más similares a query_vector
results = vector_db.search(query_vector, top_k=10)
Algoritmos de indexación
HNSW (Hierarchical Navigable Small World)
El algoritmo más popular para búsqueda vectorial:
# Parámetros de HNSW
index = create_hnsw_index(
vectors=embeddings,
M=16, # Número de conexiones por nodo
ef_construction=200, # Calidad en tiempo de construcción
ef_search=50 # Calidad en tiempo de consulta
)
Características:
- Excelente velocidad de consulta
- Alto uso de memoria
- El mejor para la mayoría de los casos
IVF (Inverted File Index)
Agrupa vectores para búsquedas más rápidas:
# Parámetros de IVF
index = create_ivf_index(
vectors=embeddings,
nlist=100, # Número de clústeres
nprobe=10 # Clústeres a consultar
)
Características:
- Menor uso de memoria que HNSW
- Requiere entrenamiento
- Bueno para conjuntos de datos grandes
Flat Index
Búsqueda exacta por fuerza bruta:
# Sin parámetros - búsqueda exacta
index = create_flat_index(vectors=embeddings)
Características:
- Precisión perfecta
- Búsqueda más lenta
- Bueno para conjuntos de datos pequeños
Comparación de algoritmos
| Algoritmo | Velocidad | Memoria | Precisión | Mejor para |
|---|---|---|---|---|
| HNSW | Rápido | Alta | ~95% | La mayoría de los casos |
| IVF | Media | Media | ~90% | Gran escala |
| Flat | Lento | Baja | 100% | Conjuntos de datos pequeños |
Almacenamiento de metadatos
Las bases de datos vectoriales almacenan metadatos junto con los vectores:
vectorstore.add(
vectors=[embedding],
documents=["Documento de política de la empresa"],
metadata=[{
"source": "handbook.pdf",
"page": 15,
"department": "HR",
"date": "2024-01-15"
}]
)
# Filtrar por metadatos durante la búsqueda
results = vectorstore.search(
query_vector,
filter={"department": "HR"},
top_k=5
)
Características clave a considerar
| Característica | Descripción |
|---|---|
| Filtrado | Consultar por metadatos |
| Actualizaciones | Modificar vectores existentes |
| Eliminación | Eliminar vectores |
| Namespaces | Aislar datos |
| Replicación | Alta disponibilidad |
| Sharding | Escalado horizontal |
Resumen
- Las bases de datos vectoriales permiten la búsqueda por similitud
- HNSW es el algoritmo más común
- El filtrado por metadatos es esencial para producción
- Elija según la escala y los requisitos
Próximos pasos
Continúe con Capítulo 2: Opciones Populares.