1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RenderでWEB SERVICEとPostgreSQLのpgvector拡張機能をセットアップ

Posted at

本記事の内容

本記事ではRenderでWeb ServiceとPostgreSQLをセットアップするところを解説するものです。

Renderへのサインアップ

Renderにサインインします。
アカウントのない場合はまずサインアップしてください。
GitHubやGoogleアカウントでのSSOが可能です。
image.png

WEB SERVICEの作成

WEB SERVICEを作成します。
ソースコードはGitのレポジトリやDckerのイメージから持ってこれます。
image.png
ソースコードの設定をしたら、その他の設定を行ないます。
image.png
Regionですが、Japanは存在しないので、地理的にいちばん近いSingaporeを私は選びました。
Build Commandなどは好きなように設定してください。
よくわからなければそのままでいいです。
次にインスタンスタイプを選択します。
image.png
この記事を読んでいるような人の99%はひとまずFreeを選びたいはずです。
注意書きにはFreeの場合は一部無効化されている機能がある旨、リクエストが一定時間無いとSpin Downする旨が書かれています。
Spin Downしているとリクエストを送った際に50秒くらい待つことになります。
無料で使わせてもらっているのでしょうがないですね。
最後に環境変数を登録できます。
image.png
これらの設定は作成時ではなく後から設定することも可能です。
作成されると、さっそくDeployが始まります。
今回は言語にPythonを選んで[Build Command]に$ pip install -r requirements.txtを指定したにも関わらず、カレントディレクトリにrequirements.txtが無いと怒られていますね。
image.png

Environment

一例ですが、私はこのように環境変数を設定しました。
DB周りの変数は実際にはDBを作ってから値を指定します。
ここで環境変数を設定しておくことで、コード中にAPI KEYなどを直書きする必要がなくなります。
image.png

PostgreSQLの作成

DB(PostgreSQL)を作成します。
インスタンス名、DB名、Regionやバージョンを指定します。
image.png
最後にインスタンスタイプを選択して作成します。
image.png
Freeでは作成30日後になるとexpireし、さらにFreeのDBは1アカウントや1チームにつき1つしか作成できないことが注意書きに書かれています。
作成するとinfo画面に遷移します。
image.png
接続設定はこの画面下部にあります。
image.png
また、Access Controlの設定も可能です。
image.png
書かれているとおり、自分のRenderアカウントの範囲外からのアクセスを行なう場合、接続元IPアドレスの設定が必要です。デフォルトでは「0.0.0.0/0」でIPアドレスの限定無いのでどこからでもアクセス可能になっています。
必要に応じて設定変更してください。
Use My IP addressを選ぶと自分が現在使用しているグローバルIPアドレスをクイックに設定できます。

pgAdminでの接続

DBがCreateされたらpgAdminで接続しましょう。
[Servers]-[Register]-[Server…]でサーバーを登録します。
image.png
名称は適当に付けた後Connectionタブで接続設定を行ないます。
pgAdminの設定とRenderの接続情報の対応は以下のとおりです。
image.png
pgAdminの[Host name/address]ですが、RenderのExternal Database URLをそのまま貼り付けるのではなく、ホスト名を指定する部分だけ抜き出して使います。
具体的には、PostgreSQLの接続URIは
postgresql://<User>:<Password>@<hostname>/<DB名>
ですので、この<hostname>の部分だけを使います。

pgvectorの有効化

あとはpgvectorを有効化して準備は終わりです。

Query Toolで以下を実行するだけです。

CREATE EXTENSION vector;

image.png

これで、テーブルを作成する際にColumnのTypeでvectorが選べるようになります。

CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));

precisionにはベクトルの数、つまり次元数を設定してください。この例では3次元ですね。
vectorカラムには配列を挿入すると自動的にベクトル列と解釈されて格納されます。

INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?