PgVectore的使用

PgVectore的使用

一、PgVector的安裝

參照博客:https://blog.csdn.net/u012953777/article/details/147013691?spm=1001.2014.3001.5501

二、PgVector的使用

1、創建表與插入數據?

  • ??定義向量字段??:
CREATE TABLE items (id SERIAL PRIMARY KEY,embedding VECTOR(768),  -- 768維向量(如BERT模型輸出)metadata JSONB
);
  • ??插入向量數據??
INSERT INTO items (embedding, metadata) VALUES ('[0.1, 0.3, ..., 0.8]', '{"title": "文檔1"}'),('[0.4, 0.2, ..., 0.7]', '{"title": "文檔2"}');

2、 索引優化?

pgvector 支持兩種索引類型,針對不同場景優化:

HNSW 索引?

  • 適用場景??:高查詢速度,適合靜態數據(較少更新)。
  • ??創建索引??:
CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops)WITH (m = 16, ef_construction = 64);
  • m:每層的最大鄰居數(默認16,范圍4-100)
  • ef_construction:構建時的搜索范圍(默認100,影響構建速度和精度)

IVFFlat 索引??

??適用場景??:快速構建,適合動態數據(頻繁更新)。
??創建索引??:

CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops)WITH (lists = 100);

運算符類選擇??

vector_l2_ops:歐氏距離(L2)
vector_ip_ops:內積相似度
vector_cosine_ops:余弦相似度

3、相似性搜索?

  • ??基礎查詢??:
SELECT * FROM items
ORDER BY embedding <-> '[0.5, 0.1, ..., 0.9]'  -- 按L2距離排序
LIMIT 10;
  • 動態調整搜索參數??(HNSW):
SET hnsw.ef_search = 200;  -- 擴大搜索范圍以提高召回率
  • 余弦相似度查詢??:
SELECT id, 1 - (embedding <=> '[0.3, ..., 0.2]') AS cosine_similarity
FROM items
ORDER BY cosine_similarity DESC
LIMIT 5;

4、性能優化技巧??

  • ??索引構建時機??:在數據導入后創建索引,避免頻繁更新導致重建。

  • ??參數調優??:

    • ??HNSW??:增大 ef_construction 和 ef_search 提高精度,但會降低速度
    • ?IVFFlat??:增加 lists 提升準確性,但增加內存占用
  • ?歸一化處理??:使用余弦相似度前,確保向量已歸一化(模長為1)

5、高級用法?

混合搜索(向量 + 條件過濾)?

SELECT * FROM items
WHERE metadata->>'category' = '科技'
ORDER BY embedding <=> '[0.2, ..., 0.6]'
LIMIT 10;

分頁查詢?

SELECT * FROM items
ORDER BY embedding <-> '[0.7, ..., 0.1]'
OFFSET 20 LIMIT 10;

6、維護操作?

  • 重建索引??:
REINDEX INDEX items_hnsw_index;
  • ??更新索引參數??:
ALTER INDEX items_hnsw_index SET (ef_construction = 128);

7、注意事項??

?* ?維度限制??:pgvector 支持最高 ??16,000 維??。
?* ?內存管理??:大規模數據需確保足夠內存,尤其是IVFFlat索引。
?* ?數據一致性??:頻繁更新時,IVFFlat可能需要定期重建索引。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75738.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75738.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75738.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python爬蟲爬取淘寶熱銷(熱門)男裝商品信息(課程設計;提供源碼、使用說明文檔及相關文檔;售后可聯系博主)

TOC 本文僅為記錄學習軌跡&#xff0c;如有侵權,聯系刪除 一、環境說明 使用前必須檢查以下環境 &#xff08;1&#xff09;python編譯環境 &#xff08;2&#xff09;python腳本執行所需要的庫&#xff0c;具體看代碼&#xff08;main.py&#xff09;import導入的部分庫 &a…

C++ 排序(1)

以下是一些插入排序的代碼 1.插入排序 1.直接插入排序 // 升序 // 最壞&#xff1a;O(N^2) 逆序 // 最好&#xff1a;O(N) 順序有序 void InsertSort(vector<int>& a, int n) {for (int i 1; i < n; i){int end i - 1;int tmp a[i];// 將tmp插入到[0,en…

計算機視覺圖像處理基礎系列:濾波、邊緣檢測與形態學操作

計算機視覺圖像處理基礎系列&#xff1a;濾波、邊緣檢測與形態學操作 一、前言二、濾波&#xff1a;圖像的精細化處理?2.1 濾波基礎概念?2.1.1 濾波的本質?2.1.2 圖像噪聲來源與類型? 2.2 線性濾波?2.2.1 均值濾波?2.2.2 高斯濾波? 2.3 非線性濾波?2.3.1 中值濾波? 三…

第八課:在SD中安裝拓展插件

3種拓展安裝方式教學 點擊Extensions安裝方式 經由內置列表查詢安裝&#xff0c;打開Available&#xff0c;輸入鏈接&#xff0c;點擊Load from:&#xff0c;然后篩選后點擊Install通過鏈接安裝&#xff0c;復制代碼倉庫地址&#xff0c;github/gitee&#xff0c;輸入Install …

tomcat的web三大組件Sciidea搭建web/maven的tomcat項目

文章目錄 1. web項目的搭建1. 創建web項目2.修改web.xml版本3.添加servlet、jsp依賴4.servlet示例&#xff08;使用注解&#xff09;5.配置tomcat6.添加artifact7.部署8.啟動tomcat、訪問9.打war包10.部署到tomcat 2.maven的項目搭建1.創建項目圖解 2.tomcat啟動方式圖解idea打…

