AI 모델 및 플랫폼
Pinecone, 오픈 소스 Postgres 검색 확장 기능 Pg_pinecone 출시

Pinecone은 2026년 10월 27일, Apache 2.0 라이선스로 제공되는 오픈 소스 Postgres 확장 기능 pg_pinecone을 출시했다. 이 확장 기능은 회사가 대규모로 운영한다고 밝힌 벡터 검색 엔진을 애플리케이션이 이미 저장하고 있는 pgvector 열에서 사용할 수 있게 한다. 회사가 공개한 벤치마크에서 벡터 100만 개(차원 768개)를 저장한 확장 기능의 기본 인덱스 크기는 136MB로 측정됐다. halfvec 기반 HNSW 인덱스는 2.0GB, 전체 크기 벡터 기반 인덱스는 4.1GB였다.
이번 출시는 Harshita Daddala와 Anthony Mahanna가 작성한 발표 게시물을 통해 소개됐다. 게시물에 따르면 Postgres에서 벡터 검색을 실행하는 일반적인 방법은 HNSW 같은 그래프 인덱스를 사용하는 것이다. 이런 인덱스는 성능을 유지하려면 점점 더 많은 메모리가 필요하고, 구축에 오랜 시간이 걸리며, 필터를 적용한 검색에서는 정확도가 떨어진다. 쿼리 범위가 사용자 한 명이나 테넌트 한 곳으로 한정되면 그래프 인덱스가 쿼리의 LIMIT보다 적은 행을 반환할 수도 있다. 반면 pg_pinecone은 검색 중에 필터를 적용하므로 범위가 좁더라도 결과를 온전히 반환할 수 있으며, Pinecone에 따르면 기본 엔진에서는 데이터가 Postgres 외부로 나가지 않는다.
하나의 인덱스를 뒷받침하는 세 가지 엔진
pg_pinecone은 pgvector에 이미 저장된 벡터 열을 사용한다. 애플리케이션은 기존과 같은 방식으로 Postgres에 연결해 ORDER BY embedding <=> $1 LIMIT 10 같은 동일한 SQL을 전송한다. 전체 벡터를 포함한 테이블은 기존 위치에 그대로 유지되며, Postgres가 계속 시스템 오브 레코드 역할을 한다.
각 테이블은 세 가지 엔진 중 하나를 사용한다. 기본 엔진인 네이티브 엔진은 Pinecone 계정이나 API 키, 네트워크 호출 없이 전적으로 Postgres 안에서 인덱스를 구축하고 검색한다. pgvector 엔진은 기존 pgvector 인덱스(HNSW 또는 IVFFlat)를 검색한다. 프로젝트의 GitHub 저장소에서는 이 엔진이 pgvector 인덱스가 이미 있고 필터를 사용하지 않는 테이블에 적합하다고 설명한다. 원격 엔진은 Pinecone 관리형 서비스의 서버리스 인덱스로 검색을 보내며, 단일 Postgres 서버의 처리 한계를 넘어선 테이블을 위한 것이다. pinecone.set_engine()을 한 번 호출하면 테이블의 엔진을 전환할 수 있고, 쿼리는 바꿀 필요가 없으며 모든 전환은 되돌릴 수 있다.
네이티브 엔진의 검색 방식
pgvector의 HNSW와 마찬가지로 네이티브 엔진도 근사 최근접 이웃 알고리즘을 사용하지만, 그래프 대신 유사한 벡터를 클러스터로 묶는 역파일 인덱스를 사용한다. 각 벡터는 차원당 약 1비트와 몇 개의 보정값으로 구성된 양자화 RaBitQ 코드로 저장된다. 게시물은 이 방식이 Gao와 Long의 SIGMOD 2024 연구를 바탕으로 한다고 밝혔다. 각 클러스터의 코드를 함께 묶어 저장하므로 검색 시 그래프를 따라 이동하는 대신 서로 연속된 페이지 몇 개를 읽는다.
검색은 세 단계로 진행된다. 먼저 쿼리 벡터와 각 클러스터의 중심점을 비교해 가장 가까운 클러스터를 탐색한다. 그런 다음 각 행의 RaBitQ 코드로부터 예상 거리를 계산해 가장 적합한 후보를 추린다. 마지막으로 테이블에서 후보의 전체 벡터를 가져와 순위를 다시 매긴다.
필터링은 검색 과정 안에서 이뤄진다. Pinecone에 따르면 pgvector의 HNSW는 최근접 이웃을 먼저 찾은 뒤 WHERE 절을 적용하는 후처리 필터링 방식을 사용한다. 따라서 필터 범위가 좁으면 후보 대부분이 제외되며, 반복 스캔으로 목록을 다시 채우는 과정에서 시간이 더 걸리고 relaxed_order를 사용하면 정확도도 낮아진다. 네이티브 엔진은 각 행의 코드 옆에 필터 열의 값을 저장하고, 인덱스 구축 시 값별 행 수를 집계한다. 기본적으로 행의 3% 이하에 해당하는 좁은 필터의 경우 사전 필터링을 수행한다. 모든 클러스터에서 조건에 맞는 행을 빠짐없이 검색하고 각 행의 전체 벡터를 사용해 점수를 계산하므로 결과가 정확하다. 범위가 더 넓은 필터에는 단일 단계 필터링을 적용한다. 이 방식은 가장 가까운 클러스터 중 최대 절반을 검색하면서 각 클러스터 안에서 점수를 계산하기 전에 필터를 확인한다.
새로 삽입된 항목은 가장 가까운 클러스터에 추가되어 즉시 검색할 수 있다. 클러스터 중심점은 인덱스 구축 시 정해진 위치에 그대로 유지되므로, 게시물은 테이블을 두 배로 늘리는 대량 적재와 같은 큰 변경이 발생한 뒤 REINDEX를 실행하거나 자동 유지 관리를 활성화해 클러스터를 재조정할 것을 권장한다.
Pinecone이 공개한 벤치마크
Pinecone은 벡터 100만 개로 구성된 768차원 wiki_dpr 데이터에서 전체 크기 벡터와 halfvec을 사용해 네이티브 엔진과 pgvector의 HNSW 인덱스를 비교했다. 테스트는 vCPU 16개와 RAM 128GB를 갖춘 AWS r6id.4xlarge 인스턴스에서 진행됐다. 필터를 적용하지 않은 검색의 지연 시간, 구축 시간, 인덱스 크기는 PostgreSQL 17에서 한 세션으로 측정했고, 필터 검색은 PostgreSQL 18에서 별도 세션으로 측정했으며, 메모리 제한 구성은 세 번째 세션에서 테스트했다. 지연 시간은 클라이언트 한 대를 사용하고 k=10으로 설정했을 때의 중앙값 p50으로 보고됐다. 회사는 전체 설정과 테스트 재실행 명령을 저장소의 벤치마크 하네스 README에서 확인할 수 있다고 밝혔다.
Pinecone은 벡터 100만 개를 대상으로 네이티브 인덱스 크기가 136MB라고 보고했다. 이에 비해 halfvec 기반 HNSW는 2.0GB, 전체 크기 벡터 기반 HNSW는 4.1GB였다. 필터를 적용하지 않은 검색에서 회사가 보고한 지연 시간은 재현율 0.95일 때 1.3ms로, halfvec 기반 HNSW의 1.7ms와 전체 크기 벡터 기반 HNSW의 2.7ms보다 짧았다. 재현율 0.99일 때는 2.3ms로, 각각 4.7ms와 6.7ms였다. 행의 10%와 일치하는 필터를 적용했을 때 네이티브 엔진은 단일 단계 필터링으로 12.3ms 만에 재현율 1.000에 도달했다고 Pinecone은 보고했다. 반복 스캔을 사용하는 HNSW는 5.9ms에서 재현율이 최대 0.920에 그쳤다. 필터가 1%와 일치하는 경우에는 재현율 0.981, 지연 시간 8.3ms를 기록했다고 보고했다. 보고된 인덱스 구축 시간은 네이티브 엔진이 45초였고, halfvec 기반 HNSW는 62초, 전체 크기 벡터 기반 HNSW는 79초였다.
제공 여부 및 선택 가능한 Pinecone 기능
pg_pinecone을 사용하려면 PostgreSQL 17 또는 18, 슈퍼유저 권한, 서버에 설치된 pgvector가 필요합니다. GitHub의 사전 빌드 릴리스나 Docker Hub의 pineconeteam/pg_pinecone 이미지로 설치할 수 있습니다. README에 따르면 이 이미지는 pgvector/pgvector 이미지에 pg_pinecone을 추가한 것으로, 0.11.0-pg17과 같이 PostgreSQL 메이저 버전별로 태그 하나씩 게시됩니다. 원격 엔진을 실행하려면 shared_preload_libraries를 통해 확장 프로그램도 불러와야 합니다. 설정 과정에서는 vector 및 pg_pinecone 확장 프로그램을 생성하고 pinecone.create_index() 호출로 인덱스를 구축합니다. Rust 도구 모음과 cargo-pgrx 0.19.2를 사용해 소스 코드에서 프로젝트를 빌드할 수도 있습니다.
선택 사항인 Pinecone API 키를 설정하면 원격 엔진이 백그라운드에서 임베딩을 Pinecone 인덱스에 동기화하며, 복사가 완료될 때까지 검색은 PostgreSQL에서 계속 실행됩니다. 게시물은 선택적으로 사용할 수 있는 기능 세 가지도 소개합니다. embed()를 호출하면 Pinecone의 추론 서비스를 통해 SQL에서 텍스트를 임베딩으로 변환할 수 있습니다. 이 기능은 네이티브 엔진과 원격 엔진 모두에서 작동하며, 첫 빌드에는 Pinecone 무료 요금제가 적용됩니다. BM25 전문 검색은 같은 테이블에서 벡터 검색과 함께 실행되며, SQL에서 BM25, 벡터 또는 하이브리드 쿼리를 수행할 수 있습니다. rerank()는 Pinecone의 재순위화 모델을 사용해 상위 결과의 순서를 다시 정렬합니다.
docs.pinecone.io의 문서에서는 설치, 스토리지 엔진, 엔진 전환 및 전문 검색을 다루며, 저장소에는 SQL 참조 문서, 운영자용 런북, 재해 복구 가이드가 추가되어 있습니다. Pinecone은 이번 릴리스가 프로젝트의 첫 번째 릴리스라고 설명하고, pg_pinecone을 유지 관리하며 모든 풀 리퀘스트를 검토한다고 밝혔습니다. 또한 GitHub 이슈, Discord 커뮤니티, 월간 오피스 아워를 통해 공유된 피드백을 바탕으로 공개 로드맵을 마련할 예정이라고 밝혔습니다.












