news 2026/4/15 9:46:59

docker安装部署PostgreSQL带有pgvector扩展向量数据(高维数组)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
docker安装部署PostgreSQL带有pgvector扩展向量数据(高维数组)

1.拉取镜像

# 或者已经编译了x86的postgis、pgvector的18.1dockerpull registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres-with-gis:18.1# arrch64架构dockerpull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_postgres-with-gis:18.1

2.创建一个 postgres 容器并启动

dockerrun -d\--name postgres-gis\-ePOSTGRES_PASSWORD='Yo5WYypu0mCCheOU'\-p5432:5432\-v /data/postgres:/var/lib/postgresql\registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres-with-gis:18.1

3.执行PostGIS

create extension postgis;create extension postgis_topology;create extension fuzzystrmatch;create extension postgis_tiger_geocoder;create extension address_standardizer;

4.执行pgvector扩展向量

CREATE EXTENSION IF NOT EXISTS vector;

5.验证 PostGIS 安装:

# 在 PostgreSQL 命令行中执行SELECT PostGIS_Version();SELECT PostGIS_Full_Version();

6.验证 pgvector安装:

SELECT * FROM pg_extension WHERE extname='vector';

pgvector 扩展:向量数据库功能

什么是 pgvector?
pgvector 是一个 PostgreSQL 扩展,它让 PostgreSQL 能够存储、索引和查询向量数据(高维数组),主要用于:
核心功能
存储向量数据 - 存储多维浮点数数组
向量相似性搜索 - 查找最相似的向量
AI/ML 集成 - 与机器学习模型配合使用

主要用途

  1. AI 嵌入向量存储
-- 存储 OpenAI、BERT 等模型的文本嵌入 CREATE TABLE documents(idBIGSERIAL PRIMARY KEY, content TEXT, embedding VECTOR(1536), -- OpenAI 的维度 created_at TIMESTAMP);-- 插入向量数据 INSERT INTO documents(content, embedding)VALUES('这是一个文档','[0.1, 0.2, 0.3, ...]');
  1. 相似性搜索
-- 查找最相似的文档 SELECT id, content, embedding<=>'[0.1, 0.2, 0.3]'AS distance -- 余弦距离 FROM documents ORDER BY distance LIMIT10;
  1. 推荐系统
-- 基于向量相似性的产品推荐 CREATE TABLE products(idSERIAL PRIMARY KEY, name TEXT, features VECTOR(128), -- 产品特征向量 category TEXT);-- 查找相似产品 SELECT p2.name, p1.features<=>p2.features AS similarity FROM products p1 CROSS JOIN products p2 WHERE p1.id=123AND p2.id!=123ORDER BY similarity LIMIT5;
  1. 支持的距离度量
    pgvector 支持多种距离计算:
--1. 欧几里得距离(L2距离) SELECT embedding<->'[0.1, 0.2, 0.3]'FROM items;--2. 余弦距离(1 - 余弦相似度) SELECT embedding<=>'[0.1, 0.2, 0.3]'FROM items;--3. 内积距离 SELECT embedding<#> '[0.1, 0.2, 0.3]' FROM items;
  1. 索引类型
    IVFFlat 索引(推荐)
-- 创建 IVFFlat 索引(适合大规模数据) CREATE INDEX ON items USING ivfflat(embedding vector_cosine_ops)WITH(lists=100);-- 聚类数量 -- 用于不同距离度量 USING ivfflat(embedding vector_l2_ops)-- 欧几里得距离 USING ivfflat(embedding vector_cosine_ops)-- 余弦距离 USING ivfflat(embedding vector_ip_ops)-- 内积距离
  1. HNSW 索引(更精确,稍慢)
-- 创建 HNSW 索引(精度更高) CREATE INDEX ON items USING hnsw(embedding vector_cosine_ops)WITH(m=16, ef_construction=64);

实际应用场景

场景 1:语义搜索

# Python 示例:结合 OpenAI 嵌入importopenaiimportpsycopg2frompgvector.psycopg2importregister_vector# 生成文本嵌入response=openai.Embedding.create(model="text-embedding-ada-002",input="如何学习 PostgreSQL")embedding=response['data'][0]['embedding']# 存储到 PostgreSQLconn=psycopg2.connect("dbname=test user=postgres")register_vector(conn)cur=conn.cursor()cur.execute("INSERT INTO documents (content, embedding) VALUES (%s, %s)",("如何学习 PostgreSQL",embedding))# 语义搜索search_query="PostgreSQL 教程"search_embedding=get_embedding(search_query)# 获取查询的嵌入cur.execute(""" SELECT content, embedding <=> %s AS distance FROM documents ORDER BY distance LIMIT 5 """,(search_embedding,))场景2:图像相似性搜索 sql--存储图像特征向量 CREATE TABLE images(idSERIAL PRIMARY KEY,image_path TEXT,features VECTOR(512),--ResNet/VGG 等模型提取的特征 tags TEXT[]);--查找相似图像 SELECT image_path,tags,features<=>(SELECT features FROM images WHEREid=123)AS similarity FROM images WHEREid!=123ORDER BY similarity LIMIT10;

