Despliega Qdrant: Vector Database para búsquedas semánticas en Kubernetes

Despliega Qdrant: Vector Database para búsquedas semánticas en Kubernetes sobre tu VPS

La inteligencia artificial generativa y las búsquedas vectoriales son tendencia en 2025. Por ello, hoy veremos cómo desplegar en Kubernetes Qdrant, una base de datos de vectores ideal para búsquedas semánticas, creación de sistemas de recomendación, chatbots y asistentes inteligentes. ¡Convierte tu servidor o VPS en un motor de IA listo para escalar!

¿Por qué Qdrant?

  • Búsqueda semántica eficiente sobre grandes volúmenes de datos vectorizados (embedding de textos, imágenes, etc.).
  • Listo para IA generativa: compatible con modelos de lenguaje y flujos semánticos.
  • Diseñado para rendimiento en cloud y despliegues on-premise.
  • API REST y gRPC sencilla para integrar con tus propios servicios y microservicios.

Arquitectura y componentes

En este proyecto despliegas Qdrant usando Kubernetes con persistencia de datos a través de volúmenes, preparado para exponer su API y gestionar alta disponibilidad. Así, tus datos sobreviven a reinicios de pods y se escalan con el clúster.

Desglose

  • Deployment de Qdrant con almacenamiento persistente.
  • Service de tipo NodePort para acceso sencillo a la API desde el exterior (puedes adaptarlo a Ingress si tienes configuración extra).
  • PersistentVolumeClaim para almacenar los datos.

Ficheros YAML completos

1. PersistentVolume (ajústalo según tu entorno VPS)

apiVersion: v1
kind: PersistentVolume
metadata:
  name: qdrant-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/qdrant-data"

2. PersistentVolumeClaim

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: qdrant-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

3. Qdrant Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: qdrant
spec:
  replicas: 1
  selector:
    matchLabels:
      app: qdrant
  template:
    metadata:
      labels:
        app: qdrant
    spec:
      containers:
        - name: qdrant
          image: qdrant/qdrant:latest
          ports:
            - containerPort: 6333 # REST API
            - containerPort: 6334 # gRPC API
          volumeMounts:
            - name: qdrant-storage
              mountPath: /qdrant/storage
      volumes:
        - name: qdrant-storage
          persistentVolumeClaim:
            claimName: qdrant-pvc

4. Service (NodePort para acceso desde fuera del clúster)

apiVersion: v1
kind: Service
metadata:
  name: qdrant-service
spec:
  type: NodePort
  selector:
    app: qdrant
  ports:
    - name: rest
      port: 6333
      targetPort: 6333
      nodePort: 30633
    - name: grpc
      port: 6334
      targetPort: 6334
      nodePort: 30634

Desplegando el proyecto

  1. Crea el directorio de persistencia en tu VPS: sudo mkdir -p /mnt/qdrant-data && sudo chown 1000:1000 /mnt/qdrant-data
  2. Aplica los manifiestos en orden con kubectl apply -f nombre-del-fichero.yaml
  3. Accede a Qdrant en http://IP_DE_TU_VPS:30633 o usa el puerto correspondiente para gRPC.

Ejemplo de consulta rápida con curl

curl http://IP_DE_TU_VPS:30633/collections

¿Y ahora qué puedo hacer?

  • Almacenar y consultar embeddings para sistemas de recomendación, chatbots semánticos y búsqueda por similitud.
  • Integrar Qdrant con frameworks de IA como Langchain, Haystack o tu propio backend.
  • Escalar a alta disponibilidad añadiendo réplicas y configuración de clúster.

Consejos extra y troubleshooting

  • ¿No puedes acceder desde fuera? Revisa tu firewall/puertos y las reglas de tu VPS para los puertos 30633 y 30634.
  • Si tu entorno es productivo, usa StorageClass y volúmenes dinámicos en vez de hostPath.
  • Consulta la documentación oficial de Qdrant para explorar funcionalidades avanzadas como snapshots, shards y más.

¡Y listo! Ahora tienes tu propio motor vectorial de búsquedas semánticas en Kubernetes, capaz de potenciar servicios modernos de IA y búsquedas inteligentes directamente desde tu VPS.

Avatar

Por Mid