Passa al contenuto principale

Cos'è pgvector?

Un'estensione PostgreSQL per archiviare e cercare embedding vettoriali nativamente all'interno del tuo database esistente.

4 Personas AI Agents 6

Summary

  • pgvector è un'estensione PostgreSQL che abilita l'archiviazione vettoriale e la ricerca di similarità direttamente in Postgres, eliminando la necessità di un database vettoriale separato per la maggior parte dei casi d'uso dell'IA come la ricerca semantica, RAG e le raccomandazioni.
  • Supporta metriche di distanza multiple, due tipi di indice (HNSW e IVFFlat), ricerca filtrata e ricerca ibrida, tutto nativamente all'interno di SQL, rendendolo operativamente semplice per i team già su Postgres.
  • pgvector gestisce bene milioni di vettori, ma le prestazioni degradano su scale molto elevate; pgvectorscale e database vettoriali dedicati come Pinecone o Weaviate sono i passi successivi naturali man mano che i carichi di lavoro crescono.

pgvector è un'estensione open-source di PostgreSQL che aggiunge la capacità di archiviare, indicizzare e cercare embedding vettoriali (rappresentazioni numeriche dei dati). Porta i dati vettoriali e la ricerca di similarità nello stesso sistema che contiene i dati dell'applicazione, rendendo possibile l'alimentazione della ricerca semantica, dei consigli e della generazione aumentata dal recupero (RAG) senza fare affidamento su un database vettoriale esterno. pgvector estende Postgres per supportare questi casi d'uso basati sull'IA.

Molte applicazioni AI moderne dipendono dal recupero di dati semanticamente simili, non solo da corrispondenze esatte. pgvector consente ai team di eseguire questo tipo di recupero in fase di runtime all'interno del loro stack Postgres esistente. Ad esempio, le applicazioni spesso devono recuperare contenuti che sono contestualmente simili a una query, anche se il testo è diverso. Questo approccio è spesso definito similarità del coseno, ricerca del vicino più prossimo o ricerca basata su embedding.

Questo articolo fornisce una panoramica educativa di alto livello di pgvector piuttosto che una guida dettagliata all'implementazione.

Come funziona pgvector

pgvector aggiunge un nuovo tipo di dati a Postgres chiamato vector. Consente di archiviare embedding, rappresentazioni numeriche di testo, immagini o altri contenuti insieme ai dati relazionali senza richiedere un sistema separato. Questi embedding sono tipicamente generati da modelli di machine learning che convertono contenuti come testo o immagini in forma numerica.

A un alto livello, il processo è semplice. Gli embedding vengono archiviati nel database. Quando viene ricevuta una query, viene generato un embedding di query dall'input e pgvector restituisce i record i cui vettori sono più simili, o più vicini nel significato, a tale query. Invece di corrispondere a parole chiave, i risultati vengono recuperati in base al significato.

pgvector determina la similarità utilizzando metriche di distanza:

  • L2 (distanza euclidea): misura la distanza tra vettori, dove valori più piccoli indicano maggiore similarità
  • Similarità del coseno: misura quanto strettamente i vettori puntano nella stessa direzione, il che spesso riflette la similarità di significato
  • Prodotto interno: misura l'allineamento tra vettori ed è spesso utilizzato con embedding normalizzati

Funzionalità chiave di pgvector

