LLM大语言模型(六):RAG模式下基于PostgreSQL pgvector插件实现vector向量相似性检索

目录

HightLight

使用PostgreSQL来存储和检索vector,在数据规模非庞大的情况下,简单高效。

可以和在线业务共用一套DB,减少其他组件的引入,降低复杂度,在业务初期可以极大的提升效率。

Mac上安装PostgreSQL

强烈建议使用Postgres.app模式安装

下载最新版(我下载的是16,已包含pgvector插件)
https://postgresapp.com/downloads.html

图形界面安装,很简单

一定要"Initialize"

bash 复制代码
Installing Postgres.app
Download   ➜   Move to Applications folder   ➜   Double Click

If you don't move Postgres.app to the Applications folder, some features may not work (more info)

Click "Initialize" to create a new server

Configure your $PATH to use the included command line tools (optional):

sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

DBever图形界面管理端

创建DB

创建mydb

使用向量检索

SQL 复制代码
# 在mydb里启用pgvector插件
CREATE EXTENSION vector;

# 创建一张表items,其中的embedding字段是vector类型
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));

# 添加数据
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');

# 相似性检索
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;

vector相似度计算

符号 相似度计算
<-> L2距离
<=> cosine距离
<#> inner product点积距离

近似近邻索引

默认情况下pgvector提供的是精确近邻检索,也即全量计算找近邻,召回精准,但计算性能差。

pgvector还提供了两种近似近邻索引:

  1. HNSW - added in 0.5.0
  2. IVFFlat

HNSW近似近邻索引示例

sql 复制代码
# Add an index for each distance function you want to use.

# 创建L2 distance的hnsw近似近邻索引

CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);

# 创建Inner product distance的hnsw近似近邻索引

CREATE INDEX ON items USING hnsw (embedding vector_ip_ops);

# 创建Cosine distance的hnsw近似近邻索引

CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops);

2000维以内都可以索引。

Vectors with up to 2,000 dimensions can be indexed.

具体使用哪种近似近邻索引,根据具体业务来测试。

相关推荐
whaosoft-14314 分钟前
51c视觉~CV~合集3
人工智能
网络研究院2 小时前
如何安全地大规模部署 GenAI 应用程序
网络·人工智能·安全·ai·部署·观点
凭栏落花侧2 小时前
决策树:简单易懂的预测模型
人工智能·算法·决策树·机器学习·信息可视化·数据挖掘·数据分析
xiandong205 小时前
240929-CGAN条件生成对抗网络
图像处理·人工智能·深度学习·神经网络·生成对抗网络·计算机视觉
innutritious6 小时前
车辆重识别(2020NIPS去噪扩散概率模型)论文阅读2024/9/27
人工智能·深度学习·计算机视觉
橙子小哥的代码世界7 小时前
【深度学习】05-RNN循环神经网络-02- RNN循环神经网络的发展历史与演化趋势/LSTM/GRU/Transformer
人工智能·pytorch·rnn·深度学习·神经网络·lstm·transformer
985小水博一枚呀8 小时前
【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。
人工智能·python·rnn·深度学习·lstm·ntm
SEU-WYL9 小时前
基于深度学习的任务序列中的快速适应
人工智能·深度学习
OCR_wintone4219 小时前
中安未来 OCR—— 开启高效驾驶证识别新时代
人工智能·汽车·ocr
matlabgoodboy9 小时前
“图像识别技术:重塑生活与工作的未来”
大数据·人工智能·生活