(記述中)ツール:postgresql¶
pgvector¶
postgresqlでベクトル計算をするための拡張機能。
導入¶
簡易的に利用する場合に利用できる、拡張機能インストール済みのdockerイメージがある。
https://hub.docker.com/r/ankane/pgvector
導入と動作確認まで。
Text Only | |
---|---|
hnswインデックスの設定(計算コストが下がることが確認できる)。
Text Only | |
---|---|
演算子¶
演算子 | 説明 |
---|---|
+ | 2つのベクトルの各要素同士を加算します |
– | 2つのベクトルの各要素同士を減算します |
* | 2つのベクトルの各要素同士を乗算します |
<-> | 2つのベクトルのユークリッド距離を計測します |
<#> | 2つのベクトルの内積に-1を乗算します |
<=> | 2つのベクトルのコサイン距離を計測します |
関数¶
関数 | 説明 |
---|---|
cosine_distance(vector, vector) → double precision | コサイン距離 |
inner_product(vector, vector) → double precision | 内積 |
l2_distance(vector, vector) → double precision | ユークリッド距離 |
l1_distance(vector, vector) → double precision | マンハッタン距離 |
vector_dims(vector) → integer | 次元数 |
vector_norm(vector) → double precision | ユークリッドノルム |
インデックス¶
インデックス | 説明 | インデックス構築時間 | メモリ使用量 | クエリのパフォーマンス |
---|---|---|---|---|
IVFFlat | ベクトルをリストに分割してクエリベクトルに最も近いリストのサブセットを検索する | 短い | 少ない | 速度とリコールのトレードオフが大きい |
HNSW | 最下層に全てのベクトル点が含まれ上の層になるほどベクトル点が少なくなる層状のグラフ構造で上層から下層にアイテムを辿っていく | 長い | 多い | 速度とリコールのトレードオフが少ない |
HNSWインデックスのオプション
Text Only | |
---|---|
パラメータ | 必須 | デフォルト値 | 意味 |
---|---|---|---|
maxelements | ○? | インデックス付けされる要素の最大数。データセット内の行数に対応できる値に設定。 | |
dims | ○ | ベクトル データの次元数 | |
m | 16 | 各ノードに作成される双方向リンクの最大数 | |
efconstruction | 64 | インデックスの構築中に考慮される最近傍の数。高いほどインデックスの構築時間、挿入速度を犠牲にしてリコールが向上 | |
efsearch | インデックス検索中に考慮される最近傍の数。高いほどリコールを向上させますが、速度を犠牲にする。 |
検索例
Text Only | |
---|---|
column does not have dimensions¶
typeにsizeの指定がない場合。
Text Only | |
---|---|
https://github.com/prisma/prisma/issues/21850
参考¶
ロジカルレプリケーション¶
未記述
インデックス作成状況¶
Text Only | |
---|---|