Bases de datos vectoriales: buscar por significado, no por palabras
Una base de datos vectorial almacena embeddings y encuentra los más parecidos a toda velocidad: la base de RAG y la búsqueda semántica.
Qué hace una base de datos vectorial
Un modelo de embeddings convierte texto (o imágenes) en un vector: una lista larga de números que captura el significado. Una base de datos vectorial almacena muchos de estos vectores y responde a una pregunta a toda velocidad: ¿qué vectores almacenados se parecen más a un vector nuevo?
Para qué se necesita
Esa es precisamente la base de RAG (retrieval-augmented generation) y de la búsqueda semántica: en lugar de buscar palabras exactas, la base de datos encuentra fragmentos de texto con un significado parecido, aunque no coincida ninguna palabra. "¿Cómo cancelo?" encuentra entonces también un apartado que se llama "finalizar el contrato".
Bases de datos vectoriales conocidas
- pgvector: extensión para la base de datos Postgres normal, no hace falta un sistema aparte.
- Chroma: ligera, de código abierto, popular para proyectos pequeños y para empezar rápido.
- Qdrant: base de datos independiente, pensada para grandes volúmenes y para producción.
- Otros nombres conocidos: Pinecone, Weaviate, Milvus.
Cuándo NO necesitas una
Con unos pocos cientos o unos pocos miles de fragmentos de texto, suele bastar con un simple array en memoria y un cálculo sencillo de similitud; una base de datos vectorial propia solo merece la pena cuando el volumen de datos, la velocidad o los accesos simultáneos ya no lo permiten.
EJEMPLO
Ejemplo con pgvector: CREATE EXTENSION vector; CREATE TABLE docs (id bigserial PRIMARY KEY, content text, embedding vector(1024)); SELECT content FROM docs ORDER BY embedding <-> '[0.01, 0.02, ...]' LIMIT 5;
🛠️ EJERCICIO — PRUÉBALO TÚ
Comprueba, para un pequeño proyecto propio, si necesitas una base de datos vectorial o si basta con un simple array.
- Calcula aproximadamente cuántos fragmentos de texto (chunks) tiene actualmente tu base de conocimiento.
- Si son menos de unos pocos miles: prueba con un simple array en memoria con similitud coseno.
- Si ya usas Postgres: prueba en su lugar pgvector con una pequeña tabla de prueba.
- Compara el esfuerzo y el tiempo de respuesta de ambos enfoques.
✅ AUTOEVALUACIÓN
- ☐ ¿Calculaste cuántos chunks tiene tu base de conocimiento?
- ☐ ¿Probaste realmente los dos enfoques, no solo los pensaste?
- ☐ ¿Sabes ahora qué enfoque supone menos esfuerzo para tu proyecto?
QUIZ RÁPIDO
Según la regla general, ¿cuándo NO necesitas una base de datos vectorial propia?
FUENTES
- GitHub: pgvector (Postgres-Erweiterung) ↗ github.com
- Qdrant-Doku: Overview ↗ qdrant.tech
- Chroma-Doku ↗ docs.trychroma.com
- Chroma Docs: Introduction ↗ docs.trychroma.com