pgsql可以存储向量vector,用于RAG

如果你想直接安装带有 pgvector 扩展的 PostgreSQL,最方便的方法之一是使用官方提供的 Docker 镜像或使用社区构建的带 pgvector 的镜像。

✅ 方法一:使用 ankane/pgvector 的 Docker 镜像(推荐)
这是 pgvector 官方作者提供的镜像,内置了 pgvector 扩展。

docker run -d \
  --name my-pgvector \
  -e POSTGRES_PASSWORD=yourpassword \
  -p 5432:5432 \
  ankane/pgvector

这个容器默认使用 PostgreSQL 15,并已安装好 pgvector

之后你就可以连接数据库并执行:

CREATE EXTENSION IF NOT EXISTS vector;
### PostgreSQL 向量扩展插件 `pgvector` 的安装与使用 #### 1. 安装 PostgreSQL 和创建用户 为了使用 `pgvector` 插件,首先需要确保已正确安装 PostgreSQL 并配置好环境。以下是基于 Linux 系统的安装步骤: - 下载并解压 PostgreSQL 压缩包[^2]。 - 创建 PostgreSQL 用户: ```bash sudo adduser postgres ``` #### 2. 编译和安装 `pgvector` 插件 `pgvector` 是一个用于处理向量数据类型的 PostgreSQL 扩展,支持相似度查询等功能。 ##### 方法一:通过源码手动安装 如果未使用容器化工具(如 Docker),可以通过以下命令完成安装: ```bash sudo apt-get update && sudo apt-get install -y build-essential git postgresql-server-dev-$(lsb_release -sr | cut -d '.' -f1) git clone https://github.com/pgvector/pgvector.git /pgvector cd /pgvector make install ``` 上述过程会克隆 `pgvector` 源代码仓库,并编译生成所需的二进制文件[^4]。 ##### 方法二:通过 Docker 自动化安装 对于更便捷的方式,可以利用官方提供的 Docker 镜像来快速部署有 `pgvector` 支持的 PostgreSQL 实例: ```dockerfile FROM postgres:14.12 RUN apt-get update && apt-get install -y \ build-essential \ git \ postgresql-server-dev-14 RUN git clone https://github.com/pgvector/pgvector.git /pgvector && \ cd /pgvector && make install ``` 构建镜像后运行容器即可启用该功能。 #### 3. 加载 `pgvector` 扩展 无论采用哪种方式,在成功安装之后都需要连接至目标数据库实例并将此扩展激活: ```sql CREATE EXTENSION IF NOT EXISTS vector; ``` 这一步骤使得当前 schema 能够识别新的数据类型以及关联的操作符集合[^1]。 #### 4. 使用案例分析 假设我们正在开发一款推荐系统应用,则可能涉及如下操作场景——存储物品特征表示及其检索逻辑实现。 ##### (a). 表结构定义 下面展示了一个简单的表设计例子,其中包含了两个字段:一个是整数型 ID;另一个则是浮点数组成的向量子列。 ```sql CREATE TABLE items ( id INT PRIMARY KEY, embedding VECTOR(3) -- 这里设置维度大小为3仅作演示用途,请依据实际需求调整参数值 ); ``` ##### (b). 数据插入示例 接着往刚才建立好的表格里面填充几条记录供后续测试调用。 ```sql INSERT INTO items VALUES (1, '[1.0, 0.5, -0.3]'), (2, '[-0.1, 0.9, 0.8]'); ``` ##### (c). 查询最接近给定向量的结果 最后编写 SQL 来找出距离指定输入最近邻的那个对象。 ```sql SELECT id, embedding <-> '[0.5, 0.7, 0]' AS distance FROM items ORDER BY distance LIMIT 1; ``` 这里运用了 `<->` 符号代表计算欧氏空间中的直线间隔长度[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值