Vektorsøgning med pgvector
Brug pgvector-udvidelsen til at gemme embeddings og udføre omtrentlige nearest-neighbour-søgninger med ivfflat / HNSW.
Vektorsøgning med pgvector er en gratis SQL Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i SQL Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. SQL Academy-kurset indeholder 4 lektioner i alt.
Hvad bruges vektorer til?
Indlejringer koder betydning. To dokumenter om det samme emne har lignende vektorer. Vektorsøgning bruges til semantisk søgning, RAG (generering med hentning) og anbefalinger.
Aktivér pgvector
Udvidelsen er bredt tilgængelig og indbygget i RDS, Cloud SQL og Supabase:
CREATE EXTENSION vector;Vektorkolonne
Definér en kolonne med dimensionaliteten fra din model til indlejringer:
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.Indsættelse af indlejringer
Indsæt vektoren som en array-literal:
INSERT INTO docs (title, body, embedding)
VALUES ('SQL Course', 'Learn SQL', '[0.013, -0.024, ...]');Afstandsoperatorer
pgvector stiller tre til rådighed:
<->— euklidisk afstand (L2)<#>— negativt indre produkt<=>— cosinusafstand, som er mest almindelig for indlejringer
Søgning efter nærmeste naboer
Find de dokumenter, der ligger nærmest en forespørgselsvektor:
SELECT id, title, 1 - (embedding <=> $1) AS similarity
FROM docs
ORDER BY embedding <=> $1
LIMIT 10;IVFFlat-indeks
Opret et approksimeret indeks til søgning efter nærmeste naboer (ANN) for store datasæt:
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-indeks (PG 16+)
Giver i mange tilfælde bedre genfinding og latenstid end IVFFlat:
CREATE INDEX docs_embedding_hnsw
ON docs USING HNSW (embedding vector_cosine_ops);
SET hnsw.ef_search = 100;Filtreret vektorsøgning
Kombinér vektorfiltre med strukturerede filtre:
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ønster
Hent N relevante dokumenter efter deres indlejringer, og giv dem som kontekst til 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øgning
Kombinér vektorbaseret og leksikalsk søgning (tsvector) for de bedste resultater — ingen af delene kan alene finde alt:
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;Valg af dimensionalitet
Større indlejringer er mere præcise, men kræver mere lagerplads og er langsommere. Mange apps fungerer fint med modeller på 384–768 dimensioner. Vælg en model, og hold fast i den.
Opsummering
pgvector tilføjer førsteklasses vektorsøgning til Postgres.
- Kolonnetypen vector(N)
- IVFFlat- og HNSW-indekser
- Cosinusafstand via <=> til indlejringer
- Hybrid søgning med FTS for den bedste genfinding
Hurtigt tjek
Du søger efter semantisk lighed med OpenAI-indlejringer. Hvilken pgvector-afstandsoperator bruger du typisk?
Lær SQL med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 46
- Lektioner
- 183
Ofte stillede spørgsmål
Er lektionen “Vektorsøgning med pgvector” gratis?
Ja — hele teksten til “Vektorsøgning med pgvector” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af SQL Academy-kurset, skal du opgradere til CoddyKit PRO. SQL Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Vektorsøgning med pgvector”?
Brug pgvector-udvidelsen til at gemme embeddings og udføre omtrentlige nearest-neighbour-søgninger med ivfflat / HNSW. Du øver dig i SQL Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på SQL Academy?
Der kræves ingen tidligere erfaring. SQL Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Vektorsøgning med pgvector”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne SQL Academy-lektion?
Ja. Alle SQL Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Trigram-søgning (pg_trgm) til fuzzy matching
- Fuldtekstsøgning med tsvector og GIN
- Geospatial indeksering med PostGIS
- Vektorsøgning med pgvector