惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recorded Future
Recorded Future
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
S
SegmentFault 最新的问题
博客园 - 司徒正美
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
博客园 - 叶小钗
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
腾讯CDC
博客园 - 聂微东
D
DataBreaches.Net
博客园 - Franky
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 【当耐特】
量子位
宝玉的分享
宝玉的分享
D
Docker
T
Tailwind CSS Blog
IT之家
IT之家
Engineering at Meta
Engineering at Meta
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
Scott Helme
Scott Helme
Project Zero
Project Zero
Microsoft Azure Blog
Microsoft Azure Blog
AWS News Blog
AWS News Blog
Google DeepMind News
Google DeepMind News
H
Heimdal Security Blog
W
WeLiveSecurity
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
有赞技术团队
有赞技术团队
Simon Willison's Weblog
Simon Willison's Weblog
NISL@THU
NISL@THU
C
Cybersecurity and Infrastructure Security Agency CISA
Google DeepMind News
Google DeepMind News
T
Threatpost
TaoSecurity Blog
TaoSecurity Blog
N
News and Events Feed by Topic
aimingoo的专栏
aimingoo的专栏
Recent Commits to openclaw:main
Recent Commits to openclaw:main
www.infosecurity-magazine.com
www.infosecurity-magazine.com
SecWiki News
SecWiki News
S
Securelist

博客园 - 一贴灵

关于企业自建AI Qwen-Agent是一个开发框架 python 换源方法 qwen3-0.6B初探 设备虐我千百遍,AI待我如初恋 蓝凌OA流程附件 蓝凌OA 流程管理数据结构字典(km_review_main) Windows 包管理器:chocolatey 配置 npm 国内镜像(重要!) OpenTalking 负责实时数字人编排 readme pip install -e ".[dev]"的文件在pyproject.toml或 setup.py​ 里 CC SWITCH配置百练的token plan给 claude pgsql 带转义符的更新,$$ '更新内容'$$ 新手提效必看!Claude Code只需这九个Skills(转) 技术要用来向善:水印机机 与盲水印 另类文件备份方法 设置pip全局镜像源(国内加速) Chroma数据库入门到进阶教程(转) pip install 使用国内镜像安装加快速度 调整指标达成插入yjlx表的sql OpenClaw 的 select channel中没有直接显示微信选项怎么办? openrouter 免费API-KEY hermes安装笔记 Winform程序中NumberUpdown控件作为年月选择框的代码增强 Claude code简版使用手册 白嫖API-KEY汇总 OpenClaw安装中提示:systemctl --user unavailable:错误处理 SQL 行数据生成器 用友 主要库及表 网传免费TOKEN PaddleOCR本地部署指南:Windows环境下的OCR服务搭建实践 python虚拟环境建议及激活 删除 winform表单中datagridview实现EXCEL式列筛选 和零售/新零售有关的英文缩写(转) Windows系统下顺利安装并运行OpenClaw Gradio入门快速搭建AI算法可视化部署演示(以使用OCR模型unirec为例)(转) 转:魔搭社区每天免费提供2000次Claude Code调用 查询 PostgreSQL 当前连接数的常用方法 PyInstaller 是将你的 Python 打包成一个独立的可执行文件 大叔学springboot ,且学且记 idea+sprinboot+postgres创建WEB项目
转:PostgreSQL向量检索:pgvector入门指南
一贴灵 · 2026-04-28 · via 博客园 - 一贴灵

原文: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?

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 = 1 n ( q i − v i ) 2 d(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.123 d(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