news 2026/9/3 8:45:00

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/9/2 21:23:09

【大数据毕设全套源码+文档】基于Hadoop+python的租房数据分析系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 19:50:48

【大数据毕设源码分享】基于springboot+Hadoop的豆瓣电子图书推荐的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 19:51:31

LangChain入门(九)- 从单元测试到行为轨迹追踪,让你的AI不再“乱拐弯”

前言最近在研究LangChain的测试模块&#xff0c;不得不说这玩意儿设计得挺有意思。传统的单元测试在AI智能体面前就像用尺子量水流量——完全不对路。想想看&#xff0c;一个简单的智能体就包含了LLM的随机性、Prompt的蝴蝶效应、工具调用的不确定性&#xff0c;这测试难度直接…

作者头像 李华
网站建设 2026/9/2 19:52:50

论文写作利器:6款AI驱动平台对比评测,智能润色让语言更专业

开头总结工具对比&#xff08;技能4&#xff09; &#xfffd;&#xfffd; 为帮助学生们快速选出最适合的AI论文工具&#xff0c;我从处理速度、降重效果和核心优势三个维度&#xff0c;对比了6款热门网站&#xff0c;数据基于实际使用案例&#xff1a; 工具名称 处理速度 降…

作者头像 李华
网站建设 2026/9/2 20:42:26

AI论文助手Top8:详细解析平台写作能力及降重技术,智能化需求响应

AI论文生成工具排行榜&#xff1a;8个网站对比&#xff0c;论文降重写作功能全 工具对比总结 以下是8个AI论文工具的简要排名&#xff0c;基于核心功能、处理速度和适用性对比。排名侧重实用性与用户反馈&#xff0c;数据源于引用内容案例&#xff1a; 工具名称 主要功能 优…

作者头像 李华