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

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 嵌入的应用场景。

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

相关文章:

  • 【大数据毕设全套源码+文档】基于springboot+Hadoop的手机销售数据分析系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 基于提供的镜像构建PostGIS、pgvector 的 PostgreSQL 18镜像的Dockerfile
  • 学长亲荐!专科生必看9款一键生成论文工具TOP9测评
  • 推荐算法:基于大数据python新闻推荐系统 爬虫 Django框架 协同过滤推荐算法 AI大模型 计算机 Hadoop大数据✅
  • 机器学习:基于python新闻推荐系统 热点新闻分析 可视化分析 协同过滤推荐算法 Django框架 冷启动 推荐算法 计算机毕业设计(源码+文档)
  • 宏智树 AI:ChatGPT 学术版驱动的全流程学术创作智能中枢
  • 【大数据毕设全套源码+文档】基于python深度学习的短视频内容理解与推荐系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 记一次 DOIO KB04-B01 改映射
  • stm32 CubeIDE DMA模式的串口收发
  • AI智能体从入门到精通:程序员必学的Agent开发实战指南,含LangGraph代码示例,建议收藏
  • 【大数据毕设全套源码+文档】基于Python+大数据技术的热门微博数据可视化分析(丰富项目+远程调试+讲解+定制)
  • STM32 CubeIDE 使用蓝牙模块实现手机控制LED灯
  • 查重去 AI 双保险!宏智树 AI:让论文告别 “标红焦虑” 的智能优化神器
  • 【大数据毕设源码分享】基于python的时尚女装抖音号评论数据分析系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【大数据毕设全套源码+文档】基于python的爬虫与文本挖掘的网络舆情监控系统设计与实现(丰富项目+远程调试+讲解+定制)
  • AI应用架构师避坑:量子计算与AI协同中的资源竞争问题
  • 为什么说“ChatGPT的思考、判断、归纳、回答最具有人类智慧特征”?Why Is It Said “ChatGPT the Most Human-Like Wisdom Traits“?
  • Ivan Zhao | 蒸汽、钢铁与无限心智
  • 学术写作新选择:6个AI优化平台评测,智能润色改善论文逻辑与流畅性
  • python: excel 两个工作表中的员工比对
  • [DASCTF Oct X 吉林工师 欢迎来到魔法世界~]《魔法少女雪殇——光与暗的对决》——剧场版的一些思路
  • MySQL与openGauss不兼容点对比表
  • 【大数据毕设源码分享】基于Python的热门微博数据可视化分析(程序+文档+代码讲解+一条龙定制)
  • 【AI+教育】生成式AI赋能教育研究与写作
  • 基于stm32单片机的智能家居控制系统
  • 论文语言优化指南:通过6款AI工具实现自动化、高精准度的学术润色
  • 【车载audio开发】【Qualcomm PAL 详解 6】【PAL 总体架构与模块交互指南】
  • DBeaver 使用笔记
  • 2026最新强韧柔顺洗发水国货品牌top5推荐!国内优质洗发水企业权威榜单发布,科学护发方案助力解决多重头皮困扰
  • AI学术工具全面测评:6款高效平台实现论文自动润色与表达优化