カテゴリー: BALTHASAR

  • 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環境でも非公式バイナリを使えば簡単に導入できる
    • 独自データベースとユーザーを作成してセキュアな運用が可能