Pinecone, best known for its hosted vector database, has open-sourced a PostgreSQL extension. pg_pinecone is Apache-2.0, written in Rust with pgrx, and reached v0.11.0 on 26 October. The pitch: “Keep your tables and your pgvector queries, and choose an engine per table.”
Three engines, one index
- pgvector: pgvector’s own HNSW or IVFFlat index, as before.
- native (the default): “the search engine Pinecone uses at scale, in Postgres”. The docs say it uses IVF with RaBitQ binary codes, then rechecks the top matches against full vectors. It “doesn’t call Pinecone” and needs no API key or network.
- remote: moves a table’s search to a Pinecone serverless index when it outgrows one server, while Postgres keeps every row.
Every switch can be reversed with one SQL call. The native engine also applies a filter, like a tenant ID, during the search, so filtered queries still return a full set of results. That is a known weak spot of approximate indexes that filter afterwards.
There is also full-text search: pg_pinecone can keep a Pinecone index in sync with a table and run BM25, vector or hybrid queries from SQL, which uses Pinecone’s service.
Requirements
PostgreSQL 17 or 18, superuser access and pgvector on the server. That likely rules out most managed Postgres services for now. There is a Docker image, pineconeteam/pg_pinecone:0.11.0-pg17, based on the pgvector image:
CREATE EXTENSION vector;
CREATE EXTENSION pg_pinecone;
SELECT pinecone.create_index('items', 'embedding');
Pinecone has not published benchmarks against pgvector in the repository, so test recall and latency on your own data before switching.

The Campfire
CommentsThanks. Your comment is waiting for the desk. Once it is approved it appears here within about a minute.
Add a comment