最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL向量檢索之pgvector入門(mén)實(shí)戰(zhàn)指南

 更新時(shí)間:2026年01月29日 16:57:50   作者:神的孩子都在歌唱  
pgvector是PostgreSQL的開(kāi)源擴(kuò)展,用于在數(shù)據(jù)庫(kù)中存儲(chǔ)和處理向量數(shù)據(jù),特別是高維嵌入向量(embedding),本文介紹PostgreSQL向量檢索:pgvector入門(mén)指南,感興趣的朋友一起看看吧

一. 什么是 pgvector?

pgvector 是 PostgreSQL 的開(kāi)源擴(kuò)展,用于在數(shù)據(jù)庫(kù)中存儲(chǔ)和處理向量數(shù)據(jù),特別是高維嵌入向量(embedding)。

功能與特點(diǎn)

  1. 向量存儲(chǔ):可將向量數(shù)據(jù)直接存入表中。
  2. 距離計(jì)算:支持 L2(歐氏距離)、Inner Product(內(nèi)積)、Cosine(余弦相似度)等。
  3. 最近鄰搜索:支持精確搜索和近似搜索(IVFFlat / HNSW)。
  4. 兼容 SQL:可以直接與表中的其他列一起做查詢、過(guò)濾和排序。
  5. 可擴(kuò)展性:適合中小規(guī)模向量存儲(chǔ),也能應(yīng)對(duì)大數(shù)據(jù)量場(chǎng)景。

二. 為什么選擇 PostgreSQL + pgvector?

  1. 數(shù)據(jù)整合:向量與原始數(shù)據(jù)存放在同一數(shù)據(jù)庫(kù),無(wú)需單獨(dú)部署向量數(shù)據(jù)庫(kù)。
  2. 事務(wù)和安全:繼承 PostgreSQL 的事務(wù)、權(quán)限控制、備份與復(fù)制機(jī)制。
  3. 易于擴(kuò)展:可以直接使用 SQL 做 JOIN、過(guò)濾條件,實(shí)現(xiàn)混合檢索。
  4. 降低維護(hù)成本:只需要維護(hù)一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),減少運(yùn)維復(fù)雜度。
  5. 可視化和監(jiān)控:可以使用 PostgreSQL 現(xiàn)有工具進(jìn)行監(jiān)控和分析。

三. 安裝與啟用

  1. 確保 PostgreSQL 支持?jǐn)U展(通常 PostgreSQL 13+)
  2. 安裝 pgvector

啟用擴(kuò)展:

CREATE EXTENSION IF NOT EXISTS vector;

驗(yàn)證安裝:

SELECT * FROM pg_extension WHERE extname='vector';

成功后即可在表中創(chuàng)建向量列。

四. 基本數(shù)據(jù)結(jié)構(gòu)

  • 向量列類(lèi)型:vectorvector(n),其中 n 是向量維度。
  • 示例表結(jié)構(gòu):
CREATE TABLE documents (
    id BIGSERIAL PRIMARY KEY,
    embedding VECTOR(3) -- 假設(shè)嵌入向量是 3 維
);

小貼士:向量列的維度必須固定,查詢和索引時(shí)保持一致。

五. 基本操作

5.1 插入向量

INSERT INTO documents (embedding) VALUES ('[1,2,3]'), ('[4,5,6]'),('[4,0,5]');

5.2 查詢向量最近鄰

-- 使用 L2 距離
SELECT id,embedding <-> '[1,2,3]' as score,embedding FROM documents ORDER BY embedding <-> '[1,2,3]' LIMIT 5;

根據(jù)score的得分,就能查詢出相近的向量,值越小代表越相似,算法如下
公式

5.3 常用距離運(yùn)算符

操作符相似度度量說(shuō)明推薦場(chǎng)景值越小代表
<->歐氏距離 (L2 Distance)計(jì)算兩個(gè)向量之間的幾何距離圖像、音頻、地理數(shù)據(jù)檢索越相似
<#>負(fù)內(nèi)積 (- Inner Product)取負(fù)號(hào)后的內(nèi)積,用于最大內(nèi)積搜索推薦系統(tǒng)、模型打分越相似
<=>余弦距離 (Cosine Distance)1 - 余弦相似度,對(duì)向量長(zhǎng)度不敏感文本語(yǔ)義檢索、跨語(yǔ)言向量匹配越相似

后面會(huì)出一篇關(guān)于這些運(yùn)算符計(jì)算使用的文章

5.4 其他操作

# 向現(xiàn)有表中添加向量列
ALTER TABLE items ADD COLUMN embedding vector(3);
# 更新向量
UPDATE items SET embedding = '[1,2,3]' WHERE id = 1;
# 刪除向量
UPDATE items SET embedding = '[1,2,3]' WHERE id = 1;

六. Python 示例

使用 pgvector-pythonpsycopg2 處理向量:

import numpy as np
import psycopg2
from pgvector.psycopg2 import register_vector
# 連接數(shù)據(jù)庫(kù)
conn = psycopg2.connect(host='192.168.1.101', dbname='test-agent', user='postgres', password='123456', port=5433)
register_vector(conn)  # 注冊(cè) vector 類(lèi)型
cur = conn.cursor()
# 插入示例向量
embedding = np.random.rand(3).astype('float32')
print(embedding)
cur.execute(
    "INSERT INTO documents (embedding) VALUES (%s)",
    (embedding,)  # 注意這里的逗號(hào),確保是元組格式
)
conn.commit()
# 查詢最近鄰
query_embedding = np.random.rand(3).astype('float32')
print(query_embedding)
cur.execute(
    "SELECT id, embedding,embedding <-> %s as score  FROM documents ORDER BY embedding <-> %s LIMIT 5",
    (query_embedding, query_embedding,)
)
rows = cur.fetchall()
for r in rows:
    print(r)
