Install PostgreSQL with pgvector

PostgreSQL is a powerful database that we're using. Not only the common data, but the Vector data.

PostgreSQL supports vector data types by a extension called pgvector.

In this article, we're going to install PostgreSQL and pgvector.

Prerequisites

Assume you have a Linux system, and currently we are using CentOS 8.

And PostgreSQL 15 is the last version that supports CentOS 8. By the way, pgvector needs PostgreSQL 11 or later.

Install PostgreSQL

Go to the official site to download the rpm package.

Or you can just copy the following command to install it.

bash 复制代码
# Install the repository RPM:
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
yum install -y postgresql15-server

# Optionally initialize the database and enable automatic start:
/usr/pgsql-15/bin/postgresql-15-setup initdb
systemctl enable postgresql-15
systemctl start postgresql-15

Check the PostgreSQL if it's installed successfully.

bash 复制代码
psql --version

Some useful commands:

bash 复制代码
systemctl status postgresql-15
systemctl stop postgresql-15
systemctl restart postgresql-15

Setup PostgreSQL

After the installation, it will create a user named postgres automatically. Switch to the postgres user.

bash 复制代码
su - postgres

Now we enter the PostgreSQL shell, and change the password of the postgres user.

bash 复制代码
psql
sql 复制代码
ALTER USER postgres WITH PASSWORD 'postgres';

After completing these tasks, enter the exit command to quit.

Beware that the default password of Linux postgres user should be changed.

bash 复制代码
# 修改 linux 的 postgres 用户密码
# 注意,这个密码很容易被猜到,被攻击
 sudo  passwd -d postgres
 sudo -u postgres passwd

Install pgvector

By default, install pgvetor by compiling from source code. However, it's such a tough task with a lot of errors.

Eventually, we found a way to install pgvector by using the RPM package. It's SUPER easy and works well.

bash 复制代码
yum install pgvector_15

Create a user

Enter the PostgreSQL shell again: psql.

sql 复制代码
# 创建用户
CREATE USER dbroot WITH PASSWORD '123root';

# 创建数据库
CREATE DATABASE vectdb OWNER dbroot;

# 赋权
GRANT ALL PRIVILEGES ON DATABASE vectdb TO dbroot;

# 添加 superuser 权限,用于安装 pgvector 插件
alter user dbroot with superuser;

Then just create a vector table to test if it works.

sql 复制代码
# 本地登录
> psql -U dbroot -h localhost  -p 5432 -d vectdb

# 创建插件
CREATE EXTENSION vector;

# 创建一个带有向量类型的表
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));

# 写入一条数据
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');

# 向量检索
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;

Open PostgreSQL to the outside accessing

bash 复制代码
> cd /var/lib/pgsql/15/data/

> vim postgresql.conf
#将监听地址修改为*
#默认listen_addresses配置是注释掉的,所以可以直接在配置文件开头加入该行
listen_addresses='*'

> vim pg_hba.conf
#在文件尾部加入
#注意,开启所有外网都能访问时,服务容易被攻击
host  all  all 0.0.0.0/0 md5

#重启PostgreSQL服务
sudo systemctl restart postgresql-15

Some useful commands

bash 复制代码
#查看所有数据库
> \l

#切换当前数据库
> \c vectdb

#查看当前数据库下所有表
> \d

#退出数据库
> \q

# 查询配置文件所在位置
> show config_file;

# 查询数据储存目录
> show data_directory;

Thanks to these articles that helped me a lot!

相关推荐
秋名RG5 小时前
一条 SQL 语句在 MySQL 中的执行过程详解
数据库·sql·mysql
Canmag 兴隆磁性5 小时前
钕铁硼磁片取向方向检测自动化方案:从人工目检到流水线在线分选的工程实践
运维·数据库·自动化·工业自动化·钕铁硼·自动化检测·磁材料
yangmu32035 小时前
安全审批与日志审计:从“谁批准”到“谁执行”的全链路闭环
数据库
R²AIN SUITE5 小时前
多云或私有云环境怎么选项目管理工具?RainSuite等5种产品的8项部署验证
服务器·网络·数据库
隔振降噪研究员5 小时前
裁断机一响,楼板为什么会跟着抖?
大数据·linux·数据库·人工智能
软件派6 小时前
生产动态数据智能风控:阈值判别、趋势预测、异常识别算法工程落地实战
前端·数据库·算法
ss27314 小时前
PostgreSQL常见索引问题与解决方案
数据库·postgresql
小徐不徐说14 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
瀚高PG实验室16 小时前
发布端逻辑复制槽消失
数据库·postgresql·瀚高数据库
ss27316 小时前
PostgreSQL慢查询定位与优化
数据库·postgresql