ZKmall開源商城多云高可用架構方案:AWS/Azure/阿里云全棧實踐

隨著企業數字化轉型的加速&#xff0c;云計算服務已成為IT戰略中的核心部分。ZKmall開源商城作為一款高性能的開源商城系統&#xff0c;其在多云環境下的高可用架構方案備受關注。下面將結合AWS、Azure和阿里云三大主流云平臺&#xff0c;探討ZKmall的多云高可用架構全棧實踐。…

【代碼模板】如何用FILE操作符打開文件?fopen、fclose

#include "stdio.h" #include "unistd.h"int main(int argc, char *argv[]) {FILE *fp fopen("1.log", "wb");if (!fp) {perror("Failed open 1.log");return -1;}fclose(fp); }關于權限部分參考兄弟篇【代碼模板】C語言中…

Airflow+Spark/Flink vs. Kettle

在遷移億級&#xff08;單表超過1.3億&#xff09;結構化數據&#xff08;達夢→星環&#xff09;的場景下&#xff0c;Airflow&#xff08;結合分布式計算框架&#xff09;的綜合效果優于Kettle&#xff0c;以下是詳細對比與方案建議&#xff1a; 一、核心對比&#xff1a;Air…

多電機顯示并排序

多電機顯示并排序 要實現根據后端傳遞過來的驅動電機數據的數量來顯示不同數量的數據列表&#xff0c;我們可以使用 Vue 的 v-for 指令來遍歷 driveMotorData 數組&#xff0c;并為每個驅動電機生成一個數據列表。這樣&#xff0c;無論后端傳來多少個驅動電機的數據&#xff0…

圖漾相機——C#語言屬性設置

文章目錄 前言1.示例程序說明2.SDK API功能介紹2.1 ListDevice 枚舉設備2.2 Open 打開相機2.3 OpenDeviceByIP 通過IP打開設備2.4 Close 關閉設備2.5 DeviceStreamEnable 取流使能2.6 DeviceStreamFormatDump 取流分辨率2.7 DeviceStreamFormatConfig 取流分辨率配置2.8 Device…

thinkphp8.0上傳圖片到阿里云對象存儲(oss)

1、開通oss,并獲取accessKeyId、accessKeySecret <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><tit…

跳躍連接(Skip Connection)與殘差連接(Residual Connection)

1. 跳躍連接&#xff08;Skip Connection&#xff09;的基本概念 跳躍連接是一種在深度神經網絡中廣泛應用的技術&#xff0c;它允許信息在網絡中跨層直接傳遞。在傳統的神經網絡里&#xff0c;每一層的輸出僅僅是前一層輸出經過特定變換后的結果。而在具備跳躍連接的網絡中&a…

【硬件視界9】網絡硬件入門:從網卡到路由器

??引言: 專欄:《硬件視界》 【硬件視界8】電源供應器(PSU):計算機的“心臟“ 在數字化高速發展的今天,網絡已成為我們日常生活和工作中不可或缺的基礎設施。而支撐這一基礎設施的核心要素,便是各種各樣的網絡硬件設備。從連接計算機到網絡的網絡適配器,到負責數據轉發與…

最小生成樹理論

1. 基本定義 生成樹&#xff1a;在一個連通無向圖中&#xff0c;一個生成樹是包含所有頂點且邊數為 n?1&#xff08;n為頂點數&#xff09;的無環連通子圖。 最小生成樹&#xff1a;在所有生成樹中&#xff0c;邊權和最小的那一棵樹。也就是說&#xff0c;若每條邊有一個非負…

STM32 HAL庫 CANFD配置工具

用法說明&#xff1a; 該工具適用于STM32HAL庫&#xff0c;可一鍵生成CANFD的HAL庫配置代碼。計算依據為HAL庫&#xff0c;并參考ZLG標準。 軟件界面&#xff1a; 倉庫地址&#xff1a; HAL CANFD Init Gen: 適用于STM32控制器的HAL庫 版本說明&#xff1a; V1.2.0 &#x…

【11408學習記錄】考研英語長難句解析 | 語法拆分+寫作模板+真題精講(附高分秘籍)

2025.04.05 英語語法總結——長難句并列句并列連詞并列句的省略 寫作書信寫作第二段注意 第三段落款 每日一句詞匯第一步&#xff1a;辨別第二步&#xff1a;斷開第三步&#xff1a;簡化 英語 語法總結——長難句 長難句有兩個特點&#xff1a;長、難。 之所以又長又難就是因…

實用的alias別名命令——比2=1+1簡單的基礎命令

目錄 alias命令的用處alias命令的寫法讓alias別名永久存在的辦法下篇預告 alias命令的用處 別名&#xff0c;就是linux系統中的命令的別稱&#xff0c;而alias命令&#xff0c;可以顯示linux系統當前設定的全部別名&#xff0c;當然&#xff0c;也可以自己定義一個別名。 ali…

Kafka 中的批次

在 Kafka 中&#xff0c;批次&#xff08;Batch&#xff09; 是生產者發送消息的一個重要概念。它對 Kafka 的性能、吞吐量、延遲等有很大影響。批量處理可以使消息發送更高效&#xff0c;減少網絡往返和磁盤寫入的開銷。 下面我將詳細解釋 Kafka 中的批次機制&#xff0c;包括…