Saltar al contenido principal

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​

AlgoritmoVelocidadMemoriaPrecisiónMejor para
HNSWRápidoAlta~95%La mayoría de los casos
IVFMediaMedia~90%Gran escala
FlatLentoBaja100%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ísticaDescripción
FiltradoConsultar por metadatos
ActualizacionesModificar vectores existentes
EliminaciónEliminar vectores
NamespacesAislar datos
ReplicaciónAlta disponibilidad
ShardingEscalado 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.