Inicio/Blog/Vector Database: Guía para Principiantes [2026]
Volver al Blog
IA2 de febrero de 202614 min

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

  1. Qué es una vector database
  2. Cuándo necesitas una
  3. Comparativa de opciones
  4. Tutorial con Chroma
  5. Tutorial con Pinecone
  6. Tutorial con pgvector
  7. 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

TipoSQL TradicionalVector Database
BúsquedaExacta (WHERE x = y)Por similitud
DatosTexto, númerosVectores (arrays)
Uso típicoCRUD, transaccionesIA, búsqueda semántica
Ejemplo"Dame usuarios de Madrid""Encuentra textos similares a este"

Cómo funciona

code
11. Texto → Embedding → Vector [0.12, -0.34, ...]
22. Vector se guarda en la BD
33. Query → Embedding → Buscar vectores similares
44. Devolver resultados ordenados por similitud


Cuándo necesitas una {#cuando}

Casos de uso

CasoDescripciónVector DB necesaria
RAGDar contexto a LLMs✅ Sí
Búsqueda semánticaBuscar por significado✅ Sí
RecomendacionesItems similares✅ Sí
Detección duplicadosEncontrar similares✅ Sí
ClasificaciónCategorizar textos⚠️ Opcional

Señales de que la necesitas

  1. Tienes más de 10,000 documentos para buscar
  2. Búsqueda por keywords no funciona bien
  3. Construyes un sistema RAG
  4. Necesitas búsqueda en tiempo real con baja latencia


Comparativa de opciones {#comparativa}

Tabla comparativa

Base de datosTipoPrecioMejor para
ChromaLocal/CloudGratisDesarrollo, proyectos pequeños
PineconeCloudFree tier + pagoProducción fácil
WeaviateSelf-hosted/CloudGratis (self)Control total
QdrantSelf-hosted/CloudGratis (self)Alto rendimiento
pgvectorExtensión PostgresGratisYa usas Postgres
MilvusSelf-hostedGratisEscala 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

bash
1pip install chromadb

Uso básico

python
1import chromadb
2from chromadb.utils import embedding_functions
3 
4# Crear cliente
5client = chromadb.Client()
6 
7# Usar embeddings de OpenAI
8openai_ef = embedding_functions.OpenAIEmbeddingFunction(
9 api_key="sk-...",
10 model_name="text-embedding-3-small"
11)
12 
13# Crear colección
14collection = client.create_collection(
15 name="mis_documentos",
16 embedding_function=openai_ef
17)
18 
19# Añadir documentos
20collection.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# Buscar
30results = collection.query(
31 query_texts=["lenguajes de programación"],
32 n_results=2
33)
34 
35print(results['documents'])
36# [['Python es un lenguaje de programación',
37# 'JavaScript se usa para desarrollo web']]

Persistir datos

python
1# Cliente con persistencia
2client = 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

bash
1pip install pinecone-client

python
1from pinecone import Pinecone, ServerlessSpec
2 
3# Inicializar
4pc = Pinecone(api_key="tu-api-key")
5 
6# Crear índice
7pc.create_index(
8 name="mi-indice",
9 dimension=1536, # dimensión de text-embedding-3-small
10 metric="cosine",
11 spec=ServerlessSpec(
12 cloud="aws",
13 region="us-east-1"
14 )
15)
16 
17# Conectar al índice
18index = pc.Index("mi-indice")

Insertar y buscar

python
1from openai import OpenAI
2 
3openai = OpenAI()
4 
5def get_embedding(text):
6 response = openai.embeddings.create(
7 model="text-embedding-3-small",
8 input=text
9 )
10 return response.data[0].embedding
11 
12# Insertar
13documents = [
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# Buscar
30query_embedding = get_embedding("programación")
31results = index.query(
32 vector=query_embedding,
33 top_k=3,
34 include_metadata=True
35)
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

sql
1-- En PostgreSQL
2CREATE EXTENSION vector;

Crear tabla

sql
1CREATE TABLE documents (
2 id SERIAL PRIMARY KEY,
3 content TEXT,
4 embedding vector(1536)
5);

Insertar y buscar (Python)

python
1import psycopg2
2from openai import OpenAI
3 
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=text
12 )
13 return response.data[0].embedding
14 
15# Insertar
16text = "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 similarity
31 FROM documents
32 ORDER BY embedding <=> %s::vector
33 LIMIT 5
34""", (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?

ServicioFree tier
Pinecone100K vectores
ChromaIlimitado (local)
QdrantIlimitado (self-hosted)
pgvectorIlimitado

¿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:

  1. Chroma para empezar y proyectos pequeños
  2. Pinecone para producción sin complicaciones
  3. pgvector si ya tienes PostgreSQL
  4. Qdrant/Weaviate para control total

Recursos relacionados:


Más contenido técnico en Javadex.es

Síguenos: YouTube @JavadexAI | TikTok @javadex

Posts Relacionados

JS

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