PostgreSQL FTS: 간단한 최적화로 50배 속도 향상

2025-04-09
PostgreSQL FTS: 간단한 최적화로 50배 속도 향상

최근 Neon의 벤치마크에서 PostgreSQL의 내장 전문 검색(FTS)이 pg_search보다 느리다는 결과가 나왔습니다. 하지만 이 글에서는 Neon의 벤치마크가 최적화되지 않은 표준 FTS 설정을 사용했음을 밝힙니다. `tsvector` 열을 미리 계산하여 저장하고 `fastupdate=off`로 GIN 인덱스를 설정하면 극적인 성능 향상을 얻을 수 있습니다. 1000만 행 데이터셋 실험에서 약 50배의 속도 향상을 보였으며, 이는 적절히 최적화된 표준 FTS가 전용 검색 엔진에 필적함을 증명합니다. 이 글에서는 순위 지정 작업에서 뛰어난 성능을 보이는 BM25 기반 확장 기능인 VectorChord-BM25에 대해서도 논의합니다.

더 보기
개발

VectorChord-BM25: PostgreSQL 전체 텍스트 검색 향상

2025-03-03
VectorChord-BM25: PostgreSQL 전체 텍스트 검색 향상

VectorChord-BM25는 BM25 알고리즘과 Block WeakAnd 알고리즘을 활용하여 PostgreSQL의 전체 텍스트 검색 속도와 정확도를 크게 향상시키는 새로운 PostgreSQL 확장 기능입니다. 검색 프로세스를 간소화하고 PostgreSQL과 원활하게 통합됩니다. Elasticsearch와 비교했을 때 VectorChord-BM25는 상위 1000개 쿼리당 쿼리 처리 속도(QPS)가 평균 3배 향상되었으며 NDCG@10 점수도 동등하거나 더 우수하지만, 공정한 벤치마킹을 위해서는 토큰화 전략 조정이 필요합니다.

더 보기

PostgreSQL에서 ColBERT 재순위 지정을 사용한 벡터 검색 향상

2025-01-24
PostgreSQL에서 ColBERT 재순위 지정을 사용한 벡터 검색 향상

기존 벡터 검색은 문장 임베딩에 의존하며, 세부 정보가 손실될 수 있습니다. ColBERT는 텍스트를 토큰 수준의 다중 벡터로 표현하여 더 많은 뉘앙스 정보를 유지하고 검색 정확도를 향상시킵니다. 그러나 토큰 수준의 상호 작용은 계산 비용이 많이 듭니다. 이 블로그 게시물에서는 PostgreSQL 확장 프로그램인 VectorChord와 pgvector를 사용하여 문장 수준 벡터 검색과 ColBERT 토큰 수준 재순위 지정을 결합하는 방법을 보여줍니다. 이 접근 방식은 문장 임베딩을 사용하여 빠른 초기 검색을 수행한 다음 ColBERT로 재순위 지정하여 결과를 개선합니다. 여러 BEIR 데이터 세트에서 상당한 개선이 관찰되었습니다.

더 보기
개발 벡터 검색