Vector Database: Guía para Principiantes [2026]
Qué son las bases de datos vectoriales, por qué son esenciales para IA, y cómo elegir entre Pinecone, Chroma, Weaviate y pgvector.
Vector Database: Guía para Principiantes [2026]
TLDR: Una base de datos vectorial almacena embeddings para búsqueda por similitud semántica. Esencial para RAG, recomendaciones y búsqueda semántica. Opciones: Chroma (gratis, local), Pinecone (cloud fácil), pgvector (si ya usas Postgres).
Tabla de Contenidos
- Qué es una vector database
- Cuándo necesitas una
- Comparativa de opciones
- Tutorial con Chroma
- Tutorial con Pinecone
- Tutorial con pgvector
- FAQ
Qué es una vector database {#que-es}
Una base de datos vectorial almacena y busca vectores (embeddings) de forma eficiente.
Diferencia con SQL tradicional
| Tipo | SQL Tradicional | Vector Database |
|---|---|---|
| Búsqueda | Exacta (WHERE x = y) | Por similitud |
| Datos | Texto, números | Vectores (arrays) |
| Uso típico | CRUD, transacciones | IA, búsqueda semántica |
| Ejemplo | "Dame usuarios de Madrid" | "Encuentra textos similares a este" |
Cómo funciona
11. Texto → Embedding → Vector [0.12, -0.34, ...]22. Vector se guarda en la BD33. Query → Embedding → Buscar vectores similares44. Devolver resultados ordenados por similitud
Cuándo necesitas una {#cuando}
Casos de uso
| Caso | Descripción | Vector DB necesaria |
|---|---|---|
| RAG | Dar contexto a LLMs | ✅ Sí |
| Búsqueda semántica | Buscar por significado | ✅ Sí |
| Recomendaciones | Items similares | ✅ Sí |
| Detección duplicados | Encontrar similares | ✅ Sí |
| Clasificación | Categorizar textos | ⚠️ Opcional |
Señales de que la necesitas
- Tienes más de 10,000 documentos para buscar
- Búsqueda por keywords no funciona bien
- Construyes un sistema RAG
- Necesitas búsqueda en tiempo real con baja latencia
Comparativa de opciones {#comparativa}
Tabla comparativa
| Base de datos | Tipo | Precio | Mejor para |
|---|---|---|---|
| Chroma | Local/Cloud | Gratis | Desarrollo, proyectos pequeños |
| Pinecone | Cloud | Free tier + pago | Producción fácil |
| Weaviate | Self-hosted/Cloud | Gratis (self) | Control total |
| Qdrant | Self-hosted/Cloud | Gratis (self) | Alto rendimiento |
| pgvector | Extensión Postgres | Gratis | Ya usas Postgres |
| Milvus | Self-hosted | Gratis | Escala masiva |
Mi recomendación
- Empezando/Desarrollo: Chroma
- Producción fácil: Pinecone
- Ya tienes Postgres: pgvector
- Control total: Weaviate o Qdrant
Tutorial con Chroma {#chroma}
Chroma es la opción más fácil para empezar.
Instalación
1pip install chromadb
Uso básico
1import chromadb2from chromadb.utils import embedding_functions3 4# Crear cliente5client = chromadb.Client()6 7# Usar embeddings de OpenAI8openai_ef = embedding_functions.OpenAIEmbeddingFunction(9 api_key="sk-...",10 model_name="text-embedding-3-small"11)12 13# Crear colección14collection = client.create_collection(15 name="mis_documentos",16 embedding_function=openai_ef17)18 19# Añadir documentos20collection.add(21 documents=[22 "Python es un lenguaje de programación",23 "JavaScript se usa para desarrollo web",24 "El café es una bebida con cafeína"25 ],26 ids=["doc1", "doc2", "doc3"]27)28 29# Buscar30results = collection.query(31 query_texts=["lenguajes de programación"],32 n_results=233)34 35print(results['documents'])36# [['Python es un lenguaje de programación',37# 'JavaScript se usa para desarrollo web']]
Persistir datos
1# Cliente con persistencia2client = chromadb.PersistentClient(path="./chroma_db")3 4# Los datos se guardan automáticamente
Tutorial con Pinecone {#pinecone}
Pinecone es la opción más fácil para producción.
Configuración
1pip install pinecone-client
1from pinecone import Pinecone, ServerlessSpec2 3# Inicializar4pc = Pinecone(api_key="tu-api-key")5 6# Crear índice7pc.create_index(8 name="mi-indice",9 dimension=1536, # dimensión de text-embedding-3-small10 metric="cosine",11 spec=ServerlessSpec(12 cloud="aws",13 region="us-east-1"14 )15)16 17# Conectar al índice18index = pc.Index("mi-indice")
Insertar y buscar
1from openai import OpenAI2 3openai = OpenAI()4 5def get_embedding(text):6 response = openai.embeddings.create(7 model="text-embedding-3-small",8 input=text9 )10 return response.data[0].embedding11 12# Insertar13documents = [14 {"id": "1", "text": "Python es genial"},15 {"id": "2", "text": "JavaScript para web"},16]17 18vectors = []19for doc in documents:20 embedding = get_embedding(doc["text"])21 vectors.append({22 "id": doc["id"],23 "values": embedding,24 "metadata": {"text": doc["text"]}25 })26 27index.upsert(vectors=vectors)28 29# Buscar30query_embedding = get_embedding("programación")31results = index.query(32 vector=query_embedding,33 top_k=3,34 include_metadata=True35)36 37for match in results["matches"]:38 print(f"{match['score']:.3f}: {match['metadata']['text']}")
Tutorial con pgvector {#pgvector}
Si ya usas PostgreSQL, pgvector es ideal.
Instalación
1-- En PostgreSQL2CREATE EXTENSION vector;
Crear tabla
1CREATE TABLE documents (2 id SERIAL PRIMARY KEY,3 content TEXT,4 embedding vector(1536)5);
Insertar y buscar (Python)
1import psycopg22from openai import OpenAI3 4openai = OpenAI()5conn = psycopg2.connect("postgresql://...")6cur = conn.cursor()7 8def get_embedding(text):9 response = openai.embeddings.create(10 model="text-embedding-3-small",11 input=text12 )13 return response.data[0].embedding14 15# Insertar16text = "Python es un lenguaje de programación"17embedding = get_embedding(text)18 19cur.execute(20 "INSERT INTO documents (content, embedding) VALUES (%s, %s)",21 (text, embedding)22)23conn.commit()24 25# Buscar (similitud coseno)26query = "lenguajes de código"27query_embedding = get_embedding(query)28 29cur.execute("""30 SELECT content, 1 - (embedding <=> %s::vector) as similarity31 FROM documents32 ORDER BY embedding <=> %s::vector33 LIMIT 534""", (query_embedding, query_embedding))35 36for row in cur.fetchall():37 print(f"{row[1]:.3f}: {row[0]}")
FAQ {#faq}
¿Cuántos vectores puedo almacenar gratis?
| Servicio | Free tier |
|---|---|
| Pinecone | 100K vectores |
| Chroma | Ilimitado (local) |
| Qdrant | Ilimitado (self-hosted) |
| pgvector | Ilimitado |
¿Qué dimensión de embeddings usar?
1536 es el estándar con text-embedding-3-small de OpenAI. Usa la dimensión que devuelva tu modelo de embeddings.
¿Vector DB reemplaza a SQL?
No. Usa vector DB para búsqueda semántica y SQL para datos estructurados. Muchas apps usan ambas.
¿Cuál es más rápida?
Qdrant y Milvus son las más rápidas para grandes volúmenes. Para < 1M vectores, todas son suficientemente rápidas.
Conclusión
Las bases de datos vectoriales son esenciales para IA moderna:
- Chroma para empezar y proyectos pequeños
- Pinecone para producción sin complicaciones
- pgvector si ya tienes PostgreSQL
- Qdrant/Weaviate para control total
Recursos relacionados:
Más contenido técnico en Javadex.es
Síguenos: YouTube @JavadexAI | TikTok @javadex
Posts Relacionados
Cómo Usar Claude Code en Terminal: Tutorial Paso a Paso [2026]
Tutorial completo de Claude Code CLI. Aprende a usar el agente de código de Anthropic en terminal para automatizar desarrollo, refactoring y tareas complejas.
MCP Servers para Claude: Guía de Configuración en Español [2026]
Configura MCP Servers para Claude Code y Claude Desktop. Tutorial en español con ejemplos: filesystem, GitHub, bases de datos, APIs personalizadas.
Gemini 3 Deep Think: Cómo Usar el Modo Razonamiento de Google [2026]
Guía de Gemini 3 Deep Think, el modo de razonamiento avanzado de Google. Cómo activarlo, cuándo usarlo, comparativa con GPT-5.2 Thinking y casos de uso.
Javier Santos Criado
Consultor de IA y Automatización | Fundador de Javadex
Experto en implementación de soluciones de Inteligencia Artificial para empresas. Especializado en automatización con n8n, integración de LLMs, y desarrollo de agentes IA.
¿Quieres más contenido de IA?
Explora nuestras comparativas y guías