SQL Academy · Lektion

Vektorsökning med pgvector

Använd tillägget pgvector för att lagra embeddingar och köra approximativ närmastegrannesökning med ivfflat / HNSW.

Lektion 4 av 414 steg

Vektorsökning med pgvector är en gratis lektion i SQL Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för SQL Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i SQL Academy innehåller totalt 4 lektioner.

Vad används vektorer till?

Embeddingar kodar betydelse. Två dokument om samma ämne har liknande vektorer. Vektorsökning används för semantisk sökning, RAG (retrieval-augmented generation) och rekommendationer.

Aktivera pgvector

Tillägget finns allmänt tillgängligt (RDS, Cloud SQL och Supabase har det inbyggt):

CREATE EXTENSION vector;

Vektorkolumn

Definiera en kolumn med samma dimensionalitet som embeddingmodellen:

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.

Infoga embeddingar

Infoga vektorn som en arrayliteral:

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

Avståndsoperatorer

pgvector tillhandahåller tre:

  • <-> — euklidiskt avstånd (L2)
  • <#> — negativ inre produkt
  • <=> — cosinusavstånd (vanligast för embeddingar)

Sökning efter närmaste grannar

Hitta de dokument som ligger närmast en frågevektor:

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

IVFFlat-index

För stora datamängder kan Ni skapa ett approximativt närmaste-granne-index (ANN):

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+)

Ger i många fall bättre träffsäkerhet och svarstid än IVFFlat:

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

SET hnsw.ef_search = 100;

Filtrerad vektorsökning

Kombinera vektorbaserade och strukturerade filter:

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-mönstret

Hämta N relevanta dokument med hjälp av embeddingar och skicka dem som kontext till en LLM:

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

Hybrid sökning

Kombinera vektorbaserad och lexikal sökning (tsvector) för bästa resultat — ingen av metoderna hittar allt på egen hand:

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;

Val av dimensionalitet

Större embeddingar ger bättre precision men kräver mer lagringsutrymme och är långsammare. Många appar fungerar bra med modeller på 384–768 dimensioner. Välj en modell och håll fast vid den.

Sammanfattning

pgvector lägger till förstklassig vektorsökning i Postgres.

  • Kolumntypen vector(N)
  • IVFFlat-/HNSW-index
  • Cosinusavstånd via <=> för embeddingar
  • Hybrid sökning med FTS för bästa träffsäkerhet

Snabbkontroll

Ni söker efter semantisk likhet med OpenAI-embeddingar. Vilken pgvector-avståndsoperator brukar Ni använda?

Gratis att börja

Lär dig SQL med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
46
Lektioner
183

Vanliga frågor

Är lektionen ”Vektorsökning med pgvector” gratis?

Ja – hela texten till ”Vektorsökning med pgvector” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i SQL Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i SQL Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Vektorsökning med pgvector”?

Använd tillägget pgvector för att lagra embeddingar och köra approximativ närmastegrannesökning med ivfflat / HNSW. Ni övar på SQL Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig SQL Academy?

Du behöver inga förkunskaper. Utbildningen i SQL Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Vektorsökning med pgvector”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här SQL Academy-lektionen?

Ja. Varje SQL Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Trigramsökning (pg_trgm) för ungefärlig matchning
  2. Fulltextsökning med tsvector och GIN
  3. Geospatial indexering med PostGIS
  4. Vektorsökning med pgvector
← Tillbaka till SQL Academy