矢量数据库
什么是𝗩𝗲𝗰𝘁𝗼𝗿 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲?
什么是𝗩𝗲𝗰𝘁𝗼𝗿 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲?
随着基础模型的兴起,矢量数据库迅速流行起来。事实上,矢量数据库在大型语言模型上下文之外也很有用。
当谈到机器学习时,我们经常处理向量嵌入。矢量数据库的创建是为了在使用它们时表现特别好:
➡️ 存储。
➡️ 正在更新。
➡️ 正在检索。
当我们谈论检索时,我们指的是以嵌入在同一潜在空间中的向量的形式检索与查询最相似的向量集。这种检索过程称为近似最近邻居(ANN)搜索。
这里的查询可以是像图像这样的对象的形式,我们希望为其找到类似的图像。或者,它可能是一个我们想要检索相关上下文的问题,这些上下文稍后可以通过LLM转换为答案。
让我们来看看如何与矢量数据库交互:
𝗪𝗿𝗶𝘁𝗶𝗻𝗴/𝗨𝗽𝗱𝗮𝘁𝗶𝗻𝗴 𝗗𝗮𝘁𝗮.
1.选择要用于生成矢量嵌入的ML模型。
2.嵌入任何类型的信息:文本、图像、音频、表格。用于嵌入的ML模型的选择将取决于数据的类型。
3.通过嵌入模型运行数据,获得数据的矢量表示。
4.将附加元数据与矢量嵌入一起存储。该数据稍后将用于对ANN搜索结果进行预滤波或后滤波。
5.矢量数据库分别对矢量嵌入和元数据进行索引。有多种方法可用于创建矢量索引,其中一些方法是:随机投影、乘积量化、局部敏感哈希。
6.矢量数据与矢量嵌入的索引和连接到嵌入对象的元数据一起存储。
𝗥𝗲𝗮𝗱𝗶𝗻𝗴 𝗗𝗮𝘁𝗮.
7.针对矢量数据库执行的查询通常由两部分组成:
➡️ 将用于人工神经网络搜索的数据。例如,您想要查找相似图像的图像。
➡️ 元数据查询,以排除预先已知的具有特定质量的矢量。例如,如果您正在寻找类似的公寓图像,则排除特定位置的公寓。
8.根据元数据索引执行元数据查询。它可以在人工神经网络搜索过程之前或之后进行。
9.您使用用于将数据写入Vector DB的相同模型将数据嵌入到Latent空间中。
10.应用ANN搜索过程并检索一组矢量嵌入。用于人工神经网络搜索的常用相似性度量包括:余弦相似性、欧氏距离、点积。
一些流行的矢量数据库:Qdrant,Pinecone,Weviate,Milvus,Faiss,Vespa。