首页 / 文章 / 向量数据库详解:机器如何通过语义进行搜索

向量数据库详解:机器如何通过语义进行搜索

了解向量数据库如何将文本转换为数值嵌入以实现语义搜索,以及它们与传统数据库有何不同。

1497 词

什么是向量数据库?

在了解向量数据库的工作原理之前,先理解它试图解决的具体问题会更有帮助。

想象你有一个搜索栏,输入了“dog.”这个词。标准的搜索功能会逐行扫描文档,寻找完全相同的字符串“dog.”。但如果文档中实际使用的是“puppy”这个词又会怎样?普通文本搜索会完全忽略它,因为对计算机而言,“dog”和“puppy”只是两串不同的字符序列,尽管我们人类能立刻意识到它们指的是同一种事物。

这就是核心问题。计算机擅长匹配完全相同的文本字符串,但难以自行理解其含义。而向量数据库正是为填补这一差距而设计的。

简而言之,这就是根本问题所在。有了这个认识,让我们来看看向量究竟是什么。

向量到底是什么呢?

最简单的来说,向量只是一组数字而已。并没有什么神秘的。这组数字用来表示其他事物,可以是单个单词、整句话、整个段落,甚至是图片。

你可能会疑惑,一串数字怎么就能代表一个单词呢?

想想你每天都在使用的东西:GPS坐标。当你把位置告诉朋友时,不会描述为“在大树附近,蓝门后面,商店旁边”。相反,你只需发送两个数字——纬度和经度,这两个数值就能精确标出你的位置。

向量的工作原理也是如此。不同之处在于,与用两个数字确定地球表面的位置不同,向量可能包含数百个数字,用来在庞大的意义空间中定位某个单词或句子。

因此,当人工智能模型将“狗”这个词转换为向量时,实际上就是为它在该空间中分配一个坐标。而“小狗”这个单词得到的坐标会非常接近“狗”的坐标,因为这两个词在含义上也很相近。

向量数据库并非魔法,它只是一种将意义转化为数字并基于相似度而非精确匹配来进行搜索的巧妙方法。

意义之图

想象一张巨大的地图,但上面散布的并非城市,而是各种词语。含义相近的词语会彼此靠近,而意义无关的词语则相距甚远。

在这样的地图上,“狗”、“幼犬”和“犬科动物”会紧密聚集在一起,因为它们都指向同一个概念。“苹果”、“香蕉”和“芒果”则会形成另一个独立的群体。而像“悲伤”这样的词语则会孤立存在,与其他词语毫无关联,因为它与那些词没有任何实质性的联系。

向量数据库本质上就是负责存储所有这些坐标的系统。当你提交一个问题时,它会找到地图上与你的问题坐标最接近的已存储坐标。本质上,这就是整个机制。

向量数据库究竟是如何工作的?

这一过程可分为四个主要步骤:

  1. 将文本转换为向量(此步骤称为嵌入)
  2. 将该向量与其对应的文本一起存储在数据库中
  3. 也将你的搜索查询转换为向量
  4. 找到最接近的匹配向量,并返回与之关联的文本

让我们更详细地了解每一个步骤。

1. 嵌入:将文本转换为数字

在存储任何内容之前,每句话或文档都会先经过嵌入模型处理。该模型的作用是接收一段文本并从中生成一个向量,也就是刚才提到的那种长数字列表。

例如,将“我喜欢机器学习”这样的句子输入嵌入函数后,会得到一系列数值作为输出,这些数值包含正负方向的十分位和百分位数。

经过这种转换后,句子就不再仅仅是一串字符,而是变成了位于庞大语义空间中的某个特定点。

2. 存储向量

向量生成后会被保存在向量数据库中,同时存储其对应的文本。目前最常用的向量数据库包括Pinecone、Chroma、Weaviate和Qdrant。无需记住这些名称,只需知道这类工具正是为处理此类存储而设计的。

3. 将问题转换为向量

当你输入一个问题,比如“什么是机器学习?”,这个问题会通过相同的嵌入模型处理,进而也被转换成向量。

4. 查找最相似的匹配项

在当前阶段,数据库会获取你的问题对应的向量,并将其与已存储的所有向量进行比对,进而找出与你的查询最接近的那些向量。这种“接近程度”通常是通过一种称为余弦相似度的算法来计算的,不过目前你无需深入了解其背后的数学原理。关键点很简单:彼此靠近的向量所代表的含义也是相近的。

以上就是从开始到结束的整个流程。一旦逐步骤拆解开来看,其实并没有那么复杂。

向量数据库在现实生活中有哪些应用?

你可能会好奇这项技术究竟出现在哪些日常工具中。以下是一些具体的例子:

1. RAG系统在检索增强生成架构中,负责搜索文档的检索组件实际上依赖后台的向量数据库。它本质上是将文档检索与向量搜索连接起来的关键环节。

2. 产品推荐当在线商店显示“相似产品”时,它通常是通过比较产品的向量值而非仅仅匹配类别标签来实现的。

3. 音乐和视频推荐那些根据整体氛围或感觉而非严格依据流派标签来推荐歌曲的应用,是通过比较由音频本身特性构建的向量值来工作的。

4. 聊天机器人与客户支持 在大多数情况下,能够检索公司内部文档以回答客户问题的客服聊天机器人,其实都是在后台依靠向量数据库来运行的。

向量数据库与普通数据库

此时你可能会问,它究竟与你们已经熟悉的传统数据库有何不同。区别如下:

  • 普通数据库存储精确值,并通过精确匹配或筛选来检索数据。它非常适合执行诸如“查找ID为5的客户”这样的查询。
  • 向量数据库以数值形式存储含义,并根据数据之间的相似度来检索信息。它非常适合执行诸如“查找与这个问题类似的文档”这样的查询。

请记住,向量数据库并非用来替代普通数据库的。在实际应用中,大多数系统都是将两者并行使用:普通数据库处理价格、ID、日期等结构化数据,而向量数据库则负责处理需要理解含义的内容,如文本、图像或开放式问题。

最后,简要回顾一下:

  • 传统的关键词搜索只能匹配完全相同的词语,当相同含义以不同方式表达时就会失效
  • 向量其实就是用于表示含义的数字列表
  • 向量数据库存储这些数值表示形式,在进行搜索时能找到最相似的匹配结果

其实就这么简单。其中并无什么神奇之处,只是一种巧妙的含义存储方式,让计算机能够以类似我们大脑自然处理信息的方式对其进行检索。如果您想亲自实践,可以尝试像Chroma这样的工具作为起点,因为它免费且适合初学者使用。

相关阅读

  • 了解人工智能记忆:上下文、嵌入向量、RAG与模型权重详解 — 本文深入剖析了人工智能系统究竟如何存储信息,涵盖了上下文窗口、嵌入向量、向量数据库、RAG以及模型参数等内容。
  • 为何DevSecOps成为人工智能编程时代的新的瓶颈 — 阐述了由人工智能生成的代码如何将软件工程中的瓶颈从编写代码转变为代码验证,进而使得自动化的DevSecOps成为保障信任的关键环节。