pgvector include diverse funzionalità che rendono la ricerca vettoriale pratica all'interno di Postgres.

  • Indicizzazione: Sono supportati due tipi di indice: HNSW e IVFFlat. HNSW dà priorità alla velocità di query e costruisce una struttura di grafo in memoria, ma richiede più memoria. IVFFlat è più efficiente in termini di memoria e partiziona i vettori in cluster utilizzando una fase di addestramento, ma le query potrebbero essere più lente.
  • Metriche di distanza: L2, similarità del coseno e prodotto interno coprono la maggior parte dei casi d'uso basati su embedding. La distanza di Hamming supporta vettori binari e la distanza di Jaccard supporta vettori sparsi in scenari più specializzati.
  • Ricerca filtrata: La similarità vettoriale può essere combinata con filtri relazionali standard. Ad esempio, i risultati possono includere i prodotti semanticamente più simili che sono anche disponibili, all'interno di un intervallo di prezzo o in una categoria specifica.
  • Ricerca ibrida: pgvector può essere abbinato alla ricerca full-text di Postgres per combinare ricerca per parole chiave e semantica. Ciò consente ai risultati di essere sia contestualmente rilevanti che testualmente precisi in un'unica query.
  • Tipi di dati aggiuntivi: Opzioni come i tipi halfvec, sparsevec e bit aiutano a ridurre l'utilizzo della memoria quando si lavora con grandi set di dati di embedding.

Casi d'uso comuni per pgvector

pgvector è ampiamente utilizzato per alimentare funzionalità di applicazioni basate sull'IA:

Ricerca semantica e RAG

Le applicazioni possono recuperare documenti o contenuti in base al significato anziché alle parole chiave. Questo è un componente fondamentale della generazione aumentata dal recupero (RAG), in cui i grandi modelli linguistici utilizzano il contesto recuperato per generare risposte accurate e pertinenti. Poiché pgvector esegue la ricerca di similarità direttamente all'interno di Postgres, questo recupero può avvenire in tempo reale senza richiedere un sistema separato.

Sistemi di raccomandazione

Gli elementi possono essere abbinati al comportamento o alle preferenze passate per supportare le raccomandazioni. Questo pattern è comunemente utilizzato per raccomandazioni di prodotti, scoperta di contenuti e personalizzazione nelle applicazioni. pgvector rende efficiente identificare elementi correlati in base a pattern nel comportamento dell'utente o nei contenuti.

Similarità di immagini

Gli embedding di immagini possono essere archiviati e confrontati per trovare rapidamente immagini visivamente simili. Questo è ampiamente utilizzato nelle piattaforme multimediali, nell'e-commerce e negli strumenti creativi. L'archiviazione di questi embedding insieme ai dati dell'applicazione semplifica l'esecuzione di ricerche di similarità senza infrastrutture aggiuntive.

Rilevamento di anomalie

I punti anomali possono essere identificati trovando punti dati che sono distanti dai pattern tipici nello spazio vettoriale. Questo è utile per il rilevamento di frodi, il monitoraggio e il controllo qualità. pgvector lo abilita semplificando il confronto di vettori e il rilevamento di deviazioni.

Deduplicazione

Contenuti duplicati o quasi duplicati possono essere identificati, anche quando sono espressi in modo diverso o formattati in modi diversi. Questo è importante per la gestione dei contenuti, la qualità della ricerca e l'igiene dei dati. Il confronto basato sulla similarità rende possibile rilevare duplicati oltre le corrispondenze esatte.

pgvector vs. database vettoriali dedicati: quando usare ciascuno

Poiché la ricerca vettoriale diventa parte di più applicazioni, i team affrontano spesso una decisione pratica: la ricerca vettoriale dovrebbe rimanere all'interno di Postgres o è necessario un database vettoriale dedicato? La risposta dipende dalla scala, dai requisiti di prestazioni e dalla complessità operativa.

Le differenze possono essere riassunte attraverso dimensioni chiave:

Strumento

Complessità Operativa

Limite di Scalabilità

Supporto Query Ibride

Costo

Maturità dell'Ecosistema

pgvector

Più Bassa (DB Esistente)

Alto (~100M+ vettori)

Migliore (Join SQL Nativi)

Più Basso (Incluso)

Alto (Ecosistema Postgres)

Pinecone

Bassa (Serverless/SaaS)

Più Alto (Miliardi+)

Moderato (Solo Metadati)

