搜索引擎研究:我们如何构建一个AI驱动的搜索引擎(不是Google)

还有你怎么能搜索引擎研究

搜索引擎研究:我们如何构建一个AI驱动的搜索引擎(不是Google)

搜索引擎研究:我们如何构建一个AI驱动的搜索引擎(不是Google)

由Jack Pertschuk合着搜索引擎研究,请查看我们的Github

搜索引擎研究:我们如何构建一个AI驱动的搜索引擎(不是Google)

在本文中搜索引擎研究,我将讲述创建通用的,由AI驱动的搜索引擎的困难,以及我们如何开发解决方案NBoost。

爆炸领域AI信息检索(IR)是一个蓬勃发展的研究领域。 该领域的研究着重于根据搜索结果的含义而不只是关键词来检索最相关的搜索结果。 前沿研究通常涉及采用现有的深度神经网络(例如Google的BERT),并对其进行训练以对搜索结果进行排名。 但是,问题很多(我将在下面讨论)。 构建强大,可扩展的语义搜索引擎并非易事,因此,难怪Google赚了这么多钱。

障碍· 很难击败现有解决方案。 现有的搜索引擎(例如Elasticsearch)使用文本匹配算法(例如Best Match 25)。这些算法通过考虑词频和其他单词模式来工作。 实际上,它们的工作异常出色。 因此,它们很难被击败。

· 即使您击败了现有解决方案,也很难一概而论。 机器学习中经常遇到的问题是,在特定任务上训练了太多模型,以至于无法得出关于新任务的结论。 这称为过度拟合。 即使您的模型为研究文章提供的搜索结果要比基于文本的搜索引擎更好,但这并不意味着它在烹饪食谱上也能很好地工作。

· 现有技术(SoTA)模型通常很慢且无法扩展。 即使您拥有既可以击败文本匹配算法,又可以在许多不同领域工作的完美模型,在生产中使用它的速度可能还是太慢。 通常,SoTA模型(例如BERT)必须在特殊的硬件(GPU)上运行才能扩展到生产工作负载。 该硬件在计算上很昂贵(因此在财务上也很昂贵)。 要构建一个可以对数百万个文档进行排名的搜索引擎,您不仅可以让大型模型对每个搜索结果进行逐一排名。

我们是怎么做到的正如我之前提到的,有大量的研究正在研究搜索引擎中机器学习的含义。 这意味着研究人员正在争夺MS MARCO等信息检索基准的头把交椅。 与现有搜索引擎相比,其中一些模型的搜索结果质量提高了一倍以上。 我们使用了这些模型,并从中吸取了教训,并创建了自己的模型(具有最高基准)。 这就是我们击败现有解决方案的方式。

我们意识到,如果不扩展规模,那么这些都将不会非常有用。 这就是我们构建NBoost的原因。 部署NBoost时,您将部署一种位于用户和搜索引擎之间的尖端模型(一种代理)。 每次用户查询搜索引擎时,模型都会对搜索结果进行排名,并将最佳结果返回给用户。 我们还内置了支持,可通过Kubernetes引擎将NBoost部署到云中,并根据需要扩展到尽可能多的计算机。 这解决了可伸缩性问题。

从一开始,我们就希望创建一个平台,该平台可以成为特定于域的搜索引擎的基础。 因此,我们需要确保NBoost具有足够的通用性,可以应用于知识领域内的不同应用程序/数据集。 NBoost默认模型已针对数百万个bing查询(MS MARCO)进行了训练。 我们发现,我们的默认模型比开箱即用的Elasticsearch增加了80%的搜索结果相关性。 为了测试模型在不同语料库上的可推广性,我们在维基百科查询(TREC CAR)上测试了该数据集,该数据集之前从未见过。 当前端显示默认模型将不同数据集上的搜索结果提高了70%时,这真是令人惊喜。

您可以在此处重现我们的结果。

你也可以!在构建NBoost的过程中,我们竭尽全力使我们的工具开源并易于使用。 我们通过pip,Docker和Helm(Kubernetes)使其可用。 我们的模型托管在Google Bucket上,当您通过nboost –model_dir 运行NBoost时,它们会自动安装。 您可以在我们的基准测试表中找到可用模型的列表。

您可以按照我们的教程来创建自己的AI搜索引擎!

(本文翻译自Cole Thienes的文章《How we built an AI-powered search engine (without being Google)》,参考:}