Qdrant mit Docker installieren

Qdrant mit Docker installieren

Qdrant ist eine der führendsten open-source Vektor-Datenbanken für AI-Anwendungen, die speziell für die Speicherung, Suche und Verarbeitung von Embeddings optimiert ist. Sie ist skalierbar, performant und ideal für Use-Cases wie Semantic Search, Recommendation Systems oder – wie in meinem Fall – Codebase Indexing in Tools wie Kilo Code. In diesem Artikel erkläre ich nicht nur, wie du Qdrant einfach mit Docker installierst, sondern auch, warum Qdrant eine überlegene Wahl ist. Als Entwickler von Kilo Code nutze ich Qdrant selbst, um Codebases zu indexieren und ultraschnelle, semantische Suchen zu ermöglichen – und das mit beeindruckender Genauigkeit und Speed.

Warum Qdrant nutzen? – Ein tiefer Einblick

Bevor wir zur Installation kommen, lass uns verstehen, warum Qdrant eine der besten Vektor-Datenbanken ist – und warum ich sie bei Kilo Code für Codebase Indexing einsetze.

1. Hochperformant und skalierbar

Qdrant ist in Rust geschrieben, was es extrem effizient macht. Es unterstützt HNSW (Hierarchical Navigable Small World) für ANN (Approximate Nearest Neighbors) – eine Suchmethode, die bei Millionen von Vektoren (z. B. Embeddings von Code-Snippets) in Millisekunden Ergebnisse liefert. Im Vergleich zu Alternativen wie Pinecone oder Weaviate ist Qdrant kostenlos, self-hosted und skaliert horizontal auf Cluster.

Bei Kilo Code indexiere ich gesamte Codebases (z. B. Python, JS, RST-Files) als Vektoren. Qdrant erlaubt mir, Tausende von Dateien zu speichern und semantisch zu suchen – z. B. "Finde alle Odoo-Migrations-Changes für v19" – ohne dass die Performance einbricht.

2. Fortgeschrittene Features für AI & Code

  • Hybrid Search: Kombiniert Vektor-Suche mit Keyword-Filtern (z. B. site:odoo.com oder filetype:py).
  • Payload-Filtering: Jeder Vektor kann Metadata haben (z. B. "version:19", "file:models.py") – ideal für Codebase-Indexing, wo ich nach Version, Modul oder Typ filtern kann.
  • Collection-Management: Du kannst Collections (z. B. "odoo_v16_docs") dynamisch erstellen und löschen.
  • API & Dashboard: REST/gRPC-API für Integrationen + integriertes Web-Dashboard für Monitoring.

In Kilo Code nutze ich Qdrant, um Embeddings von Code + Docs zu speichern. Das ermöglicht Queries wie "Migriere v16 cr.execute auf v19" – Qdrant liefert in <50 ms relevante Snippets, die das Modell dann verarbeitet. Ohne Qdrant wäre das unmöglich.

3. Open-Source & Self-Hosted – Kein Vendor-Lock-in

Im Gegensatz zu Cloud-Lösungen (Pinecone, Vectara) ist Qdrant 100 % lokal – keine API-Keys, keine Abhängigkeiten, keine Kosten. Es läuft auf deiner Hardware und skaliert mit deinen 4× RTX 3090 (z. B. für GPU-accelerated Indexing mit Faiss-Integration).

Bei Kilo Code war das entscheidend: Ich wollte ein Tool, das offline läuft und keine Cloud braucht – Qdrant passt perfekt.

4. Sicherheit & Performance-Tuning

Qdrant hat API-Keys, TLS und Ulimits für hohe Last. Für Codebase-Indexing in Kilo Code nutze ich es, um Embeddings von 100.000+ Code-Zeilen zu handhaben – mit <1 % Fehler bei Suchen.

Kurz: Wenn du AI mit Vektoren baust (z. B. RAG für Docs oder Code), ist Qdrant die Nr. 1 Wahl – performant, flexibel und lokal.

Voraussetzungen

  • Docker + Docker Compose installiert (lokal, offline)
  • Offene Ports: 6333 (HTTP/API + Dashboard), 6334 (gRPC, optional)
  • Ein starker Key für die API (siehe unten)
  • Optional: GPU-Support für Indexing (wie deine RTX 3090)

