SQL Academy · Lezione

Ricerca vettoriale con pgvector

Utilizzi l’estensione pgvector per memorizzare embedding ed eseguire ricerche approssimate dei vicini più prossimi con ivfflat / HNSW.

Lezione 4 di 414 passaggi

Ricerca vettoriale con pgvector è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

A cosa servono i vettori?

Gli embedding codificano il significato. Due documenti sullo stesso argomento hanno vettori simili. La ricerca vettoriale alimenta la ricerca semantica, la RAG (generazione aumentata dal recupero) e i sistemi di raccomandazione.

Abilitare pgvector

L'estensione è ampiamente disponibile (RDS, Cloud SQL e Supabase la integrano già):

CREATE EXTENSION vector;

Colonna vettoriale

Definisca una colonna con la dimensionalità del modello di embedding:

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.

Inserimento degli embedding

Inserisca il vettore come letterale di array:

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

Operatori di distanza

pgvector ne fornisce tre:

  • <-> — distanza euclidea (L2)
  • <#> — prodotto interno negativo
  • <=> — distanza coseno (la più comune per gli embedding)

Ricerca dei vicini più prossimi

Trovi i documenti più vicini a un vettore di query:

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

Indice IVFFlat

Per dataset di grandi dimensioni, crei un indice approssimato dei vicini più prossimi (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;

Indice HNSW (PG 16+)

In molti casi offre recall e latenza migliori rispetto a IVFFlat:

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

SET hnsw.ef_search = 100;

Ricerca vettoriale filtrata

Combini i filtri vettoriali e strutturati:

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.

Schema RAG

Recuperi N documenti pertinenti tramite embedding e li passi come contesto a un 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

Ricerca ibrida

Combini il vettore e la ricerca lessicale (tsvector) per ottenere i risultati migliori: nessuno dei due approcci, da solo, trova tutto:

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;

Scelta della dimensionalità

Embedding più grandi sono più accurati, ma richiedono più spazio e sono più lenti. Molte applicazioni funzionano bene con modelli da 384–768 dimensioni. Scelga un modello e lo utilizzi in modo coerente.

Riepilogo

pgvector aggiunge a Postgres una ricerca vettoriale integrata.

  • Tipo di colonna vector(N)
  • Indici IVFFlat/HNSW
  • Distanza coseno tramite <=> per gli embedding
  • Ricerca ibrida con FTS per il recall migliore

Verifica rapida

Sta effettuando una ricerca per similarità semantica usando embedding OpenAI. Quale operatore di distanza di pgvector usa normalmente?

Gratis per iniziare

Impara SQL con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
46
Lezioni
183

Domande Frequenti

La lezione «Ricerca vettoriale con pgvector» è gratuita?

Sì — il testo completo di «Ricerca vettoriale con pgvector» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Ricerca vettoriale con pgvector»?

Utilizzi l’estensione pgvector per memorizzare embedding ed eseguire ricerche approssimate dei vicini più prossimi con ivfflat / HNSW. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Ricerca vettoriale con pgvector»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Ricerca per trigrammi (pg_trgm) per il fuzzy matching
  2. Ricerca full-text con tsvector e GIN
  3. Indicizzazione geospaziale con PostGIS
  4. Ricerca vettoriale con pgvector
← Torna a SQL Academy