Vektorsökning med pgvector
Använd tillägget pgvector för att lagra embeddingar och köra approximativ närmastegrannesökning med ivfflat / HNSW.
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 userHybrid 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?
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
- Trigramsökning (pg_trgm) för ungefärlig matchning
- Fulltextsökning med tsvector och GIN
- Geospatial indexering med PostGIS
- Vektorsökning med pgvector