Die docker-compose.yml

Erstelle eine docker-compose.yml mit folgendem Inhalt. Diese Config ist optimiert für Sicherheit (API-Key) und Performance (Ulimits):

YAML

version: '3.8'
services:
  qdrant:
    image: qdrant/qdrant:latest
    container_name: qdrant
    restart: always
    ports:
      - 6333:6333 # HTTP REST API + Dashboard
      - 6334:6334 # gRPC API (optional)
    volumes:
      - qdrant_storage:/qdrant/storage
    environment:
      - QDRANT__SERVICE__API_KEY=Start123! # <-- Ersetze durch einen starken Key!
    ulimits:
      nofile:
        soft: 65536
        hard: 65536 # Für bessere Performance bei großen Datasets
volumes:
  qdrant_storage:

Erklärung der wichtigsten Teile

  • qdrant/qdrant:latest: Die neueste stabile Version – immer up-to-date mit Bugfixes.
  • volumes: qdrant_storage: Persistente Speicherung deiner Collections und Embeddings – verlierst nichts bei Restart.
  • QDRANT__SERVICE__API_KEY: Aktiviert Auth – essenziell für Sicherheit. Ersetze Start123! durch etwas Sicheres (z. B. uuidgen für einen UUID).
  • ulimits: nofile 65536: Erhöht die max. offenen Files – wichtig für große Codebases wie in Kilo Code, wo ich Tausende Embeddings indexiere.
  • Ports: 6333 für die UI/API, 6334 für gRPC (nutze ich in Kilo Code für schnelle Queries).

Diese Config ist minimal, aber robust – perfekt für lokale Entwicklung oder Produktion.

Installation starten

  1. Erstelle die docker-compose.yml (kopiere den Inhalt oben).

Überprüfe den Status:Bash

docker compose logs -f

Starte die Vektor-DB:Bash

docker compose up -d

Erstelle ein Verzeichnis und wechsle hinein:Bash

mkdir qdrant && cd qdrant

Der Container lädt sich (ca. 200 MB) und startet in Sekunden. Du siehst Logs wie "Qdrant ready".

Erster Zugriff und Setup

Öffne deinen Browser und gehe zu:

http://localhost:6333/dashboard (oder deine Server-IP, z. B. http://192.168.202.5:6333/dashboard)

  • Auth: Gib deinen API-Key ein (aus der Config).
  • Dashboard: Erste Collection erstellen (z. B. "odoo_codebase" mit Dimension 768 für Code-Embeddings).

Test-API: Via curl:Bash

curl -X GET 'http://localhost:6333/collections' -H "api-key: Start123!"

→ sollte { "result": [] } oder deine Collections zeigen.

In Kilo Code integriere ich Qdrant so: Embeddings mit SentenceTransformers erzeugen, in Qdrant pushen und für semantische Suchen queryen.

Tipps für den Produktivbetrieb

  • Sicherheit: Immer API-Key nutzen. Für Multi-User: RBAC mit Qdrant Enterprise (kostenpflichtig).
  • Performance: Bei großen Codebases (wie in Kilo Code mit 100k+ Snippets) GPU-Indexing aktivieren (via Faiss-HNSW, benötigt CUDA). Deine 4× RTX 3090 sind ideal dafür – setze QDRANT__STORAGE__INDEX_TYPE: hnsw.
  • Backup: Das Volume qdrant_storage sichern: docker volume backup qdrant_storage.
  • Updates: docker compose pull && docker compose up -d – Qdrant ist rückwärtskompatibel.
  • Integration in Kilo Code: In Kilo Code nutze ich Qdrant für Codebase Indexing – Embeddings von Python/JS/RST speichern, dann Queries wie "Finde alle v16 execute()-Calls" in <50 ms. Die API ist super einfach (Python-Client: pip install qdrant-client).

Fazit

Qdrant ist nicht nur eine Vektor-DB – es ist die Zukunft für AI-gestützte Tools wie Kilo Code. Mit seiner Geschwindigkeit, Skalierbarkeit und open-source-Natur ist es die ideale Wahl für Codebase Indexing, Semantic Search und mehr. In Kilo Code ist Qdrant der Kern, der aus Tausenden Code-Zeilen in Sekunden relevante Ergebnisse macht – und das alles lokal auf deiner Hardware.