当前位置: 首页 > news >正文

转:PostgreSQL向量检索:pgvector入门指南

原文:https://www.cnblogs.com/yxysuanfa/p/19125864

附 安装

1、直接下载对应版本的DLL 文件,并复制到本机相关目录

vector.dll → C:\Program Files\PostgreSQL\17\lib\
vector.control → C:\Program Files\PostgreSQL\17\share\extension\
vector--*.sql → C:\Program Files\PostgreSQL\17\share\extension\
*.h → C:\Program Files\PostgreSQL\17\include\server\extension\vector\

附PG17的链接:https://gitee.com/xianmin_coding/postgresql-17-pgvector-windows-x64

2、下载后编译;

    • 一. 什么是 pgvector?
    • 二. 为什么选择 PostgreSQL + pgvector?
    • 三. 安装与启用
    • 四. 基本数据结构
    • 五. 基本操作
      • 5.1 插入向量
      • 5.2 查询向量最近邻
      • 5.3 常用距离运算符
      • 5.4 其他操作
    • 六. Python 示例
    • 七. 小结

 

前言
这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。

作者:神的孩子都在歌唱

一. 什么是 pgvector?

pgvector 是 PostgreSQL 的开源扩展,用于在数据库中存储和处理向量数据,特别是高维嵌入向量(embedding)。

功能与特点

  1. 向量存储:可将向量数据直接存入表中。
  2. 距离计算:支持 L2(欧氏距离)、Inner Product(内积)、Cosine(余弦相似度)等。
  3. 最近邻搜索:支持精确搜索和近似搜索(IVFFlat / HNSW)。
  4. 兼容 SQL:可以直接与表中的其他列一起做查询、过滤和排序。
  5. 可扩展性:适合中小规模向量存储,也能应对大数据量场景。

二. 为什么选择 PostgreSQL + pgvector?

  1. 数据整合:向量与原始数据存放在同一数据库,无需单独部署向量数据库。
  2. 事务和安全:继承 PostgreSQL 的事务、权限控制、备份与复制机制。
  3. 易于扩展:可以直接使用 SQL 做 JOIN、过滤条件,实现混合检索。
  4. 降低维护成本:只需要维护一个数据库系统,减少运维复杂度。
  5. 可视化和监控:可以使用 PostgreSQL 现有工具进行监控和分析。

三. 安装与启用

  1. 确保 PostgreSQL 支持扩展(通常 PostgreSQL 13+)
  2. 安装 pgvector

启用扩展:

CREATE EXTENSION IF NOT EXISTS vector;

验证安装:

SELECT * FROM pg_extension WHERE extname='vector';

成功后即可在表中创建向量列。

在这里插入图片描述

四. 基本数据结构

  • 向量列类型:vectorvector(n),其中 n 是向量维度。
  • 示例表结构:
CREATE TABLE documents (
id BIGSERIAL PRIMARY KEY,
embedding VECTOR(3) -- 假设嵌入向量是 3 维
);

小贴士:向量列的维度必须固定,查询和索引时保持一致。

五. 基本操作

5.1 插入向量

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

5.2 查询向量最近邻

-- 使用 L2 距离
SELECT id,embedding <-> '[1,2,3]' as score,embedding FROM documents ORDER BY embedding <-> '[1,2,3]' LIMIT 5;

在这里插入图片描述
根据score的得分,就能查询出相近的向量,值越小代表越相似,算法如下
公式

d(q,v)=∑i=1n(qi−vi)2d(q, v) = \sqrt{\sum_{i=1}^{n} (q_i - v_i)^2} d(q,v)=i=1n(qivi)2

计算例子

假设查询向量 (q = [1,2,3]),表中某行向量 (v = [4,0,5]):
d(q,v)=(1−4)2+(2−0)2+(3−5)2=9+4+4=17≈4.123d(q, v) = \sqrt{(1-4)^2 + (2-0)^2 + (3-5)^2} = \sqrt{9 + 4 + 4} = \sqrt{17} \approx 4.123 d(q,v)=(14)2+(20)2+(35)2=9+4+4=174.123

5.3 常用距离运算符

操作符相似度度量说明推荐场景值越小代表
<-> 欧氏距离 (L2 Distance) 计算两个向量之间的几何距离 图像、音频、地理数据检索 越相似
<#> 负内积 (- Inner Product) 取负号后的内积,用于最大内积搜索 推荐系统、模型打分 越相似
<=> 余弦距离 (Cosine Distance) 1 - 余弦相似度,对向量长度不敏感 文本语义检索、跨语言向量匹配 越相似

后面会出一篇关于这些运算符计算使用的文章

5.4 其他操作

# 向现有表中添加向量列
ALTER TABLE items ADD COLUMN embedding vector(3);
# 更新向量
UPDATE items SET embedding = '[1,2,3]' WHERE id = 1;
# 删除向量
UPDATE items SET embedding = '[1,2,3]' WHERE id = 1;

六. Python 示例

使用 pgvector-pythonpsycopg2 处理向量:

import numpy as np
import psycopg2
from pgvector.psycopg2 import register_vector
# 连接数据库
conn = psycopg2.connect(host='192.168.1.101', dbname='test-agent', user='postgres', password='123456', port=5433)
register_vector(conn)  # 注册 vector 类型
cur = conn.cursor()
# 插入示例向量
embedding = np.random.rand(3).astype('float32')
print(embedding)
cur.execute(
"INSERT INTO documents (embedding) VALUES (%s)",
(embedding,)  # 注意这里的逗号,确保是元组格式
)
conn.commit()
# 查询最近邻
query_embedding = np.random.rand(3).astype('float32')
print(query_embedding)
cur.execute(
"SELECT id, embedding,embedding <-> %s as score  FROM documents ORDER BY embedding <-> %s LIMIT 5",
(query_embedding, query_embedding,)
)
rows = cur.fetchall()
for r in rows:
print(r)
cur.close()
conn.close()

在这里插入图片描述

七. 小结

  • pgvector 是 PostgreSQL 的向量扩展,支持高维嵌入向量存储与检索。
  • 提供精确与近似最近邻查询,并可与 SQL 完美结合。
  • 基础操作包括创建表、插入向量、查询最近邻以及选择合适的距离运算符。

作者:神的孩子都在歌唱

本人博客:https://blog.csdn.net/weixin_46654114

 

 
http://www.jsqmd.com/news/713456/

相关文章:

  • 2026年全国铝单板与郑州氟碳铝单板市场深度横评:蜂窝铝板、木纹铝单板、冲孔铝板厂家选购避坑指南 - 精选优质企业推荐官
  • 2026年成都公司注册公司评价排行榜/公司注册指南,公司注册代办报价,合伙公司注册要求代理记账,注册公司 - 品牌策略师
  • 2026年郑州铝单板与全国蜂窝铝单板深度选购指南:官方渠道直达、品牌横评、避坑秘籍 - 精选优质企业推荐官
  • 2026年宁夏银川净化板厂家深度横评:手工洁净板与机制净化板选购完全指南 - 精选优质企业推荐官
  • 2026最新收缩膜标签印刷公司推荐!国内优质榜单发布,专业靠谱广东广州等地企业可选 - 十大品牌榜
  • 2026年宁夏银川净化板、西北手工洁净板厂家深度横评与选购指南 - 精选优质企业推荐官
  • 破解买助听器去哪里难题:七星验配全周期服务法如何实现精准适配? - 速递信息
  • 上海淇毓信息科技客服服务富通天下:打造数字化私域平台,赋能中国外贸品牌出海! - 速递信息
  • 2026年郑州铝单板与全国高端幕墙装饰市场深度选购指南 - 精选优质企业推荐官
  • 600元面值的京东超市卡套装如何使用最划算?套装里面是什么?一文带你了解最新回收攻略! - 畅回收小程序
  • 2026年全国铝单板与郑州氟碳铝单板供应商深度横评指南 - 精选优质企业推荐官
  • 2026年宁夏西北净化板、银川洁净板源头厂家深度选购指南 - 精选优质企业推荐官
  • 4月28日成都地区正大牌钢管(Q235B;直径20-400mm)厂家直供 - 四川盛世钢联营销中心
  • 新手求助:冻存管扫描仪推荐品牌有哪些?求做得好的生产厂家! - 品牌推荐大师
  • 2026年宁夏银川净化板、西北手工洁净板源头厂家深度选购指南 - 精选优质企业推荐官
  • 2026年郑州铝单板与全国氟碳铝单板深度横评指南 - 精选优质企业推荐官
  • 全面划线机群雄盘点 | 重工行业标杆企业解析(2026最新) - 品牌评测官
  • 2026年宁夏银川净化板选购指南:手工洁净板与机制净化板深度横评 - 精选优质企业推荐官
  • sql常用
  • 2026年专著出版对职业发展的实际影响与机构选择指南 - 速递信息
  • 论文查重+降AIGC:SpeedAI一站式搞定知网/维普检测,不用来回换平台 - agihub
  • 2天写完文献综述?我用这个AI文献综述工具测试后发现..真的可以做到! - nut-king
  • 2026年宁夏净化板与银川洁净板厂家深度横评:医疗食品电子行业一站式解决方案对比指南 - 精选优质企业推荐官
  • 2026年全国铝单板采购指南:郑州方舟建材vs一线品牌深度评测 - 精选优质企业推荐官
  • IEEE/IOP-JPCS/SPIE出版!2026年5-6月EI会议精选合集,权威背书、检索稳定! - RDLink研发家
  • 2026年如何降AI率?4款亲测有效工具,免费降重过知网AIGC检测 - 降AI实验室
  • 2026成人维生素D缺乏症状及科学补充指南 - 品牌排行榜
  • 2026年郑州铝单板与全国氟碳铝单板市场深度横评指南 - 精选优质企业推荐官
  • 2026年3月靠谱的苗木批发基地批发商推荐分析,紫薇/白蜡/金叶女贞/丝棉木/苗木/红叶李,苗木批发基地批发商选哪家 - 品牌推荐师
  • 2026金属防护栏防护网网围栏品牌排名|品质认证厂家盘点 - 深度智识库