查看原文
其他

与Jina一起建立神经搜索的权威指南

Jina AI 工程团队 Jina AI 2023-03-21

神经搜索 是跨模态机器学习最有前景的应用之一,它的核心思想是利用前沿的深度学习网络构建搜索系统的每个组件。简单来说,神经搜索就是 深度学习网络驱动的信息检索。在学术界,它通常被称为神经信息检索(Neural IR, Neural Information Retrieval)。

搜索引擎对于在线业务至关重要,亚马逊、阿里巴巴和沃尔玛等电商平台都利用搜索技术为用户推荐商品;Facebook 和 Linkedin 等社交媒体也使用搜索技术将人与内容、群组联系起来;为了给用户提供满足其需求的应用,应用商店也需要更高效的搜索算法。

新一代搜索技术 —— 神经搜索 应运而生。神经搜索和很多行业都息息相关,不仅是在线业务,非数字业务也可以从中获益。例如,神经搜索引擎可以为下一代临床决策支持系统提供动力,它可以帮助医生基于相似患者的医疗记录,制定相应的治疗方案。

什么是神经搜索引擎?

经搜索引擎是基于 深度学习算法 的搜索引擎,搜索引擎由索引器、查询处理器和排名算法三部分构成。在传统的搜索引擎中,每个组件都根据基于规则的算法单独设计的,但在神经搜索引擎中,这三个组件都是利用深度学习技术实现的。

神经搜索引擎有三个主要优势,第一,它可以使用端到端的训练方法,提高了模型的整体性能。第二,所有的组件都统一在同一个框架下(比如Jina),这使得组件之间很方便就能共享信息,同时也带来了更好的性能。第三,可以使用相同的框架构建其它类型的神经搜索引擎(例如图像搜索引擎或视频搜索引擎),这在多模态领域非常有用。

传统(符号)搜索 vs 神经搜索

神经搜索和传统符号搜索最大的区别是神经搜索使用向量表示数据,而传统符号搜索则依赖于符号。这使得神经搜索的 准确性更高,因为相比于符号搜索,它可以利用 DataPoint 之间的关系。图像的向量表示包含更多信息,例如图像的形状、颜色和内容等。这些信息使得图像可以更好地与其它图像或文档匹配。


神经搜索可以利用数据点之间的关系

此外,神经搜索不像传统方法那样受到符号表达能力的限制,相反,它可以从数据中学习到复杂的表征。这为神经搜索在 理解查询的语义 和检索匹配的文档时提供了特有的优势。

同时,由于神经搜索是基于深度学习算法而不是手工制定的规则,因此它可以随着时间的推移(通过微调)适应不断变化的现实条件。而传统搜索依赖于人工制定的规则,这些规则很脆弱,并且需要不断维护。

最后,神经搜索不再局限于文本数据,它可以应用于任何数据类型,包括图像、视频、音频和 3D 模型数据等等。因此,利用神经搜索技术可以构建更灵活、更强大的搜索系统。

神经搜索不只能搜索文本数据,还有图像,音频...


神经搜索的优势是什么?

1. 自然语言:使用神经搜索,您可以用描述性的自然语言指定您要找什么,搜索引擎将返回与您的查询匹配的结果。这是对传统搜索引擎的重大改进,因为传统的搜索引擎只能理解关键字,而神经搜索引擎允许用户输入语句来指定搜索的内容。

2. 改善可用性:神经搜索系统为用户提供 更自然的交互方式,例如通过聊天机器人的对话界面来搜索。

3. 提升准确性:相比于传统搜索,神经搜索 更准确。神经搜索可以从数据中学习到人类很难制定规则的复杂模式。例如,人类可能会制定规则,将包含“猫”这个关键词的文档和与宠物相关的查询匹配,但神经搜索引擎可以在不使用“猫”,而是使用“kitty”或“猫科动物”的情况下匹配文档。这就意味着即使是用户查询和文档中的文本不完全匹配,神经搜索引擎也能根据词语之间的语义相似性找到相关的结果。


神经搜索引擎可以识别语义相似的单词

神经搜索的一个例子就是谷歌的 RankBrain, RankBrain 是一个基于机器学习算法的排名系统。它每天处理数十亿次搜索,并将点击率提高到了15%。

4. 增强用户体验:神经搜索引擎准确性的提高同时提升了用户体验和用户满意度。当用户的使用体验很好时,他们 很有可能会再次使用并向其他人推荐

构建神经搜索引擎的困难

即使深度学习技术驱动搜索引擎的好处很多,但构建神经搜索引擎并不容易,存在很多挑战。

  • 训练神经网络需要 大量带有标签的数据。这些数据可能很难(也很昂贵)获得,训练神经搜索引擎则需要不同模态的数据(如文本、图像、视频等),所以构建数据集的代价和难度更高。

  • 需要 深度学习算法和架构的专业知识。深度学习是一个很新的研究领域,在完成具体的任务时,应该选择什么算法和架构仍需大量的实验。因此,构建神经搜索引擎需要很多设计、实现网络模型的专家。这给建立团队和寻找顾问带来了很大的挑战。

  • 需要大量 计算资源。深度学习算法是计算密集型的,在标准硬件上训练大型网络可能需要几天甚至几周时间。这意味着建立一个神经搜索引擎需要强大的计算资源,如 GPU。

  • 搜索引擎的三个组成部分(索引器、查询处理器、排名算法)都统一在一个框架下(如Jina),所以必须仔细考虑组件间的 信息传递。如果设计不当,可能会导致系统的性能不佳。

尽管存在很多挑战,但构建神经搜索引擎是一项极其激动人心的任务,因为它将可能彻底改变我们在网络上获取信息的方式。

