什么是向量数据库VectorDatabase?

随着基础模型的兴起,VectorDatabase(矢量数据库/向量数据库)的受欢迎程度直线上升。事实上,向量数据库在大型语言模型的上下文之外也很有用。

当涉及到机器学习时,我们经常与向量嵌入打交道。向量数据库的创建是为了在处理它们时有特别好的表现:

  • 储存。
  • 更新。
  • 检索。

当我们谈论检索时,我们指的是检索与查询最相似的向量集,其形式是嵌入在同一潜伏空间的向量。这种检索程序被称为近似近邻(ANN)搜索。

这里的查询可以是一个对象的形式,比如我们想找到类似的图像。或者它可以是一个问题,我们想为它检索相关的上下文,然后通过LLM将其转化为答案。

让我们来看看如何与向量数据库互动:

写或更新数据:

  1. 选择一个ML模型来生成Vector Embeddings。
  2.  嵌入任何类型的信息:文本、图像、音频、表格。用于嵌入的ML模型的选择将取决于数据的类型。
  3. 通过嵌入模型的运行,获得你的数据的向量表示。
  4. 将额外的元数据与向量嵌入一起存储。这个数据以后将被用于预过滤或后过滤ANN搜索结果。
  5. Vector DB对Vector Embedding和元数据分别进行索引。有多种方法可用于创建向量索引,其中一些方法: 随机投影,产品量化,位置敏感的哈希。
  6. 向量数据与向量嵌入的索引和与嵌入对象有关的元数据一起存储。

读取数据
7. 一个针对向量数据库执行的查询通常由两部分组成:

  • 将用于ANN搜索的数据。例如,你想找到类似的图像。
  • 元数据查询,以排除那些事先知道的拥有特定品质的向量。例如,鉴于你正在寻找类似的公寓图片--排除特定地点的公寓。

8. 你针对元数据索引执行元数据查询。它可以在ANN搜索程序之前或之后进行。

9. 你将数据嵌入到Latent空间中,所用的模型与将数据写入Vector DB的模型相同。

10. 应用ANN搜索程序,检索出一组向量嵌入。用于ANN搜索的流行的相似性措施包括: 余弦相似度,欧几里得距离,点积。

一些流行的向量数据库: Pinecone, Weviate, Milvus, Vespa.