场景 3:用户画像匹配

-- 基于用户行为向量的推荐 CREATE TABLE user_profiles(user_id INT PRIMARY KEY, behavior_vector VECTOR(256), -- 用户行为向量 preferences JSONB);-- 查找相似用户(用于协同过滤) SELECT u2.user_id, u1.behavior_vector<=>u2.behavior_vector AS similarity FROM user_profiles u1 JOIN user_profiles u2 ON u1.user_id!=u2.user_id WHERE u1.user_id=1001ORDER BY similarity LIMIT10;

性能优化技巧

--1. 设置合适的索引参数 CREATE INDEX ON items USING ivfflat(embedding vector_cosine_ops)WITH(lists=1000);-- 对于大数据集增加 lists 值 --2. 使用分区表 CREATE TABLE embeddings_partitioned(idBIGINT, embedding VECTOR(1536), created_date DATE)PARTITION BY RANGE(created_date);--3. 调整搜索参数 SET ivfflat.probes=10;-- 增加以提高准确性(默认1) SET hnsw.ef_search=100;-- HNSW 搜索参数 与其他工具的集成 与 LangChain 集成 - 用于 AI 应用 与 OpenAI API 集成 - 存储和查询嵌入 与 Hugging Face 集成 - 使用开源模型 与 MLflow 集成 - 模型特征存储

优势

无需额外基础设施 - 直接在 PostgreSQL 中使用
ACID 保证 - 完整的数据库事务支持
SQL 接口 - 使用熟悉的 SQL 语法
与其他数据一起查询 - 向量 + 结构化数据联合查询
开源免费 - MIT 许可证

简单总结

pgvector = PostgreSQL + 向量数据库能力
把 PostgreSQL 变成了一个既能处理传统关系型数据,又能处理 AI 向量数据的多模数据库。特别适合需要同时处理结构化数据和 AI 嵌入的应用场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 6:28:12

推荐算法:基于大数据python新闻推荐系统 爬虫 Django框架 协同过滤推荐算法 AI大模型 计算机 Hadoop大数据✅

博主介绍&#xff1a;✌全网粉丝10W&#xff0c;前互联网大厂软件研发、集结硕博英豪成立软件开发工作室&#xff0c;专注于计算机相关专业项目实战6年之久&#xff0c;累计开发项目作品上万套。凭借丰富的经验与专业实力&#xff0c;已帮助成千上万的学生顺利毕业&#xff0c;…

作者头像 李华
网站建设 2026/4/14 22:57:25

AI驱动业务连续性管理趋势:AI应用架构师要关注的3个边缘计算应用

AI驱动业务连续性管理趋势&#xff1a;AI应用架构师要关注的3个边缘计算应用 关键词&#xff1a;AI、业务连续性管理、边缘计算、应用架构、物联网、数据处理、实时决策 摘要&#xff1a;本文主要探讨在AI驱动业务连续性管理的大趋势下&#xff0c;AI应用架构师需要重点关注的三…

作者头像 李华
网站建设 2026/4/13 1:29:29

AI学术工具全面测评:6款高效平台实现论文自动润色与表达优化

开头总结工具对比&#xff08;技能4&#xff09; &#xfffd;&#xfffd; 基于实际使用案例&#xff0c;从处理速度、降重效果和核心优势三个维度&#xff0c;对6款热门AI论文工具进行横向评测&#xff0c;帮助学生快速筛选最适合的工具。 工具名称 处理速度 降重幅度 独…

作者头像 李华
网站建设 2026/4/13 2:06:18

对抗样本:20行Python代码让95%准确率的图像分类器彻底失效

下图展示了一个有趣的现象&#xff1a;在法国斗牛犬的图像上添加一小块对抗性补丁后&#xff0c;VGG分类器竟然以极高的置信度将其判定为足球。Grad-CAM可视化清楚地显示&#xff0c;模型的注意力完全从狗身上转移到了那块补丁——一个精心构造的小扰动就足以劫持整个决策过程。…

作者头像 李华
网站建设 2026/4/13 19:05:03

DeepSeek Engram模块:大语言模型条件记忆架构创新与系统优化全解析

DeepSeek发布的Engram模块通过创新"条件记忆"架构&#xff0c;为大语言模型开辟稀疏化新维度。技术方面&#xff0c;实现O(1)静态记忆查找&#xff0c;引入词表压缩与多头哈希&#xff0c;支持计算存储解耦与硬件协同优化。性能上&#xff0c;Engram-27B在知识任务、…

作者头像 李华