嵌入向量以数值数组的形式存储在向量数据库中,专为高效的相似性搜索而设计。当你存储一个嵌入向量时,数据库会将其保存为高维向量——浮点数列表——它代表了从你的数据(文本、图像等)中提取的特征。例如,来自 BERT 等模型的文本嵌入向量可能是一个 768 维的向量。这些向量使用优化的数据结构进行索引,以实现快速比较,例如近似最近邻 (ANN) 算法。除了向量之外,通常还会存储唯一标识符、时间戳或标签等元数据,以提供上下文。数据库的核心工作是检索与查询向量相似的向量,这需要在存储效率和搜索速度之间取得平衡。
向量数据库使用专门的索引技术来有效地管理嵌入向量。一种常见的方法是分层可导航小世界 (HNSW),它将向量组织成图层以减少搜索时间。另一种方法是倒排文件 (IVF) 索引,它将相似的向量分组到集群中,并在查询期间仅搜索相关的集群。例如,在产品推荐系统中,用户偏好和产品特征的嵌入向量可以使用 IVF 进行索引,以快速缩小候选匹配范围。一些数据库还应用量化,将向量压缩成较低位表示(例如,8 位整数)以节省内存并加快计算速度。这些技术牺牲了一些准确性来换取性能,允许查询扩展到数十亿个向量而无需详尽的比较。
开发人员通过 API 与向量数据库交互,这些 API 抽象了底层的存储机制。例如,当使用像 Pinecone 或 Milvus 这样的数据库时,你通常会通过客户端库上传嵌入向量,指定维度和距离度量(例如,余弦相似度)等参数。数据库在后台处理分区、复制和更新。例如,将新的嵌入向量添加到现有索引可能会触发一个后台进程来更新 ANN 图或重新聚类数据。查询时,数据库使用索引来查找近似匹配项,并将它们与关联的元数据一起返回。这种设置允许语义搜索或欺诈检测等应用程序高效运行,即使数据集增长。大多数数据库还支持按元数据进行过滤,让你将向量相似性与传统的查询约束相结合。