WindowsでPostgreSQL + PGVectorを始めよう!インストールから初期設定まで完全ガイド

こんにちは!今回は、Windows環境でPostgreSQLをインストールし、ベクトル検索が可能になる拡張機能「PGVector」を使えるようにするまでの手順を、わかりやすく解説します。


1. PostgreSQLのインストール

🔗 公式サイトからインストーラーをダウンロード

  1. PostgreSQL公式ダウンロードページ にアクセス
  2. 「Download the installer」から EDB版インストーラー を選択
  3. Windows用のインストーラー(例:postgresqpostgresql-17.6-1-windows-x64.exe)をダウンロード

🛠 インストール手順

  1. インストーラーを実行
  2. コンポーネント選択画面では、pgAdmin にチェックが入っていることを確認
  3. データベースクラスタの初期設定(パスワード、ポート番号など)を入力
  4. インストール完了後、pgAdminが起動することを確認

2. pgAdminでPostgreSQLに接続

  1. pgAdminを起動
  2. 初回起動時にマスターパスワードを設定
  3. 左側の「Servers」→「PostgreSQL」→「Databases」から接続確認
  4. デフォルトのpostgresデータベースを開いておく

3. PGVectorの導入(Windows用バイナリ)

🔽 ダウンロード

📂 ファイルを配置

ZIPを解凍し、以下のファイルをPostgreSQLのインストールディレクトリに配置します:

💡 上書き確認が出たら「Yes to all」を選択してください。

🔄 PostgreSQLを再起動

  • サービスから「PostgreSQL 17」を再起動するか、以下のコマンドを使用:
pg_ctl restart -D "C:\Program Files\PostgreSQL\17\data"

4. データベースとユーザーの作成

🎯 目的

  • データベース名:balthasar
  • ユーザー名:balthasar_user
  • パスワード:例:securepass123

🧑‍💻 SQL手順

-- ユーザーの作成
postgres=# CREATE USER balthasar_user WITH PASSWORD 'securepass123';
CREATE ROLE

-- データベースの作成
postgres=# CREATE DATABASE balthasar OWNER balthasar_user;
CREATE DATABASE

-- 権限の付与(必要に応じて)
postgres=# GRANT ALL PRIVILEGES ON DATABASE balthasar TO balthasar_user;
GRANT

-- 拡張機能の有効化(データベースごとに必要)
postgres=# \c balthasar
データベース"balthasar"にユーザー"postgres"として接続しました。
balthasar=# CREATE EXTENSION vector;
CREATE EXTENSION

-- 有効化の確認
postgres=# SELECT extname, extrelocatable, extversion FROM pg_extension WHERE extname = 'vector';
 extname | extrelocatable | extversion
---------+----------------+------------
 vector  | t              | 0.8.0
(1 行)

5. PGVectorの動作確認

balthasar データベースに接続し、以下のSQLを実行:

-- テーブル作成
balthasar=> CREATE TABLE items (
  id serial PRIMARY KEY,
  embedding vector(3)
);
CREATE TABLE

-- データ挿入
balthasar=> INSERT INTO items (embedding) VALUES
  ('[1, 1, 1]'),
  ('[2, 2, 2]'),
  ('[1, 1, 2]');
INSERT 0 3

-- 類似度検索
balthasar=> SELECT * FROM items ORDER BY embedding <-> '[1, 1, 1]';
 id | embedding
----+-----------
  1 | [1,1,1]
  3 | [1,1,2]
  2 | [2,2,2]
(3 行)

<-> 演算子で類似度検索ができれば成功です!


6. トラブルシューティング

問題解決策
vector拡張が使えないバイナリが正しく配置されているか確認
ユーザーで接続できないパスワードや権限を確認
pgAdminで接続できないファイアウォールやpg_hba.confの設定を確認

🎉 まとめ

  • PostgreSQL + PGVectorでベクトル検索が可能に!
  • Windows環境でも非公式バイナリを使えば簡単に導入できる
  • 独自データベースとユーザーを作成してセキュアな運用が可能