从 TF-IDF 到 Transformers:实现四代语义搜索

语义搜索如何从简单的关键字匹配演变为现代基于转换器的语言理解?这篇实践文章使用 Python 逐步构建了四代语义搜索系统。从 TF-IDF 到 Transformers:实现四代语义搜索的帖子首先出现在 Towards Data Science 上。

来源:走向数据科学

“美将拯救世界”——费奥多尔·陀思妥耶夫斯基

A. 简介

并不是一夜之间出现的。今天基于变压器的系统让人感觉几乎神奇,能够捕捉上下文,甚至想法之间的微妙关系。但当今语义搜索系统的起源实际上是渐进的。在嵌入、变压器和大型语言模型出现之前,研究人员使用关键字匹配、TF-IDF 向量和传统的机器学习方法来分析文本。

许多早期的想法从未真正消失。事实上,现代系统仍然建立在几十年前开发的概念之上。该领域逐层发展,每一代人都解决了一些问题,同时也暴露了新的问题。

理解进化很重要。在机器学习中,就像在一般科学中一样,了解我们来自哪里通常可以帮助我们了解我们的前进方向。语义搜索的历史也是人工智能本身发生重要转变的故事:从透明的、人工设计的系统到日益智能的模型,其内部推理更加难以解释。通过这种方式,我们从明确的检索规则和手动设计的特征转向能够直接从数据中学习意义的抽象表示的系统。

在本文中,我们将通过一个具体的例子来探讨这一进展:将学生的艺术评论与专家对同一幅画的评论进行比较。我们不会立即跳入嵌入和转换器,而是构建一系列日益复杂的检索系统,检查它们的优点和局限性。

我们将介绍语义搜索演变的四个主要阶段:

方法 1 — 手工检索特征 +TF–IDF
  • 一个透明的排名系统,将 TF-IDF 余弦相似性与可解释的特征(例如关键词重叠、批评长度归一化和新近度加权)相结合。
  • 方法 2 — 用于语义排名的经典机器学习 方法 3 — 基于嵌入的语义搜索

    B. 数据