机器学习工程与系统

向量数据库(vector database)

/ VEK-tur DAY-tuh-bays /

向量数据库,是一种专门打造的存储,用来按「含义」、而非按「精确匹配」去找东西。现代 AI 把文本、图像或音频,转成一长串数字,叫做嵌入(embedding)——是某个空间里的坐标,在那空间里,相似的东西落得彼此挨近,不相干的东西落得彼此遥远。向量数据库存着数以百万计的这种坐标,并飞快地回答一个核心问题:「给定这个点,离它最近的其他点是哪些?」而那个「最近」,翻译过来就是「含义上最相似」。

拿它跟普通数据库比一比。普通数据库精于精确查找——找出「姓名等于『史密斯』」的那一行——可对含义视而不见;它分不清「car」和「automobile」是相关的,也看不出一张海滩照片与一张海岸照片相像。向量数据库,正是为这种模糊的、基于含义的检索而生的。诀窍在于「快」:把一条查询挨个跟数以百万计的点去比,会慢得受不了,所以这些系统用上巧妙的索引,迅速找出「近似的」最近邻,拿一丁点儿精确,换来巨大的速度。

为什么这很重要:向量数据库是今天许多应用型 AI 背后的检索引擎——语义搜索、推荐,尤其是检索增强生成,也就是语言模型在作答之前先去查一查相关事实。诚实的提醒是:数据库只懂得「在它被给定的那个嵌入空间里」的相似,所以它的结果,好不过造出那些向量的嵌入模型——糟糕的嵌入,意味着自信而错误的「相似」结果。而且大多数数据库在设计上就是近似的,所以它们偶尔会漏掉一个真正最近的匹配。对小规模的集合,向量数据库往往是不必要的负担;一次朴素的搜索就能办成这事。

你在一个客服网站上搜索「我的笔记本开不了机」。向量数据库把你这条查询的嵌入,与几千篇帮助文章相比对,返回了一篇题为《设备无法上电》的文章——哪怕它与你的搜索一个字都不重合,只因它们的含义彼此挨得很近。

按含义匹配,而非按字眼——那篇文章一个关键词都不沾,却恰恰是对的。

向量数据库的结果,有意义到什么程度,全看喂进去的嵌入有多好。它忠实地返回「嵌入模型认为相似」的东西——所以那个模型若有盲区或偏见,搜索便一并继承了过来,外表却显得很权威。数据库负责「找」;而「相似」究竟意味着什么,是由嵌入模型来定义的。

又称
vector storevector search engine向量数据库向量检索向量库