Y
e.
embeddings.social
pgvectorプロダクション導入ガイド:10万ベクター以下なら十分だ12 min read

pgvectorプロダクション導入ガイド:10万ベクター以下なら十分だ

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

PostgreSQL + pgvectorを6ヶ月運用した結果、10万ベクターまでは別途インフラなしで十分高速だ。

なぜpgvectorなのか

QdrantやPineconeのような専用ベクターDBは強力だが、追加インフラを管理するコストがある。すでにPostgreSQLを使っているなら、pgvector一つで解決できる。

HNSWインデックスの設定

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

SELECT id, content, embedding <=> $1 AS distance FROM posts ORDER BY distance LIMIT 20; ```

mの値はグラフの接続数を決定する。本番環境ではm=16、ef_construction=64が安定したデフォルト値だ。

実測パフォーマンス

1536次元ベクター10万件の場合:p50レイテンシ 4ms、p99レイテンシ 12ms、recall@10 0.97。専用ベクターDBと比較して大きな差はない。10万を超えるとQdrantが明らかに優位に立ち始める。