cur.close()
conn.close()

七. 小結(jié)

  • pgvector 是 PostgreSQL 的向量擴(kuò)展,支持高維嵌入向量存儲(chǔ)與檢索。
  • 提供精確與近似最近鄰查詢,并可與 SQL 完美結(jié)合。
  • 基礎(chǔ)操作包括創(chuàng)建表、插入向量、查詢最近鄰以及選擇合適的距離運(yùn)算符。

到此這篇關(guān)于PostgreSQL向量檢索之pgvector入門(mén)實(shí)戰(zhàn)指南的文章就介紹到這了,更多相關(guān)postgresql向量檢索pgvector內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于PostgreSQL/openGauss?的分布式數(shù)據(jù)庫(kù)解決方案

    基于PostgreSQL/openGauss?的分布式數(shù)據(jù)庫(kù)解決方案

    ShardingSphere-Proxy?作為透明數(shù)據(jù)庫(kù)代理,用戶無(wú)需關(guān)心?Proxy?如何協(xié)調(diào)背后的數(shù)據(jù)庫(kù)。今天通過(guò)本文給大家介紹基于PostgreSQL/openGauss?的分布式數(shù)據(jù)庫(kù)解決方案,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • PostgreSQL 打印日志信息所在的源文件和行數(shù)的實(shí)例

    PostgreSQL 打印日志信息所在的源文件和行數(shù)的實(shí)例

    這篇文章主要介紹了PostgreSQL 打印日志信息所在的源文件和行數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • PostgreSQL 角色與用戶管理介紹

    PostgreSQL 角色與用戶管理介紹

    這篇文章主要介紹PostgreSQL 角色與用戶管理相關(guān)知識(shí),需要的朋友可以參考下
    2013-08-08
  • Postgresql 查詢表引用或被引用的外鍵操作

    Postgresql 查詢表引用或被引用的外鍵操作

    這篇文章主要介紹了Postgresql 查詢表引用或被引用的外鍵操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • 如何在PostgreSQL中查看有哪些用戶和用戶權(quán)限

    如何在PostgreSQL中查看有哪些用戶和用戶權(quán)限

    對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),用戶以及權(quán)限管理非常重要,讓不用的用戶具有不同的權(quán)限集合,將會(huì)顯著的避免誤操作,這篇文章主要介紹了在PostgreSQL中查看有哪些用戶和用戶權(quán)限的相關(guān)資料,需要的朋友可以參考下
    2025-10-10
  • PostgreSQL中數(shù)據(jù)批量導(dǎo)入導(dǎo)出的錯(cuò)誤處理

    PostgreSQL中數(shù)據(jù)批量導(dǎo)入導(dǎo)出的錯(cuò)誤處理

    在 PostgreSQL 中進(jìn)行數(shù)據(jù)的批量導(dǎo)入導(dǎo)出是常見(jiàn)的操作,但有時(shí)可能會(huì)遇到各種錯(cuò)誤,下面將詳細(xì)探討可能出現(xiàn)的錯(cuò)誤類(lèi)型、原因及相應(yīng)的解決方案,并提供具體的示例來(lái)幫助您更好地理解和處理這些問(wèn)題,需要的朋友可以參考下
    2024-07-07
  • PostgreSQL Public 模式的風(fēng)險(xiǎn)及安全遷移問(wèn)題小結(jié)

    PostgreSQL Public 模式的風(fēng)險(xiǎn)及安全遷移問(wèn)題小結(jié)

    本文主要討論了PostgreSQL中public模式的問(wèn)題和解決方案,public模式默認(rèn)對(duì)所有用戶開(kāi)放訪問(wèn)權(quán)限,容易發(fā)生命名沖突,且難以維護(hù)和隔離,修改或刪除它可能導(dǎo)致擴(kuò)展無(wú)法正常工作,為解決這問(wèn)題,建議新建模式,將public模式下的所有業(yè)務(wù)對(duì)象遷移過(guò)去
    2024-10-10
  • PostgreSQL數(shù)據(jù)庫(kù)的基本查詢操作

    PostgreSQL數(shù)據(jù)庫(kù)的基本查詢操作

    這篇文章采用詳細(xì)的代碼示例為大家介紹了PostgreSQL數(shù)據(jù)庫(kù)的基本查詢操作使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • PostgreSQL ALTER TABLE 命令常用操作

    PostgreSQL ALTER TABLE 命令常用操作

    本文詳細(xì)介紹了PostgreSQL的ALTER TABLE命令,包括命令格式、常用操作、注意事項(xiàng)及總結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-02-02
  • PostgreSQL標(biāo)準(zhǔn)建表語(yǔ)句分享

    PostgreSQL標(biāo)準(zhǔn)建表語(yǔ)句分享

    這篇文章主要介紹了PostgreSQL標(biāo)準(zhǔn)建表語(yǔ)句分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12

最新評(píng)論

广德县| 梧州市| 重庆市| 景东| 墨竹工卡县| 浦东新区| 莱阳市| 淅川县| 开封县| 资溪县| 沙田区| 虞城县| 洞头县| 正安县| 屯留县| 类乌齐县| 酒泉市| 卢龙县| 东辽县| 青浦区| 罗城| 中山市| 宾川县| 清河县| 上蔡县| 五大连池市| 九江县| 红河县| 临澧县| 五原县| 怀化市| 武川县| 江川县| 兴山县| 穆棱市| 巫溪县| 巴林左旗| 南平市| 潮安县| 康定县| 惠来县|