Alto (Basato sull'uso)

Alto (Specifico per IA)

Weaviate

Moderata (Multi-modale)

Molto Alto

Alto (GraphQL/Vettore)

Moderato

Alto (Open-source)

Qdrant

Moderata (Basato su Rust)

Molto Alto

Alto (Forte filtraggio)

Moderato

In rapida crescita

pgvector è il punto di partenza naturale per i team che utilizzano già Postgres e operano al di sotto del limite di scala. Funziona bene quando la ricerca vettoriale fa parte di un flusso di lavoro applicativo esistente e i volumi di dati o le richieste di query rimangono gestibili. I database vettoriali dedicati diventano più rilevanti quando il volume delle query, i requisiti di richiamo o i carichi di lavoro multi-tenant superano ciò che Postgres può supportare in modo efficiente.

pgvectorscale

pgvectorscale è progettato per i team che desiderano estendere i propri limiti con pgvector prima di adottare un database vettoriale dedicato. Affronta le sfide di prestazioni e scalabilità che sorgono all'aumentare dei volumi di dati e delle richieste di query, in particolare per quanto riguarda la velocità di indicizzazione e la latenza delle query. Migliorando le prestazioni di pgvector su larga scala, consente ai team di continuare a utilizzare Postgres più a lungo senza riprogettare i propri sistemi. Ciò lo rende un passaggio intermedio pratico per le applicazioni che si avvicinano ai limiti di ciò che pgvector può gestire da solo.

Report

Il playbook sull'AI agentiva per l'enterprise

Limitazioni e considerazioni sulla scalabilità

pgvector è potente, ma presenta dei compromessi:

  • Le prestazioni possono degradare con conteggi di vettori molto elevati (10M+) senza ottimizzazioni o strumenti aggiuntivi
    • Gli indici HNSW consumano molta memoria e le grandi implementazioni potrebbero richiedere RAM significativa
    • Postgres non fornisce sharding integrato per i carichi di lavoro vettoriali, quindi la scalabilità orizzontale richiede strumenti esterni o un provider gestito
    • La velocità di ricerca e il richiamo comportano un compromesso reale. Il richiamo — la percentuale di risultati veramente pertinenti restituiti — richiede una configurazione deliberata per l'ottimizzazione.

Comprendere queste limitazioni aiuta a determinare quando pgvector è sufficiente e quando potrebbe essere necessaria un'infrastruttura aggiuntiva.

Iniziare con pgvector

pgvector può essere installato su macOS e sulla maggior parte delle distribuzioni Linux utilizzando gestori di pacchetti standard come Homebrew. È disponibile anche su molte piattaforme Postgres gestite, tra cui AWS RDS, Supabase, Azure Database for PostgreSQL, Google Cloud SQL e Neon.

Le istruzioni di installazione e configurazione sono disponibili nel repository GitHub ufficiale di pgvector, che include una guida passo passo mantenuta dagli autori del progetto.

I clienti Databricks che utilizzano Postgres possono anche fare riferimento alla documentazione Estensioni OLTP di Databricks per indicazioni specifiche della piattaforma.

pgvector e lo stack AI moderno

pgvector opera nello strato di serving operativo di un sistema AI, dove è necessaria una ricerca a bassa latenza al momento dell'esecuzione dell'applicazione. Viene comunemente utilizzato per supportare la ricerca semantica, le raccomandazioni e la generazione aumentata dal recupero (RAG) all'interno delle applicazioni.

Al contrario, Databricks Mosaic AI Vector Search è più adatto per carichi di lavoro AI su larga scala, elaborati in batch, dove le pipeline di dati sono gestite nel lakehouse. Questi ambienti supportano l'elaborazione centralizzata dei dati, grandi set di dati e flussi di lavoro complessi.

Questi approcci sono complementari e i team spesso li utilizzano entrambi in diversi livelli dello stack. pgvector supporta le query delle applicazioni in tempo reale, mentre piattaforme come Databricks gestiscono la preparazione dei dati su larga scala, la generazione di embedding e i flussi di lavoro guidati dai modelli.

Domande frequenti

pgvector è un database vettoriale completo?
pgvector consente a Postgres di archiviare embedding ed eseguire ricerche di similarità direttamente su tali dati. Tuttavia, non è un database vettoriale creato appositamente. I database vettoriali dedicati offrono scalabilità e ottimizzazioni delle prestazioni aggiuntive per carichi di lavoro più grandi.

Qual è la differenza tra HNSW e IVFFlat in pgvector?
HNSW è ottimizzato per prestazioni di query rapide e utilizza una struttura di grafo in memoria, che richiede più memoria. IVFFlat ha un minore impatto sulla memoria e organizza i vettori in cluster attraverso un passaggio di addestramento, ma le prestazioni possono variare a seconda del set di dati e del carico di lavoro. La scelta dipende dalla priorità: velocità o efficienza della memoria.

Quanti vettori può gestire pgvector?
pgvector può gestire tipicamente da milioni a decine di milioni di vettori, a seconda dell'hardware, della strategia di indicizzazione e dei pattern di query. Man mano che i set di dati crescono, le prestazioni potrebbero diminuire senza un'attenta ottimizzazione o strumenti aggiuntivi. Fattori come la memoria disponibile, il tipo di indice e la frequenza delle query influenzano la scalabilità.

pgvector supporta la similarità del coseno?
Sì, pgvector supporta la similarità del coseno come una delle sue metriche di distanza principali. Misura quanto strettamente due vettori puntano nella stessa direzione, il che spesso riflette la similarità semantica nelle applicazioni basate su embedding. Ciò lo rende adatto per la ricerca semantica, i sistemi di raccomandazione e l'elaborazione del linguaggio naturale.

pgvector è gratuito e open source?
Sì, pgvector è un progetto open-source rilasciato sotto una licenza permissiva. Può essere utilizzato con installazioni Postgres standard, nonché con molti servizi Postgres gestiti. Ciò lo rende un punto di partenza accessibile per aggiungere funzionalità di ricerca vettoriale.

pgvector può eseguire la ricerca ibrida?
Sì, pgvector può essere combinato con la ricerca full-text di Postgres per supportare la ricerca ibrida. Ciò consente ai risultati di bilanciare la pertinenza semantica con la corrispondenza delle parole chiave, migliorando sia l'accuratezza che l'usabilità. La ricerca ibrida è particolarmente utile in scenari come la ricerca di prodotti e la ricerca di documentazione, dove sia il significato che i termini esatti sono importanti.

Scegliere l'approccio giusto per la ricerca vettoriale

pgvector è un punto di partenza pratico per qualsiasi team che desideri aggiungere la ricerca vettoriale a un'applicazione Postgres esistente. Memorizzando gli embedding accanto ai dati relazionali e supportando la ricerca di similarità nativamente all'interno del database, elimina l'overhead operativo della gestione di un archivio vettoriale separato. Per molti carichi di lavoro — ricerca semantica, pipeline RAG, raccomandazioni e rilevamento delle anomalie — offre ciò di cui i team hanno bisogno senza richiedere un nuovo sistema.

Man mano che i volumi di dati crescono o le richieste di query aumentano, pgvector scale può estendere fino a dove i team possono arrivare prima che diventi necessario un database vettoriale dedicato. Per le organizzazioni che gestiscono carichi di lavoro AI su larga scala attraverso una piattaforma dati unificata, Databricks Mosaic AI Vector Search offre un approccio complementare progettato per lo strato del lakehouse. Insieme, questi strumenti offrono ai team la flessibilità di adattare la loro infrastruttura di ricerca vettoriale ai loro effettivi requisiti di carico di lavoro, a qualsiasi scala.

(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale

Never miss a Databricks post

Subscribe to our blog and get the latest posts delivered to your inbox