向量存储作为常用的语义检索工具,在AI领域的作用好比关系型数据库在传统项目中的作用,不可不学

向量存储的概念 

在AI领域,常用高维向量来进行文本嵌入,即用一个浮点数数组,来表示文本在各个维度上的语义,例如可以用第一个浮点数来表示性别,第二个浮点数来表示年龄等

向量存储即对这些高维向量的存储

数据结构

集合:可以类比关系型数据库的表

向量:即浮点数数组

元数据:与向量关联的结构化数据,如id,插入时间等

Milvus中的向量+元数据可以类比关系型数据库中的一行记录

相似性度量

要进行语义检索,也就是找到语义相近的片段,就需要衡量两个文本的相似性,相似性度量包括以下几种算法

余弦相似度:计算两个向量夹角的余弦值

欧氏距离:欧式空间中的直线距离

曼哈顿距离:曼哈顿空间中的直线距离

切比雪夫距离:切比雪夫空间中的最大维度差异

一般多使用余弦相似度来衡量文本的相似性

索引

IVF:使用聚类算法将向量数据分为多个簇,每个簇由一个中心向量表示,查询时先找最近的簇,然后在簇内精确搜索

特点:内存占用低,对簇划分质量敏感

HNSW:随机选择一部分向量作为入口节点,构建多层图结构,每层图中节点通过有向边连接,查询时从顶层图开始逐步向下层搜索

特点:搜索精度高,但内存占用较高

ANNOY:随机选择一部分向量作为根节点,构建多棵搜索树,每棵树将向量数据分成多个子空间,查询时从根节点向下遍历树结构

特点:内存占用较低,对树结构的质量比较敏感

LSH:通过hash将相似向量映射到相同的桶

Flat:无索引,全量搜索

ps:文本嵌入一般选择IVF做为索引

性能优化

定期重建索引:以适应数据量的变化

调整索引参数:如IVF索引的簇数量nlist

调整搜索参数:如搜索的簇的数量nprobe

Milvus的组件

数据节点:存放向量数据及其对应元数据

索引节点:创建和管理索引

元数据节点:系统的元数据,如集合的定义

查询节点:处理客户端的查询请求

协调节点:监控节点状态,处理故障节点,分配查询任务

消息队列:各组件的通信

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