SQL Academy · Lektion

Vektorsuche mit pgvector

Verwenden Sie die Erweiterung pgvector, um Embeddings zu speichern und mit ivfflat / HNSW eine approximative Suche nach nächsten Nachbarn auszuführen.

Lektion 4 von 414 Schritte

Vektorsuche mit pgvector ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Wofür werden Vektoren verwendet?

Embeddings kodieren Bedeutung. Zwei Dokumente zum selben Thema haben ähnliche Vektoren. Vektorsuche ermöglicht semantische Suche, RAG (Retrieval-Augmented Generation) und Empfehlungen.

pgvector aktivieren

Die Erweiterung ist weit verbreitet verfügbar (RDS, Cloud SQL und Supabase unterstützen sie bereits):

CREATE EXTENSION vector;

Vektorspalte

Eine Spalte mit der Dimensionalität Ihres Embedding-Modells definieren:

CREATE TABLE docs (
  id BIGSERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  body TEXT NOT NULL,
  embedding vector(1536)
);

-- 1536 is OpenAI text-embedding-3-small dimension; varies by model.

Embeddings einfügen

Den Vektor als Array-Literal einfügen:

INSERT INTO docs (title, body, embedding)
VALUES ('SQL Course', 'Learn SQL', '[0.013, -0.024, ...]');

Distanzoperatoren

pgvector stellt drei bereit:

  • <-> — euklidische Distanz (L2)
  • <#> — negatives inneres Produkt
  • <=> — Kosinusdistanz (am häufigsten für Embeddings verwendet)

Suche nach nächsten Nachbarn

Die Dokumente finden, die einem Abfragevektor am nächsten liegen:

SELECT id, title, 1 - (embedding <=> $1) AS similarity
FROM docs
ORDER BY embedding <=> $1
LIMIT 10;

IVFFlat-Index

Für große Datenmengen einen approximativen Nearest-Neighbour-(ANN-)Index erstellen:

CREATE INDEX docs_embedding_idx
  ON docs USING IVFFLAT (embedding vector_cosine_ops)
  WITH (lists = 100);

-- Tune lists by row count: rule of thumb sqrt(N).
-- Set probes per query for accuracy:
SET ivfflat.probes = 10;

HNSW-Index (PG 16+)

In vielen Fällen bessere Trefferquote und Latenz als IVFFlat:

CREATE INDEX docs_embedding_hnsw
  ON docs USING HNSW (embedding vector_cosine_ops);

SET hnsw.ef_search = 100;

Gefilterte Vektorsuche

Vektor- und strukturierte Filter kombinieren:

SELECT id, title
FROM docs
WHERE language = 'en'
  AND created_at >= NOW() - INTERVAL '30 days'
ORDER BY embedding <=> $1
LIMIT 10;
-- For best perf, partial index on the filter.

RAG-Muster

N relevante Dokumente anhand ihres Embeddings abrufen und sie als Kontext an ein LLM übergeben:

-- 1. Embed user query
-- 2. SELECT top-N docs by cosine
-- 3. Send docs + query to LLM
-- 4. Return LLM's answer to user

Hybridsuche

Vektor- und lexikalische Suche (tsvector) für beste Ergebnisse kombinieren — allein erfasst keine der beiden alle relevanten Treffer:

SELECT id, title,
  0.6 * (1 - (embedding <=> $1)) + 0.4 * ts_rank(search_doc, $2) AS score
FROM docs
WHERE embedding <=> $1 < 0.7
   OR search_doc @@ $2
ORDER BY score DESC LIMIT 10;

Wahl der Dimensionalität

Größere Embeddings sind genauer, benötigen aber mehr Speicher und sind langsamer. Viele Anwendungen funktionieren mit Modellen mit 384–768 Dimensionen problemlos. Wählen Sie ein Modell und bleiben Sie dabei.

Zusammenfassung

pgvector erweitert Postgres um eine erstklassige Vektorsuche.

  • Spaltentyp vector(N)
  • IVFFlat-/HNSW-Indizes
  • Kosinusdistanz über <=> für Embeddings
  • Hybridsuche mit FTS für beste Trefferquote

Schnelltest

Sie suchen anhand semantischer Ähnlichkeit mit OpenAI-Embeddings. Welchen pgvector-Distanzoperator verwenden Sie normalerweise?

Kostenlos starten

Lerne SQL mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
46
Lektionen
183

Häufig gestellte Fragen

Ist die Lektion „Vektorsuche mit pgvector“ kostenlos?

Ja — der vollständige Text von „Vektorsuche mit pgvector“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Vektorsuche mit pgvector“?

Verwenden Sie die Erweiterung pgvector, um Embeddings zu speichern und mit ivfflat / HNSW eine approximative Suche nach nächsten Nachbarn auszuführen. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Vektorsuche mit pgvector“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Trigramm-Suche (pg_trgm) für unscharfe Übereinstimmungen
  2. Volltextsuche mit tsvector und GIN
  3. Geodatenindizierung mit PostGIS
  4. Vektorsuche mit pgvector
← Zurück zu SQL Academy