什么是向量数据库VectorDatabase?
随着基础模型的兴起,VectorDatabase(矢量数据库/向量数据库)的受欢迎程度直线上升。事实上,向量数据库在大型语言模型的上下文之外也很有用。
当涉及到机器学习时,我们经常与向量嵌入打交道。向量数据库的创建是为了在处理它们时有特别好的表现:
- 储存。
- 更新。
- 检索。
当我们谈论检索时,我们指的是检索与查询最相似的向量集,其形式是嵌入在同一潜伏空间的向量。这种检索程序被称为近似近邻(ANN)搜索。
这里的查询可以是一个对象的形式,比如我们想找到类似的图像。或者它可以是一个问题,我们想为它检索相关的上下文,然后通过LLM将其转化为答案。
让我们来看看如何与向量数据库互动:
写或更新数据:
- 选择一个ML模型来生成Vector Embeddings。
- 嵌入任何类型的信息:文本、图像、音频、表格。用于嵌入的ML模型的选择将取决于数据的类型。
- 通过嵌入模型的运行,获得你的数据的向量表示。
- 将额外的元数据与向量嵌入一起存储。这个数据以后将被用于预过滤或后过滤ANN搜索结果。
- Vector DB对Vector Embedding和元数据分别进行索引。有多种方法可用于创建向量索引,其中一些方法: 随机投影,产品量化,位置敏感的哈希。
- 向量数据与向量嵌入的索引和与嵌入对象有关的元数据一起存储。
读取数据
7. 一个针对向量数据库执行的查询通常由两部分组成:
- 将用于ANN搜索的数据。例如,你想找到类似的图像。
- 元数据查询,以排除那些事先知道的拥有特定品质的向量。例如,鉴于你正在寻找类似的公寓图片--排除特定地点的公寓。
8. 你针对元数据索引执行元数据查询。它可以在ANN搜索程序之前或之后进行。
9. 你将数据嵌入到Latent空间中,所用的模型与将数据写入Vector DB的模型相同。
10. 应用ANN搜索程序,检索出一组向量嵌入。用于ANN搜索的流行的相似性措施包括: 余弦相似度,欧几里得距离,点积。
一些流行的向量数据库: Pinecone, Weviate, Milvus, Vespa.