6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQLAdvent Calendar 2024

Day 2

2024 年の pgvector アップデートを振り返る(12/1 時点)

Last updated at Posted at 2024-12-01

これは PostgreSQL Advent Calendar 2024 2 日目の記事です。

昨日(1 日目)は yaju さんでした。


個人的な PostgreSQL 関連の持ちネタは pgvector くらいしかないので、(利用事例などは 16 日目の elhalti さんにお任せしつつ)2024 年のアップデートについて振り返ってみます。

その前に

(pgvector が扱う)ベクトル検索についてよくわからない方は、九州大学 数理・データサイエンス教育研究センターの講義資料の中から関係しそうなものをピックアップして読んでみることをお勧めします。

2024 年の pgvector(とその周辺)の主なアップデート

バージョン 0.6.0(1/30 リリース)・0.7.0(4/30 リリース)

こちらの記事にまとめました。

  • HNSW インデックス作成のパラレル化(0.6.0)
  • 半精度(16 ビット)ベクトル(0.7.0)
  • バイナリ(ビット)ベクトルおよびバイナリ(ビット)量子化(同)
  • 疎ベクトル(同)
  • サブベクトルのインデックス化(同)

をサポートしました。

「pgvector は遅い」という評判を覆すべく、パフォーマンスと効率の向上を狙ったアップデートでした。

なお、↓はバイナリインデックスおよびバイナリ量子化を試したときの記事です。

pgvectorscale 0.2.0(6/6 リリース)

バージョン 0.7.0 でひととおりの機能を備えたかに見えた pgvector ですが、ベクトルストアとして競合する Pinecone によって

  • HNSW インデックスとベクトル以外の列によるフィルタリングを併用すると、本来抽出すべきデータが抽出できない可能性がある
  • HNSW インデックスがメモリの範囲を超えるサイズに達した場合、インデックスの作成やインデックスによる検索が極端に遅くなる

という欠点を指摘されました。

それに対抗して、Timescale 社がリリースした pgvector 拡張が pgvectorscale です。

こちらの記事に記したとおり、

pgvectorscale では

  • StreamingDiskANN インデックス
  • 統計的バイナリ量子化(SBQ)

を実装することで pgvector の欠点を補っています。

このあたりの実装およびその背景の説明は、こちらのブログ記事に記されています。

先の記事 の時点でバージョン 0.2.0 だった pgvectorscale はその後、バージョン 0.5.0 で StreamingDiskANN インデックス 向けに L2 距離(ユークリッド距離)をサポートしています。

https://github.com/timescale/pgvectorscale/releases/tag/0.5.0

バージョン 0.8.0(10/31 リリース)

「IVFFlat / HNSW インデックスとベクトル以外の列によるフィルタリングを併用すると、本来抽出すべきデータが抽出できない可能性がある」問題への対処のため、インデックスの反復スキャンをサポートしました。

結果的に、pgvectorscale とは別の実装になっています(pgvectorscale は HNSW インデックスではなく StreamingDiskANN インデックスでこの問題に対処)。

「メモリを超える容量の HNSW インデックスの作成・検索速度が極端に遅くなる」問題については特に対処は行われていないようです。


明日(3 日目)は onozaty さんです。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?