支持向量存储:PostgresSQL及pgvector扩展详细安装步骤!老工程接入RAG功能必备!
之前文章和大家分享过,将会出一篇专栏(从电脑装ubuntu系统,到安装ubuntu的常用基础软件:jdk、python、node、nginx、maven、supervisor、minio、docker、git、mysql、redis、postgresql、mq、ollama等),目前CSDN专栏(https://blog.csdn.net/a13879442471/category_12899690.html)已经分享了jdk、node、redis、ollama、python的搭建,今天继续和大家分享ubuntu如何快速安装PostgreSQL以及数据库向量扩展pgvector
postgressql安装详细步骤
1、更新系统包
sudo apt upgrade
2、使用命令安装postgresql
使用以下命令安装,一路y下去就可以
sudo apt install postgresql postgresql-contrib
3、启动postgresql服务
sudo systemctl start postgresql
4、设置开机启动postgresql
sudo systemctl enable postgresql
5、创建新用户
PostgreSQL安装后,默认会创建一个名为 <font style="color:rgb(36, 41, 47);">postgres</font>
的用户。你可以使用这个用户登录到PostgreSQL。
5.1、切换到postgres用户并进入PostgreSQL
sudo -i -u postgres
psql
5.2、创建新用户和数据库 这里我创建了一个my_robot用户,密码为:myROBOT123,然后创建了一个vector数据库,并把该数据库全部操作权限赋权给my_robot
CREATE USER my_robot WITH PASSWORD 'myROBOT123';
CREATE DATABASE vector OWNER my_robot;
GRANT ALL PRIVILEGES ON DATABASE vector TO my_robot;
5.3 退出PostgreSQL命令行,并退出postgres用户
这里需要操作2步,才能退出到云服务器下,先\q退出postgresql命令行,再exit退出postgres用户
\q
exit
6、配置可公网访问
因为我需要在别的服务器访问该数据库,所以需要打开配置允许公网访问
6.1、编辑pg_hba.conf配置文件
编辑pg_hba.conf配置文件
sudo vim /etc/postgresql/14/main/pg_hba.conf
在文件底部添加以下参数
host all all 0.0.0.0/0 md5
注意踩坑项
这里需要把all改为你前面的用户名,否则会提示权限问题
6.2、编辑postgresql.conf配置文件
sudo vim /etc/postgresql/14/main/postgresql.conf
打开地址监听
listen_addresses = '*'
如果想要访问安全些,这里可以把*改成指定ip地址
6.3、重启PostgreSQL服务
sudo systemctl restart postgresql
7、打开云服务器的PostgreSQL端口
我部署在的云服务器上,所以需要再去服务器把安全组打开postgresql端口公网访问,postgresql的默认安全端口是5432
如果端口有更改的,也可以在服务器使用命令(netstat -nltp)查看具体端口
8、测试访问
使用可视化工具Navicat Premium,点击新建连接,选择PostgreSQL
把第5步创建的用户名、密码及数据库名拷贝过来
引申阅读
postgresql是什么?
PostgreSQL是一种开源的关系型数据库管理系统(RDBMS),它具有高度的可靠性、稳定性和扩展性。PostgreSQL支持大部分SQL标准,并提供许多高级功能,如复杂查询、外键、触发器、视图等。它也支持许多扩展,可以用于处理各种不同类型的数据。PostgreSQL被广泛用于企业和开发者的应用程序中,是一个功能强大且可靠的数据库解决方案。
postgresql和mysql存储数据有什么区别?
PostgreSQL和MySQL是两种流行的开源关系型数据库管理系统,它们在存储数据方面有一些区别:
数据类型和功能
- PostgreSQL:
- 支持更丰富的数据类型,如数组、JSON、HSTORE、范围类型等。
- 提供更高级的功能,如窗口函数、CTE(Common Table Expressions)、全文搜索等。
- 支持更复杂的查询和数据操作,如递归查询、复杂的多表连接等。
- MySQL:
- 数据类型相对简单,主要支持基本的数据类型,如整数、字符串、日期等。
- 提供一些特定的功能,如全文索引(在某些存储引擎中)、地理空间数据类型和函数。
- 以简单易用和性能优化著称,适合快速开发和部署。
存储引擎
- PostgreSQL:
- 使用单一的存储引擎,称为“Heap Storage”,它处理所有类型的数据存储。
- 支持表空间(Tablespaces),可以将表和索引存储在不同的物理位置。
- MySQL:
- 支持多种存储引擎,如InnoDB、MyISAM、Memory等,每种引擎有不同的特性和优化。
- 默认的存储引擎是InnoDB,它支持事务、行级锁和外键约束。
事务和并发
- PostgreSQL:
- 提供强大的事务支持,包括ACID(原子性、一致性、隔离性、持久性)特性。
- 支持多种隔离级别,包括Serializable。
- MySQL:
- 也提供事务支持,但不同存储引擎的事务特性有所不同。
- InnoDB存储引擎支持完整的ACID事务,而MyISAM等其他存储引擎不支持事务。
性能和优化
- PostgreSQL:
- 在复杂查询和数据分析方面表现出色,适合数据仓库和分析应用。
- 优化器功能强大,能够处理复杂的查询计划。
- MySQL:
- 在简单查询和高并发读取方面表现良好,适合Web应用和在线事务处理(OLTP)。
- 优化器相对简单,但在某些场景下性能较高。
社区和支持
- PostgreSQL:
- 社区活跃,文档丰富,有大量的扩展和插件。
- 强调数据完整性和功能丰富性。
- MySQL:
- 社区同样活跃,有大量的用户和开发者。
- 强调性能和易用性,适合快速开发和部署。
什么场景下需要使用PostgreSQL?
选择PostgreSQL还是MySQL取决于具体的应用需求。如果需要更丰富的数据类型和高级功能,PostgreSQL可能是更好的选择。如果需要简单易用和高并发性能,MySQL可能更适合。PostgreSQL因其强大的功能、丰富的数据类型和高级特性,在多种场景下都非常适用。以下是一些常见的使用场景:
1. 复杂查询和数据分析
- 数据仓库和BI系统:PostgreSQL支持复杂的查询和数据聚合操作,适合用于数据仓库和商业智能系统。
- 地理空间数据:PostgreSQL通过PostGIS扩展支持地理空间数据类型和函数,适合用于GIS(地理信息系统)应用。
2. 数据完整性和高级功能
- 事务处理:PostgreSQL提供完整的事务支持,包括ACID特性,适合需要高度数据完整性的应用。
- 复杂数据类型:支持数组、JSON、HSTORE等复杂数据类型,适合需要存储非结构化或半结构化数据的应用。
3. 数据一致性和并发控制
- 多用户并发:PostgreSQL提供强大的并发控制机制,适合多用户同时访问和修改数据的应用。
- 隔离级别:支持多种隔离级别,包括Serializable,适合需要严格数据一致性的应用。
4. 扩展性和灵活性
- 扩展插件:PostgreSQL有丰富的扩展和插件,可以增加新的功能和数据类型,适合需要高度定制化的应用。
- 表继承和分区:支持表继承和分区,适合需要管理大量数据和复杂数据结构的应用。
5. 安全和合规性
- 数据加密:PostgreSQL支持数据加密和安全特性,适合需要遵守数据安全和隐私法规的应用。
- 审计和日志:提供详细的审计和日志功能,适合需要监控和记录数据操作的应用。
6. 科研和教育
- 科研项目:PostgreSQL的丰富功能和灵活性使其成为科研项目的理想选择,可以支持复杂的数据分析和实验。
- 教育机构:作为开源数据库,PostgreSQL在教育机构中广泛使用,用于教学和实验。
7. 企业级应用
- 企业资源规划(ERP):PostgreSQL适合用于企业资源规划系统,支持复杂的数据模型和业务逻辑。
- 客户关系管理(CRM):适合用于客户关系管理系统,支持大量的客户数据和复杂的业务流程。
总结
PostgreSQL在需要复杂查询、高级数据类型、事务完整性、并发控制和扩展性的场景下表现出色。无论是数据仓库、地理信息系统、科研项目还是企业级应用,PostgreSQL都是一个强大的选择。
安装pgvector扩展步骤
在Ubuntu上手工安装pgvector,并将其集成到PostgreSQL 14中,可以按照以下步骤进行:
- 安装必要的依赖:
sudo apt-get update
sudo apt-get install -y build-essential postgresql-server-dev-14
- 克隆pgvector仓库:
git clone --branch v0.6.2 git@github.com:pgvector/pgvector.git
cd pgvector
- 编译并安装pgvector:
make
sudo make install
- 配置PostgreSQL以加载pgvector扩展:
编辑PostgreSQL的配置文件postgresql.conf
,通常位于/etc/postgresql/14/main/postgresql.conf
。
sudo vim /etc/postgresql/14/main/postgresql.conf
找到shared_preload_libraries
行,并添加pgvector
:
shared_preload_libraries = 'vector'
- 重启PostgreSQL服务:
sudo systemctl restart postgresql
- 在PostgreSQL数据库中创建pgvector扩展:
登录postgres用户,使用psql
su - postgres
psql
使用psql
或其他PostgreSQL客户端连接到你的数据库,并运行以下命令:
CREATE EXTENSION vector;
- 验证安装:
你可以通过以下查询来验证pgvector是否安装成功:
SELECT * FROM pg_available_extensions WHERE name = 'pgvector';
如果返回结果中包含pgvector
,则表示安装成功。
通过以上步骤,你已经成功在Ubuntu上手工安装了pgvector,并将其集成到PostgreSQL 14中。现在你可以在数据库中使用pgvector提供的向量相似性搜索功能了。
相关文章:

支持向量存储:PostgresSQL及pgvector扩展详细安装步骤!老工程接入RAG功能必备!
之前文章和大家分享过,将会出一篇专栏(从电脑装ubuntu系统,到安装ubuntu的常用基础软件:jdk、python、node、nginx、maven、supervisor、minio、docker、git、mysql、redis、postgresql、mq、ollama等),目前…...
【部署】如何离线环境创建docker容器执行python命令行程序
回到目录 【部署】如何离线环境创建docker容器执行python命令行程序 本文以 dify_import项目为例,讲解如何在离线服务器上,搭建docker容器环境,执行python命令行程序 1. 一台有互联网的服务器(ubuntu24.04) 1.1. 拉取一个ubuntu的docker镜…...

idea常用配置 properties中文输出乱码
propertis配置中文乱码 源码和编译后的都是中文 程序输入效果 idea配置3处 程序输出效果 自定义注释模板 IDEA 中有以下两种配置模板。 File and Code Templates Live Templates File and Code Templates File and Code Templates 用来配置文件和代码模板,即…...
【Bluedroid】蓝牙 HID Host connect全流程源码解析
蓝牙 HID(Human Interface Device,人机接口设备)是智能设备与外设(如键盘、鼠标、游戏手柄)交互的核心协议。本文围绕Android蓝牙 HID 主机模块的连接流程,从上层应用发起连接请求开始,逐层解析协议栈内部的状态检查、设备管理、SDP 服务发现、L2CAP 通道建立等关键步骤…...

day1 大模型学习 Qwen系列学习
Qwen 模型学习笔记:RM、SFT 与 RLHF 技术解析 一、Qwen 模型概述 Qwen 是阿里巴巴开源的大型语言模型系列,旨在实现通用人工智能(AGI)。其架构包括基础语言模型(如 Qwen-7B、Qwen-14B、Qwen-72B)和经过后训练的对话模型(如 Qwen-Chat)。后训练主要通过 SFT 和 RLHF 技…...

Unity3D仿星露谷物语开发47之砍树时落叶特效
1、目标 当橡树被砍伐时的落叶粒子效果。 2、创建粒子物体 Hierarchy -> PersistentScene下创建新物体命名为DeciduousLeavesFalling。 添加Particle System组件。 基础配置如下:(暂时勾选Looping实时可以看生成效果,后面反选即可&am…...

第十节第六部分:常见API:DateTimeFormatter、Period、Duration
DateTimeFormatter类常用方法 Period类常用方法 Duration类常用方法 总结 代码: 代码一:DateTimeFormatter类常用方法 package com.itheima.jdk8_time;import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;public class DateT…...

如何在VSCode中更换默认浏览器:完整指南
引言 作为前端开发者,我们经常需要在VSCode中快速预览HTML文件。默认情况下,VSCode会使用系统默认浏览器打开文件,但有时我们可能需要切换到其他浏览器进行测试。本文将详细介绍如何在VSCode中更换默认浏览器。 方法一:使用VSCo…...
B2160 病人排队
题目描述 编写一个程序,将登记的病人按照以下原则排出看病的先后顺序: 老年人(年龄 ≥60 岁)比非老年人优先看病。老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。非老年人按登记的先后顺序看病。输入格式 第 1 行,输入一个小于 100 的正整数,表示病人…...

【机器人】复现 3D-Mem 具身探索和推理 | 3D场景记忆 CVPR 2025
3D-Mem 是用于具体探索和推理的3D场景记忆,来自CVPR 2025. 本文分享3D-Mem复现和模型推理的过程~ 下面是一个推理和选择识别的结果: 看一下机器人探索的效果: 下面是真实环境下,官方跑的demo,3D-Mem无需训…...

鸿蒙进阶——CMakelist、GN语法简介及三方库通用移植指南
文章大纲 引言一、GN常用的内置变量二、GN常用的内置函数三、CMake 重要语法1、生成动态库2、生成静态库3、生成OBJECT 库4、重要的函数和模块4.1、add_definitions4.2、execute_process4.3、add_dependencies4.4、install4.5、FetchContent 四、GN 重要语法1、编译Target2、预…...

CSS-5.1 Transition 过渡
本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…...
TTS:VITS-fast-fine-tuning 快速微调 VITS
1,项目概述 VITS是一种语音合成的方法,是一个完全端到端的TTS 模型,它使用预先训练好的语音编码器将文本转化为语音,并且是直接从文本到语音波形的转换,无需额外的中间步骤或特征提取。 VITS的工作流程为:…...

从虚拟仿真到行业实训再到具身智能--华清远见嵌入式物联网人工智能全链路教学方案
2025年5月23-25日,第63届中国高等教育博览会(高博会)将在长春中铁东北亚国际博览中心举办。作为国内高等教育领域规模大、影响力广的综合性展会,高博会始终聚焦教育科技前沿,吸引全国高校管理者、一线教师、教育科技企…...

告别手动绘图!2分钟用 AI 生成波士顿矩阵
波士顿矩阵作为经典工具,始终是企业定位产品组合、制定竞争策略的核心方法论。然而,传统手动绘制矩阵的方式,往往面临数据处理繁琐、图表调整耗时、团队协作低效等痛点。 随着AI技术的发展,这一现状正在被彻底改变。boardmix博思白…...

GraphPad Prism工作表的管理
《2025新书现货 GraphPad Prism图表可视化与统计数据分析(视频教学版)雍杨 康巧昆 清华大学出版社教材书籍 9787302686460 GraphPadPrism图表可视化 无规格》【摘要 书评 试读】- 京东图书 GraphPad Prism统计数据分析_夏天又到了的博客-CSDN博客 工作…...

UE 材质几个输出向量节点
PixelNormalWS...
【modelscope/huggingface 通过colab将huggingface 模型/数据集/空间转移到 modelscope并下载】
1. 准备 注册一个modelscope账号(国内的)拿到对应的访问令牌SDK/API令牌注册一个google账号, 登录colab 2. 开始干! 打开一个ipynb 安装依赖包 !pip install -qqq modelscope huggingface-hub -U选择安装git lfs !curl -s https://packag…...

告别静态UI!Guineration用AI打造用户专属动态界面
摘 要 作为智能原生操作系统 DingOS 的核心技术之一,Guineration 生成式 UI 体系深刻践行了 DingOS“服务定义软件”的核心理念。DingOS 以“一切皆服务、服务按需而取、按用付费”为设计宗旨,致力于通过智能原生能力与粒子服务架构,实现资源…...

第六届电子通讯与人工智能国际学术会议(ICECAI 2025)
在数字化浪潮中,电子通讯与人工智能的融合正悄然重塑世界的运行逻辑。技术基础的共生关系是这场变革的核心——电子通讯如同“信息高速公路”,通过5G等高速传输技术,将海量数据实时输送至AI系统,使其能够像人类神经系统般快速响应…...
【C/C++】C++并发编程:std::async与std::thread深度对比
文章目录 C并发编程:std::async与std::thread深度对比1 核心设计目的以及区别2 详细对比分析3 代码对比示例4 适用场景建议5 总结 C并发编程:std::async与std::thread深度对比 在 C 中,std::async 和 std::thread 都是用于并发编程的工具&am…...
每日算法刷题Day11 5.20:leetcode不定长滑动窗口求最长/最大6道题,结束不定长滑动窗口求最长/最大,用时1h20min
6. 1695.删除子数组的最大得分(中等) 1695. 删除子数组的最大得分 - 力扣(LeetCode) 思想 1.给你一个正整数数组 nums ,请你从中删除一个含有 若干不同元素 的子数组**。**删除子数组的 得分 就是子数组各元素之 和 。 返回 只删除一个 子…...
STL中的Vector(顺序表)
vector容器的基本用法: template<class T> class vector { T* _a; size_t size; size_t capacity; } 尾插和遍历: vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3);//遍历 for(int i0;i<v.size();i) {cout<<…...
iOS Runtime与RunLoop的对比和使用
Runtime 机制 核心概念 Objective-C 的动态特性:Objective-C 是一门动态语言,很多工作都是在运行时而非编译时决定的消息传递机制:方法调用实际上是发送消息 objc_msgSend(receiver, selector, ...)方法决议机制:动态方法解析、…...

解决vscode在任务栏显示白色图标
长久不用,不知道怎么着就显示成白色图标,虽然不影响使用,但是看起来不爽 问了豆包,给了个解决方法: 1、打开隐藏文件, 由于图标缓存文件是隐藏文件,首先点击资源管理器中的 “查看” 菜单&am…...

架构思维:构建高并发扣减服务_分布式无主架构
文章目录 Pre无主架构的任务简单实现分布式无主架构 设计和实现扣减中的返还什么是扣减的返还返还实现原则原则一:扣减完成才能返还原则二:一次扣减可以多次返还原则三:返还的总数量要小于等于原始扣减的数量原则四:返还要保证幂等…...
Vue 3 官方 Hooks 的用法与实现原理
Vue 3 引入了 Composition API,使得生命周期钩子(hooks)在函数式风格中更清晰地表达。本篇文章将从官方 hooks 的使用、实现原理以及自定义 hooks 的结构化思路出发,全面理解 Vue 3 的 hooks 系统。 📘 1. Vue 3 官方生…...
Vue3 打印表格、Element Plus 打印、前端打印、表格导出打印、打印插件封装、JavaScript 打印、打印预览
🚀 Vue3 高级表格打印工具封装(支持预览、分页、样式美化) 现已更新至npm # npm npm install vue-table-print# yarn yarn add vue-table-print# pnpm pnpm add vue-table-printgithunb地址: https://github.com/zhoulongshao/vue-table-print/blob/main/README.MD关键词…...
湖北理元理律师事务所:专业债务优化如何助力负债者重获生活掌控权
在当前经济环境下,个人债务问题日益凸显。湖北理元理律师事务所通过其专业的债务优化服务,为负债群体提供了一条合法合规的解决路径。本文将客观分析专业债务规划的实际价值,不涉及任何营销内容。 一、债务优化的核心价值 科学评估…...
RAGFlow知识检索原理解析:混合检索架构与工程实践
一、核心架构设计 RAGFlow构建了四阶段处理流水线,其检索系统采用双路召回+重排序的混合架构: S c o r e f i n a l = α ⋅ B M...