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

支持向量存储:PostgresSQL及pgvector扩展详细安装步骤!老工程接入RAG功能必备!

之前文章和大家分享过,将会出一篇专栏(从电脑装ubuntu系统,到安装ubuntu的常用基础软件:jdkpythonnode、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中,可以按照以下步骤进行:

  1. 安装必要的依赖
sudo apt-get update
sudo apt-get install -y build-essential postgresql-server-dev-14
  1. 克隆pgvector仓库
git clone --branch v0.6.2 git@github.com:pgvector/pgvector.git
cd pgvector
  1. 编译并安装pgvector
make
sudo make install
  1. 配置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'
  1. 重启PostgreSQL服务
sudo systemctl restart postgresql
  1. 在PostgreSQL数据库中创建pgvector扩展

登录postgres用户,使用psql

su - postgres
psql

使用psql或其他PostgreSQL客户端连接到你的数据库,并运行以下命令:

CREATE EXTENSION vector;
  1. 验证安装
    你可以通过以下查询来验证pgvector是否安装成功:
SELECT * FROM pg_available_extensions WHERE name = 'pgvector';

如果返回结果中包含pgvector,则表示安装成功。

通过以上步骤,你已经成功在Ubuntu上手工安装了pgvector,并将其集成到PostgreSQL 14中。现在你可以在数据库中使用pgvector提供的向量相似性搜索功能了。

相关文章:

支持向量存储:PostgresSQL及pgvector扩展详细安装步骤!老工程接入RAG功能必备!

之前文章和大家分享过&#xff0c;将会出一篇专栏&#xff08;从电脑装ubuntu系统&#xff0c;到安装ubuntu的常用基础软件&#xff1a;jdk、python、node、nginx、maven、supervisor、minio、docker、git、mysql、redis、postgresql、mq、ollama等&#xff09;&#xff0c;目前…...

【部署】如何离线环境创建docker容器执行python命令行程序

回到目录 【部署】如何离线环境创建docker容器执行python命令行程序 本文以 dify_import项目为例&#xff0c;讲解如何在离线服务器上&#xff0c;搭建docker容器环境&#xff0c;执行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 用来配置文件和代码模板&#xff0c;即…...

【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组件。 基础配置如下&#xff1a;&#xff08;暂时勾选Looping实时可以看生成效果&#xff0c;后面反选即可&am…...

第十节第六部分:常见API:DateTimeFormatter、Period、Duration

DateTimeFormatter类常用方法 Period类常用方法 Duration类常用方法 总结 代码&#xff1a; 代码一&#xff1a;DateTimeFormatter类常用方法 package com.itheima.jdk8_time;import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;public class DateT…...

如何在VSCode中更换默认浏览器:完整指南

引言 作为前端开发者&#xff0c;我们经常需要在VSCode中快速预览HTML文件。默认情况下&#xff0c;VSCode会使用系统默认浏览器打开文件&#xff0c;但有时我们可能需要切换到其他浏览器进行测试。本文将详细介绍如何在VSCode中更换默认浏览器。 方法一&#xff1a;使用VSCo…...

B2160 病人排队

题目描述 编写一个程序,将登记的病人按照以下原则排出看病的先后顺序: 老年人(年龄 ≥60 岁)比非老年人优先看病。老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。非老年人按登记的先后顺序看病。输入格式 第 1 行,输入一个小于 100 的正整数,表示病人…...

【机器人】复现 3D-Mem 具身探索和推理 | 3D场景记忆 CVPR 2025

3D-Mem 是用于具体探索和推理的3D场景记忆&#xff0c;来自CVPR 2025. 本文分享3D-Mem复现和模型推理的过程&#xff5e; 下面是一个推理和选择识别的结果&#xff1a; 看一下机器人探索的效果&#xff1a; 下面是真实环境下&#xff0c;官方跑的demo&#xff0c;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 过渡

本系列可作为前端学习系列的笔记&#xff0c;代码的运行环境是在HBuilder中&#xff0c;小编会将代码复制下来&#xff0c;大家复制下来就可以练习了&#xff0c;方便大家学习。 HTML系列文章 已经收录在前端专栏&#xff0c;有需要的宝宝们可以点击前端专栏查看&#xff01; 点…...

TTS:VITS-fast-fine-tuning 快速微调 VITS

1&#xff0c;项目概述 VITS是一种语音合成的方法&#xff0c;是一个完全端到端的TTS 模型&#xff0c;它使用预先训练好的语音编码器将文本转化为语音&#xff0c;并且是直接从文本到语音波形的转换&#xff0c;无需额外的中间步骤或特征提取。 VITS的工作流程为&#xff1a;…...

从虚拟仿真到行业实训再到具身智能--华清远见嵌入式物联网人工智能全链路教学方案

2025年5月23-25日&#xff0c;第63届中国高等教育博览会&#xff08;高博会&#xff09;将在长春中铁东北亚国际博览中心举办。作为国内高等教育领域规模大、影响力广的综合性展会&#xff0c;高博会始终聚焦教育科技前沿&#xff0c;吸引全国高校管理者、一线教师、教育科技企…...

告别手动绘图!2分钟用 AI 生成波士顿矩阵

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

GraphPad Prism工作表的管理

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

UE 材质几个输出向量节点

PixelNormalWS...

【modelscope/huggingface 通过colab将huggingface 模型/数据集/空间转移到 modelscope并下载】

1. 准备 注册一个modelscope账号&#xff08;国内的&#xff09;拿到对应的访问令牌SDK/API令牌注册一个google账号&#xff0c; 登录colab 2. 开始干! 打开一个ipynb 安装依赖包 !pip install -qqq modelscope huggingface-hub -U选择安装git lfs !curl -s https://packag…...

告别静态UI!Guineration用AI打造用户专属动态界面

摘 要 作为智能原生操作系统 DingOS 的核心技术之一&#xff0c;Guineration 生成式 UI 体系深刻践行了 DingOS“服务定义软件”的核心理念。DingOS 以“一切皆服务、服务按需而取、按用付费”为设计宗旨&#xff0c;致力于通过智能原生能力与粒子服务架构&#xff0c;实现资源…...

第六届电子通讯与人工智能国际学术会议(ICECAI 2025)

在数字化浪潮中&#xff0c;电子通讯与人工智能的融合正悄然重塑世界的运行逻辑。技术基础的共生关系是这场变革的核心——电子通讯如同“信息高速公路”&#xff0c;通过5G等高速传输技术&#xff0c;将海量数据实时输送至AI系统&#xff0c;使其能够像人类神经系统般快速响应…...

【C/C++】C++并发编程:std::async与std::thread深度对比

文章目录 C并发编程&#xff1a;std::async与std::thread深度对比1 核心设计目的以及区别2 详细对比分析3 代码对比示例4 适用场景建议5 总结 C并发编程&#xff1a;std::async与std::thread深度对比 在 C 中&#xff0c;std::async 和 std::thread 都是用于并发编程的工具&am…...

每日算法刷题Day11 5.20:leetcode不定长滑动窗口求最长/最大6道题,结束不定长滑动窗口求最长/最大,用时1h20min

6. 1695.删除子数组的最大得分(中等) 1695. 删除子数组的最大得分 - 力扣&#xff08;LeetCode&#xff09; 思想 1.给你一个正整数数组 nums &#xff0c;请你从中删除一个含有 若干不同元素 的子数组**。**删除子数组的 得分 就是子数组各元素之 和 。 返回 只删除一个 子…...

STL中的Vector(顺序表)

vector容器的基本用法&#xff1a; template<class T> class vector { T* _a; size_t size; size_t capacity; } 尾插和遍历&#xff1a; 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 的动态特性&#xff1a;Objective-C 是一门动态语言&#xff0c;很多工作都是在运行时而非编译时决定的消息传递机制&#xff1a;方法调用实际上是发送消息 objc_msgSend(receiver, selector, ...)方法决议机制&#xff1a;动态方法解析、…...

解决vscode在任务栏显示白色图标

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

架构思维:构建高并发扣减服务_分布式无主架构

文章目录 Pre无主架构的任务简单实现分布式无主架构 设计和实现扣减中的返还什么是扣减的返还返还实现原则原则一&#xff1a;扣减完成才能返还原则二&#xff1a;一次扣减可以多次返还原则三&#xff1a;返还的总数量要小于等于原始扣减的数量原则四&#xff1a;返还要保证幂等…...

Vue 3 官方 Hooks 的用法与实现原理

Vue 3 引入了 Composition API&#xff0c;使得生命周期钩子&#xff08;hooks&#xff09;在函数式风格中更清晰地表达。本篇文章将从官方 hooks 的使用、实现原理以及自定义 hooks 的结构化思路出发&#xff0c;全面理解 Vue 3 的 hooks 系统。 &#x1f4d8; 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关键词…...

湖北理元理律师事务所:专业债务优化如何助力负债者重获生活掌控权

在当前经济环境下&#xff0c;个人债务问题日益凸显。湖北理元理律师事务所通过其专业的债务优化服务&#xff0c;为负债群体提供了一条合法合规的解决路径。本文将客观分析专业债务规划的实际价值&#xff0c;不涉及任何营销内容。 一、债务优化的核心价值 科学评估&#xf…...

RAGFlow知识检索原理解析:混合检索架构与工程实践

一、核心架构设计 RAGFlow构建了四阶段处理流水线,其检索系统采用双路召回+重排序的混合架构: S c o r e f i n a l = α ⋅ B M...