嵌入模型

向量搜索与语义搜索

A woman is looking at a whiteboard covered in post-its. The post-its represent the words in semantic and vector search.

随着 OpenAI 的 GPT-4 等大型语言模型 (LLM) 的日益普及,人们对嵌入模型和向量搜索的兴趣激增。然而,围绕向量相似性搜索是什么、它的功能以及它与语义搜索的关系存在一些混淆。 

简而言之,向量搜索和语义搜索是相互关联但根本不同的概念,其中向量搜索充当语义搜索的构建块,支持基于相关性的数据检索。在本文中,我们将更详细地探讨它们并深入研究它们的区别。 

语义搜索完全与上下文和含义有关。它采用自然语言处理 (NLP) 技术和理解 (NLU) 的混合来解释语言中固有的细微差别、同义词和关系。其目的是提供不仅在文本上相似而且与用户的搜索意图有意义相关的搜索结果,即使查询中使用的确切词语没有出现在内容中。

例如,搜索“气候变化影响”可能会返回讨论“全球变暖影响”的相关文档,即使没有使用确切的短语,这要归功于嵌入在向量中的语义理解。

现在,我们如何将这种细致入微的理解转化为计算机可以处理的东西?这就是向量搜索的用武之地。向量搜索将单词、句子甚至整个文档转换为向量——将它们视为多维空间中的点。这些向量不仅仅是随机点;它们的计算方式是使相似的含义彼此更接近。例如,“卡车”和“汽车”的向量将是相邻的,尽管是不同的词。

这种转换是使用嵌入模型完成的,嵌入模型是一种经过训练以理解单词之间微妙含义和关系的人工智能。执行搜索时,模型会将您的查询转换为向量,然后查找此多维空间中附近的其他向量(文档、网页等)。它们越接近,它们被认为越相关。

利用向量搜索进行语义理解

那么,向量搜索如何转变为语义搜索?这一切都是关于利用这些嵌入来捕捉查询意图的本质。通过分析向量的位置和距离,我们可以推断语义关系,例如同义词、相关概念,甚至是看似无关的术语之间细微的主题联系。

为了利用向量搜索进行语义搜索,系统通常遵循多步骤过程

  1. **为内容生成嵌入**:要搜索的内容使用嵌入模型转换为向量。

  2. **将内容和嵌入存储在向量数据库中**:内容及其嵌入都存储在向量数据库中,然后可以在嵌入上执行性能搜索。

  3. **为查询生成嵌入**:使用与我们用于内容的嵌入模型相同的嵌入模型将查询转换为向量。

  4. **从向量数据库中检索相关数据**:然后要求数据库返回其嵌入最接近查询嵌入的所有项目。对于此任务,向量数据库将使用向量之间的距离函数,例如余弦或欧几里得距离。

**语义搜索**是一个强大的概念,可以实现更有用的计算机系统。系统不会让用户找出要搜索的确切关键字,而是为更广泛的查询返回相关内容。**向量搜索**能够处理和理解含义的几何形状,为开发高级语义搜索系统奠定了基础。这种协同作用不仅提高了搜索结果的准确性,而且使数字交互更加直观和人性化。

理解这些概念至关重要,特别是对于那些涉足人工智能和数据科学领域的人来说。如果您正在构建人工智能应用程序,请查看Timescale 上的 pgai。借助 Timescale 上的 pgai,开发人员可以访问 pgvector、pgvectorscale 和 pgai——这些扩展将 PostgreSQL 转换为易于使用且高性能的向量数据库,以及完全托管的云数据库体验。