构建神经搜索引擎的指南

以下是用传统方式构建神经搜索引擎的分步指南:

  • 收集数据并创建索引。这一步是你需要将所有想要搜索的数据处理成计算机可读的格式。例如,如果你想搜索维基百科中的文本,首先需要将文章下载为 HTML 文件。然后,你需要写代码提取 HTML 文件中的正文文本(忽略标题,侧边栏等)。最后,你需要将提取到的文本保存成神经搜索引擎可识别的格式(后面会有更多的介绍)。

  • 择或者建立一个深度神经网络,为神经搜索引擎提供动力。就像前面提到的,深度神经网络有很多,因此,选择一个适合信息检索任务的深度神经网络很重要。卷积神经网络(CNNs)和递归神经网络(RNNs)都是不错的选择。

  • 训练深度神经网络。一旦你选择或搭建了网络模型,就可以开始训练你的索引数据了。训练过程是为了微调网络的参数,以便在信息检索任务上(如通过索引文件进行搜索)达到更好的性能。许多方法都可以用于训练网络,例如监督学习和强化学习。

  • 用训练好的模型进行推理。训练完成后,就可以开始推理任务,例如根据用户查询搜索文档。当使用模型进行推理时,主要包含三个部分:1)文档编码,将文档转化为固定长度的向量表示;2)查询编码,将用户查询转换为向量表示;3)相似度函数,计算文档编码器生成的向量与查询编码器生成向量的相似度分数。

搭建神经搜索引擎看起来有许多工作,但是如果你使用像 Jina 这样成熟的神经搜索架构,搭建神经搜索引擎就会容易得多。

市场上最好的 3 个神经搜索框架

Jina 是用于神经搜索和语义搜索的开源框架,Jina 优雅的模块化设计、强大的生态和不断发展的社区,可以帮助开发者利用最少的资源轻松扩展自己的多模态应用。

Google Cloud Search 利用的是和 Googlebot 相同的技术,Cloud Search 可以通过抓取、索引和提供 G-Suite 的内容(包括谷歌云盘、Gmail、网站、群组、日历、Hangouts Chat messages 等),为用户提供最相关的信息。

Microsoft Azure Search 是一种提供完整的解决方案的云搜索服务,它为用户和开发者提供了世界级的搜索体验。Microsoft Azure Search 提供内置的连接器,可以索引常用企业存储库的数据,例如SharePoint Online、Sitecore CMS、Drupal 8+ 和 9+、SQL Server 数据库(on premises & in Azure)、Cosmos DB 等。

Jina:最好的神经搜索框架之一

神经搜索仍然是一项新兴技术,现在还没有很多成熟的开源框架可供选择。这就是 Jina 的用武之地,Jina 是目前市场上最完整的神经搜索开源解决方案,它不仅提供了构建神经搜索系统所有必要的组件,还利用 云原生技术,使得开发者更轻松地部署、扩展神经搜索系统。

Jina 的另一个关键优势是它良好的性能。得益于其基于微服务的独特架构,所以 Jina 可以在不牺牲性能的情况下横向扩展。而且,Jina 系统的每个组件都可以并行运行,所以利用 Jina 构建的神经搜索系统可以达到闪电般的检索速度。

横向扩展:https://docs.jina.ai/concepts/flow/scale-out/

除了可扩展和速度快之外,Jina 也非常灵活。它支持所有流行的深度学习框架(TensorFlow、PyTorch、MXNet 等),因此开发人员可以使用任何框架搭建自己的应用。同时,由于 Jina 内部使用的是 gRPC 协议,所以可以用 Jina Client 或任何 gRPC 绑定语言(包括 Java、Python、C++ 和 Go)轻松地将 Jina 与其他系统集成。


Jina 内部使用了 gRPC 协议

并提供 gRPC、RESTful 和 WebSocket 网关

与其他工具相比,Jina 最后一个优势是 其丰富的生态。除了核心框架本身,Jina 还提供了很多有用的服务和库,降低了神经搜索的技术门槛(如用于共享训练模型的 Executor Hub 和用于用于管理部署的 CLI 工具)。此外,Jina 还支持 Kubernetes 和 Docker Compose,这使得应用可以在任何环境中使用。



结论

总之,神经搜索是一个强大的工具,它正在改写搜索的规则。神经搜索的核心思想是利用深度神经网络构建搜索系统的每个组件。这种方法已经在信息检索领域取得了重大进展,并且很有可能彻底改变我们搜索信息的方式。

神经搜索可以更好地理解用户的意图,并返回更相关的结果。随着神经搜索技术的成熟,为了保持竞争的优势,搜索引擎和其他信息检索系统都应该采用神经搜索技术。除了对商业搜索应用的潜在重大影响外,神经搜索还为数字人文和科学文献发现等领域的学术研究带来了巨大的希望。

从非结构化数据中自动提取特征的能力和对查询的高级语义理解是神经搜索技术的两个关键优势,此外,神经搜索模型可以从数据中学习复杂的信息,所相比于基于规则的方法,神经搜索更容易适应基础分布的变化。这使得神经搜索技术适用于训练数据不断变化的应用,如电子商务或新闻推荐。


更多资料

💻 GitHub: get.jina.ai

📖 文档docs.jina.ai

更多技术文章📖 Jina AI创始人肖涵博士解读多模态AI的范式变革
🎨 语音生成图像任务|🚀 模型微调神器Finetuner
💨 DocArray + Redis:快到飞起来的推荐系统😎 Jina AI正式将DocArray捐赠给Linux基金会🧬 搜索是过拟合的生成;生成是欠拟合的搜索

点击“阅读原文”,即刻了解 Jina

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存