One Server

ドキュメント

データベースの拡張機能

pgvector(埋め込み検索)や PostGIS(地図)などの拡張機能を有効・無効にする方法、有効にできる一覧、共有データベースでの動作。

データベースの拡張機能(pgvector、PostGIS …)

list_extensions { ref } は、有効にできる拡張機能とその状態(available、enabled、version)を返します。 enable_extension { ref, name } で有効にし、disable_extension { ref, name, confirm: name } で無効にします。 有効・無効を切り替えられるのはオーナーと管理者だけです。

有効にできるもの: vector(pgvector)、postgis、citext、hstore、uuid-ossp、pgcrypto、 ltree、fuzzystrmatch、btree_gin、btree_gist、intarray、tablefunc。 pg_trgm と unaccent は最初から有効で、無効にはできません。一覧にない拡張機能は拒否されます。

拡張機能は extensions スキーマにインストールされ、そのスキーマはすべての検索パス(SQL エディター、直接接続、データ API)に 含まれているため、スキーマ名を付けずに使います。

-- enable_extension { ref, name: "vector" } のあとで
create table docs (id bigserial primary key, body text, embedding vector(1536));
create index if not exists docs_embedding_hnsw on docs using hnsw (embedding vector_cosine_ops);
select id, body from docs order by embedding <=> '[...]' limit 5;

-- enable_extension { ref, name: "postgis" } のあとで
create table places (id bigserial primary key, name text, at geography(point, 4326));
select name from places where st_dwithin(at, st_makepoint(126.978, 37.566)::geography, 1000);

データ API で近いものを探すには、関数にして POST /rest/v1/rpc/<関数> で呼び出します。

共有データベースでは、拡張機能はデータベース全体のものです。 ほかのプロジェクトが同じ拡張機能を有効にしている場合、 無効にしてもインストールは残り(note)、このプロジェクトの記録だけが消えます。拡張機能を使う列・インデックス・関数が残っていると、 無効化は拒否されます。先にそれらを削除してください。

HTTP では GET /extensions、PUT /extensions/<名前>(有効化)、DELETE /extensions/<名前>(無効化)です。