在Ubuntu22.04上部署postgresql&pgvector
至于为什么要pgvector这个插件,因为打算用华师的学生数据向量化对某llm进行prompt微调—–>chatECNU
1、安装Postgresql
1 | sudo apt update |
默认用户postgres进入psql
1 | sudo -u postgres psql |
通常,postgres
用户仅仅在本地被使用。
2、创建 PostgreSQL 角色和数据库
仅仅超级用户和拥有CREATEROLE
权限的角色可以创建新角色。
在下面的例子中,我们创建一个名称为john
的角色,一个名称为johndb
的数据库,并且授予数据库上的权限:
01.创建一个新的 PostgreSQL 角色:
1 | sudo su - postgres -c "createuser testuser" |
02.创建一个新的 PostgreSQL 数据库:
1 | sudo su - postgres -c "createdb testdb" |
想要授权用户操作数据库,连接到 PostgreSQL shell:
1 | sudo -u postgres psql |
并且运行下面的 query:
1 | grant all privileges on database johndb to testuser; |
3、启用远程访问 PostgreSQL 服务器
默认情况下,PostgreSQL 服务器仅仅监听本地网络接口:127.0.0.1
。
为了允许远程访问你的 PostgreSQL 服务器,打开配置文件postgresql.conf
并且在CONNECTIONS AND AUTHENTICATION
一节添加listen_addresses = '*'
。我的配置文件所在目录etc/postgresql/14/main/postgresql.conf
1 | sudo vim /etc/postgresql/14/main/postgresql.conf |
保存文件并且重启 PostgreSQL 服务:
1 | sudo service postgresql restart |
使用ss
工具验证修改:
1 | ss -nlt | grep 5432 |
输出显示 PostgreSQL 服务器正在监听所有的网络接口(0.0.0.0
):
1 | LISTEN 0 244 0.0.0.0:5432 0.0.0.0:* |
编辑pg_hba.conf
文件。
1 | TYPE DATABASE USER ADDRESS METHOD |
最后一步就是在你的防火墙上打开端口5432
端口。
4、安装pgvector插件
1 | cd /tmp |
如果在make
时出现了postgres.h
不存在的报错
For Ubuntu and Debian, use:
1 | sudo apt install postgresql-server-dev-14 |
Note: Replace 15
with your Postgres server version 我的版本是14
Started
切换到指定数据库create
这个插件\c testdb;
切换用户 \c - testuser;
1 | root@thinkcentre:~/tmp/pgvector# sudo -u postgres psql |
Docker部署postgresql + pgvector
注意:Navicat15 无法连接高于psotgresql 13+的版本,因此这里部署的均是13版本
原理是pgvector的仓库下有doc,在安装pgvector的Dockerfile中添加了编译pgvector的内容
1、docker build编译可用image
1 | git pgvector仓库 |
2、部署container
1 | docker run -d --name pgvector -e POSTGRES_USER=root -e POSTGRES_PASSWORD=789456 -p 5432:5432 myuser/pgvector:latest |
3、进入容器新建用户和数据库
1 | docker exec -it container_id psql -U root |
参考
https://zhuanlan.zhihu.com/p/143156636