Y
e.
embeddings.social
HNSW vs IVFFlat:pgvectorインデックス戦略の深掘り比較9 min read

HNSW vs IVFFlat:pgvectorインデックス戦略の深掘り比較

박준혁
@junhyuk_infra
KO
この記事はEmbeddingsで翻訳されました · KO

pgvectorはHNSWとIVFFlatの2つのインデックスをサポートする。どちらを使うべきか。

HNSW (Hierarchical Navigable Small World)

グラフベースのインデックス。ビルド時間は長いが、クエリ速度が速くrecallが高い。

sqloriginal preserved
CREATE INDEX ON posts USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);

IVFFlat (Inverted File with Flat compression)

クラスターベースのインデックス。ビルドは速いが、クエリ時のrecallがHNSWより低い場合がある。

sqloriginal preserved
CREATE INDEX ON posts USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100);

実測比較(10万ベクター、1536次元)

HNSW: p99 12ms, recall@10 = 0.97。IVFFlat: p99 18ms, recall@10 = 0.91。

結論

データがすでにあって素早くインデックスを作る必要があるならIVFFlat。本番環境で長期的に使うならHNSW。