【AI】你必须得了解的向量数据库

82 阅读5分钟

🟡 SQL 是什么?

SQL 的设计初衷是为了处理结构化数据,它的全称就是SQL(Structured Query Language,结构化查询语言)是专门用于操作关系型数据库的语言。非关系型数据库(NoSQL 数据库)并不依赖 SQL 语言,而是通过键直接访问对应的值。向量数据库也不使用 SQL,而是专注于高维向量的存储和检索。其查询方式基于相似度计算,而不是字段匹配。空间数据库(Spatial Database)其实可以被视为关系型数据库的一种扩展,它在传统的关系型数据库基础上增加了对空间数据的支持,空间数据库引入了新的字段类型,用于表示空间数据,所以它仍然使用 SQL,但对其进行了扩展,增加了专门的空间查询功能。例如空间关系查询,空间索引等原始SQL没有的函数。

🟡 数据库类型

关系型数据库(PostgreSQL)非关系型数据库(Redis)向量数据库(inecone、Milvus)
数据存储形式表格键值对、文档、图等等高维向量(Embeddings)。
查询方式基于字段匹配—SQL语法基于键或索引的查找基于相似度的搜索
适用场景结构化数据管理(如用户信息、订单记录)。半结构化或非结构化数据存储(如日志、JSON 文档)。语义搜索、推荐系统、图像检索等高维数据任务。
扩展性扩展性较差(需要分片或分区)。扩展性强(分布式架构支持大规模数据)。针对高维向量优化,支持高效相似度搜索。
性能瓶颈复杂查询可能导致性能下降。数据量过大时可能影响写入或读取性能。向量维度越高,计算相似度的开销越大。

🟡 对比数据存储与查询

(1) 关系型数据库 假设我们有一个用户表:查询SELECT * FROM users WHERE City = 'New York';

IDNameAgeCity
1Alice30New York
2Bob25San Francisco
3Charlie35Los Angeles

(2) 非关系型数据库 使用 MongoDB 存储用户信息:查询db.users.find({ city: "New York" });

{
  "id": 1,
  "name": "Alice",
  "age": 30,
  "city": "New York"
}

(3) 向量数据库 存储用户的兴趣爱好嵌入向量(例如每个用户用一个 128 维的向量表示):

IDVector (128 维)
1[0.1, -0.2, 0.5, ..., 0.8]
2[-0.3, 0.4, -0.1, ..., 0.6]
3[0.7, 0.9, -0.2, ..., -0.4]

查询Find similar vectors to [0.1, -0.2, 0.5, ..., 0.8] using cosine similarity.

🟡 为什么大模型兴起后需要向量数据库?

(1) Token 的限制 :LLM通常有固定的上下文窗口(如 4096 或 8192 个 token)。这意味着模型无法一次性处理超长文档或海量数据。使用嵌入模型(如 text-embedding-ada-002)将文本转换为固定长度的向量表示。将这些向量存储到向量数据库中,以便快速检索相关数据。

(2) 语义搜索的需求:传统数据库的局限性在于本质靠基于关键字匹配或字段过滤,所有关系都需要人为定义,无法自动捕捉数据之间的隐含关系。在一个包含动物信息的数据库中,您需要手动为“猫”和“狗”添加标签(如“哺乳动物”),否则它们之间的相似性无法被发现,当数据规模增大时,人为定义的关系会变得难以维护,而且在面对非结构化数据(如文本、图像)时。向量数据库可以捕捉语义信息,支持基于相似度的搜索。因此,传统数据库更适合处理显式关系,而无法捕捉数据之间的隐含语义。向量数据库的核心思想是通过算法将数据映射到高维空间,并利用向量之间的距离或相似度来捕捉数据之间的隐含关系。使用深度学习模型(如 Word2Vec、BERT、CLIP 等)将原始数据(如文本、图像、音频)转换为固定长度的向量表示。例如,“猫”和“狗”可能被分别表示为 [0.1, -0.2, 0.5][0.2, -0.3, 0.4]。这些向量表示捕捉了数据的语义信息。例如,语义相似的内容在向量空间中彼此靠近。这种相似性是通过算法自动捕捉的,无需人为定义规则或关系。相似度是向量数据库的核心驱动力。向量数据库通过嵌入模型和相似度计算,自动捕捉数据之间的隐含关系,无需人为定义规则或标签。即使面对未见过的数据,嵌入模型也能生成合理的向量表示。例如,新出现的词汇或图片可以直接嵌入到向量空间中。无论是文本、图像还是音频,都可以通过嵌入模型转换为统一的向量表示。这使得向量数据库能够处理多种类型的数据。并且还有一个能力叫动态适应性,比如嵌入模型可以根据上下文生成不同的向量表示。例如,“苹果”在“水果”上下文中和“科技公司”上下文中会有不同的向量。而且还能实时更新,向量数据库支持动态插入和更新向量,适应快速变化的数据环境。

(3) 实时性和效率:调用大模型进行推理的成本较高(如 API 调用费用、延迟等)。在调用大模型之前,先从向量数据库中检索最相关的数据。例如,在问答系统中,先从向量数据库中找到与问题最相关的文档片段,然后将这些片段作为上下文传递给大模型。