矢量数据库简单介绍:在 Postgres使用 pg_vector

本文介绍了矢量数据库在人工智能中的重要性,特别是Postgres中的pg_vector扩展,它支持向量索引和相似性搜索。通过使用CLIP模型和SQL查询,实现图像与文本描述的嵌入匹配,展示了如何在实际场景中应用这种技术进行图像检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

矢量数据库简单介绍:在 Postgres使用 pg_vector

作为向人工智能大规模转变的一部分,矢量数据库越来越受欢迎。它们也称为矢量化数据库,在人工智能领域发挥着至关重要的作用,因此了解它们的工作原理非常重要。为此,我们首先需要了解什么是向量。

什么是向量?

向量是表示文本或图像等 非结构化数据 的数字数组。

例如,让我们将这些句子表示为向量:

s1 = “I love data”
s2 = “I love candy”

我们可以采用所有单词并创建具有四个维度(每个术语一个)的所谓“词袋”(BoW)模型:

BoW 的问题在于,它们依赖于词频,并且假设每个单词独立于其他单词出现,这是不切实际的假设。这是一个显着的简化,因为在自然语言中,上下文和含义通常在很大程度上取决于词序和词之间的关系。例如,“not good”和“good”在 BoW 模型中被视为相同的两个单词,即使由于“not”的存在而导致它们的含义相反。

为了解决这些限制,开发了更先进的技术。其中包括诸如词嵌入(或嵌入)之类的模型,它们通过考虑单词出现的上下文来捕获更多语义信息。

什么是嵌入(Embedding)?

由神经网络创建的具有大量维度的向量,这些向量是通过预测每个单词的相邻单词可能是什么来创建的。

下面是使用 200 个维度的 Word2Vec 模型生成的嵌入的可视化。您可以使用 Tensorflow Projector 进行模拟.

这个想法是将这些嵌入保存到数据库中以便快速检索。

什么是矢量索引与矢量数据库?

“索引”是一种提高数据库表数据检索操作速度的数据结构。

矢量索引是一种用于根据矢量内容有效地组织和检索矢量的机制。

矢量数据库是一种专门为高效处理和存储矢量数据而设计的数据库。它是一个数据库,包含旨在管理矢量数据的功能,包括存储、检索和查询处理。它可以利用向量索引作为其高效面向向量操作策略的一部分。

什么是 pg_vector?

Postgres 的开源矢量相似性搜索。如果您现在拥有或使用 Postgres,则可以安装 pg_vector 扩展以向 Postgres 添加矢量数据库功能。转到项目GitHub - pgvector/pgvector: Open-source vector similarity search for Postgres以获取安装说明。

pg_vector 入门

要在 Postgres 中启用它,只需执行以下命令:

CREATE EXTENSION IF NOT EXISTS vector;

接下来,创建一个表来保存嵌入向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值