神经搜索有多能?

2023-11-17

原文:Alex C-G

译文:Piper Hu

(本文阅读时长约为5分钟)

bf4e28240a6b0978520e4cb8e62f7fb3.png

神经搜索 是数据处理上非常新颖的一个话题,也是Jina AI目前着重关注的方向,可是到底神经搜索是什么?它能解决什么问题?与现在开发者们使用的搜索系统搭建又有什么不一样?今天,就让我们一起走进神奇的神经搜索世界,及神经搜索的最佳探索方式——Jina

什么是神经搜索? 


简而言之,神经搜索是一种全新的信息检索方式。神经搜索通过预训练的神经网络来达到传统的训练机器需要被设置各种各样的数据理解规则进行数据理解的效果。这也就意味着,开发者不再需要花费更多的时间在编写各式各样的数据理解规则上,也就解决了搭建复杂数据处理系统中一个非常令人头疼的问题,并且神经系统本身自己也可以在不断使用的过程中自我训练。

什么是Jina?


Jina 是我们搭建的最好的最快的神经搜索搭建框架。

Jina 架构是云原生的,所以在它诞生的第一天起就可以搭建在基于容器的服务上,并且Jina 可以解决任何数据类型的搜索问题,比如基于语义理解的长短文本搜索,图片、声音、视频等多媒体数据类型的搜索,代码搜索等等。总之,利用Jina搭建的搜索系统,应该可以搜索一切!

关于搜索


搜索是一个在日益剧增的巨大产业。就在几年前,搜索还只是在文本框中输入几行文字。而现在可搜索的数据类型已包括文本、语音、音乐、照片、视频、产品等等。在世纪之交之前,谷歌的搜索量每天只有350万次。如今(根据搜索词2020谷歌每天搜索量的最高结果),这个数字可能已经飙升至50亿,是原来的1000多倍。更何况这还不包括每天数百万人通过手机、电脑和虚拟助手搜索的数十亿维基百科文章、亚马逊产品和Spotify播放列表!

下图中谷歌查询的飞速增长即可体现——而这只是截止到2012年!

754b4bdb02d6eca5759cee3bde13effc.png

总之,搜索是一个非常巨大的产业,我们将在这篇文章里讨论到搜索方法的长期霸主——符号搜索,以及勇敢的新锐玩家——神经搜索。

cc5e119b746cd9a0c9d69d4d081c899a.png

符号搜索:基于规则的搜索


我们常用的百度或者谷歌就是一个巨大的通用搜索引擎,但其他公司不能根据自己的需求对其进行调整,并将其插入他们的系统。基于此,像Elastic和Apache Solr这样的框架应运而生。这些符号搜索框架系统允许开发人员编写规则来创建公司所需的可对产品、人物、消息或任何东西进行搜索的处理流程。

让我们以购物平台Shopify为例。

Shopify需对数百个类别中的数百万种产品进行索引和搜索,工程上这不能轻易实现,开发团队也无法使用谷歌这样的通用搜索引擎来搭建服务,所以他们选择了使用Elastic框架并编写特定的规则和处理流程,根据各种标准对产品进行索引、过滤、分类和排序,并将这些数据转换为搜索系统可以理解的符号。下图是一家很受欢迎的Shopify运动鞋店——Greates的页面:

276e9ebf1a2eacc25bdb1ef5e9ed13e0.png

如果你想搜索一对你心仪已久的红色耐克滑板鞋,你会输入“red nike sneakers”。对于一个典型的搜索系统来说,这些只是一个个单纯的词汇,如果你运气不错,你可能碰巧会得到你想要的结果。但如果这些运动鞋被标记为trainers怎么办?或者被标记为深红色?。为解决这些情况,开发人员就需要编写相应的规则:  
    • Red is a color

    • Scarlet is a synonym of red

    • Nike is a brand

    • Sneakers are a type of footwear

    • Another name for sneakers is trainers

或者用JOSN形式的Key-Value 对来表示:

{
    "color": "red",
    "color_synonyms": ["scarlet"],
    "brand": "nike",
    "type": "sneaker",
    "type_synonyms": ["trainers"],
    "category": "footwear"
    }

这些Key-Value对中的每一个都可以看作是一个符号——这也就是符号搜索(Symbolic Search)命名的由来。当用户输入搜索查询时,系统将其分解为符号,并将这些符号与数据库中产品的符号进行匹配。

89bda41499f124bc02c4649cfdf153f9.png

那么,问题来了,如果用户输入的是nikke 而不是nike(拼写错误),或者搜索的是shirts(复数)而不是shirt(语法上的变化)。这些繁杂的语法规则并不能总是被人们所遵循,所以为了获得有效的符号(例如,知道nikke真正要表达的是{"brand":"nike"}则有需要定义更多相应的规则,并将他们在一个复杂的处理流程中按照类似下图的方式连接。

1e25e5ed302cca5f17b63aa67a084d48.png

符号搜索的短板


每一个细枝末节的规则都不能少

上面的搜索查询词是“red nike sneaker man”。但如果用户是一名英国人,他就会按照英国的语言习惯输入“red nike trainer man”。此时,我们就必须向我们的系统解释,sneaker和trainer只是名字不同的同一个东西。而当有人在搜“LV handbag”时,我们又得让系统把LV理解为Louis Vuitton。


为每一种产品设置规则不仅需要花费很长的时间,而且总有一些遗漏之处,若要更换成另一种语言还需重新构建整套语法规则。这将会带来大量的工作、对细节的关注、还有专业的语言知识。 

500589325eeb60a391545b525e708eeb.png

符号搜索相对来说是脆弱的

现实文本总是复杂的:正如我们上面阐述的,如果用户输入“red nike sneaker man”,一个经典的搜索系统必须识别出他们正在搜索的是:red (颜色) Nike (brand 且 拼写正确) sneaker (商品种类) for men (细分品类)。这是通过将搜索字符串和产品细节通过处理流程转换为为相应符号而完成的,而这些处理流程可能产生很多问题。

a2579a0aed687326829129cc81f9ce52.png

  • 处理流程中的每个组件都有一个输出,并作为下一个组件的输入。所以在处理流程早期出现的问题会影响之后的所有流程,破坏整个系统

  • 一些组件的输入可能是多个组件的输出。这意味着你必须引入更多的机制来阻止它们相互阻塞

  • 整体的搜索质量很难提高。仅改进一个或两个组件往往不会带来实际搜索结果的改善

  • 如果用户想使用另一种语言进行搜索,则必须重写所有与语言相关的组件,这增加了维护成本

神经搜索:预训练,无需多言 


相较传统搜索方式,使用现有数据训练出的神经网络进行搜索是一种更简洁、更方便的方法。只要你预先在足够多的不同场景下训练这个系统(预训练模型),它就会学习出一种找到与输入相匹配的输出的泛化能力,输入数据可以是Tumblr GIF、维基百科的句子抑或是Pokémon的图片。而你所需要做的,只是将此模型直接嵌入你的系统,就可以立即开始索引和搜索。

from jina import Document, Executor, requests, Flow




class JinaEngineers(Executor):
    @requests(on='/work')
    def work(self, docs, **kwargs):
        for d in docs:
            d.text += '✅'




def celebrate(resp):
    for d in resp.data.docs:
        print(f'									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

神经搜索有多能? 的相关文章

随机推荐

  • HTML img 强制刷新加载

    img刷新机制为url变化则刷新 当url不变时想要刷新可做如下处理 let url http pic27 nipic com 20130321 9678987 225139671149 2 jpg const time new Date
  • 浏览器默认行为(原生事件)、浏览器中网页渲染顺序

    一 浏览器的原生事件 1 浏览器中存在一些默认行为 比如 文本可复制 图片可 拖拽 这是伪拖拽 实际并没有移动 松开鼠标后 会弹出新的链接 右键会出现菜单 a标签单击会跳转等 2 为什么要阻止默认行为 如某些时候 我们需要写一个a标签 但是
  • docker的联合文件系统(UnionFS)

    docker最大的贡献就是定义了容器镜像的分层的存储格式 docker镜像技术的基础是联合文件系统 UnionFS 其文件系统是分层的 这样既可以充分利用共享层 又可以减少存储空间占用 联合挂载系统的工作原理 读 如果文件在upperdir
  • vue常用标签

    一 内容绑定 1 v text 会替换掉html的内容 eg p p 2 插值表达式占位内容 放在html中 eg p username p 3 v html 可将html内容渲染到页面 v text和 不支持 eg div div con
  • 用于通过声波捕获显示视觉,触觉和音频的全息显示(A volumetric display for visual, tactile and audio presentation using acous)

    Ryuji Hirayama Diego Martinez Plasencia Nobuyuki Masuda Sriram Subramanian 2019年1月31日接收 2019年8月15日收录 2019年11月13日网上公开 摘要
  • java token redis生成算法_java秒杀系列(1)- 秒杀方案总体思路

    前言 首先 要明确一点 高并发场景下系统的瓶颈出现在哪里 其实主要就是数据库 那么就要想办法为数据库做层层防护 减轻数据库的压力 一 简单图示 我用一个比较简单直观的图来表达大概的处理思路 二 生产环境中秒杀抢购的解决方案 1 前端 1 动
  • Qt自定义滑动条

    最近要用到滑动条 Qt自带的QSlider虽然能满足需求 但是操作起来有很多不舒服的地方 于是在它的基础上改了改 分享给大家使用 先放效果图 在QSlider的基础上 改变了样式 绘制了刻度 增加了取整功能 只需要微调就能适应各种需求 头文
  • JavaWeb12(实现基础分页&模糊查询的分页)

    目录 一 效果预览 编辑 二 实现基本分页 2 1 分页sql 每页3条 取第二页 由于伪列不能作用与大于符号也不能作用于between and 因此需要将伪列 gt 名列 2 2 万能公式 2 3 首页 上一页 下一页实现 前端代码 2
  • [论文阅读笔记36]CASREL代码运行记录

    论文阅读笔记33 CASREL 基于标注与bert的实体与关系抽取 https blog csdn net ld326 article details 116465089 总的来说 文档都还是写得很好的 按文档 readme md 来就行
  • 必备技能22: 安装VISIO时,出现64、32版本冲突

    问题描述 安装visio时 遇到如下错误 安装错误 无法安装 64 位版本的 Office 因为在您的 PC 上找到了以下 32 位程序 Office 16 Click to Run Extensibility Component 请卸载所
  • Python制作【大麦网】抢票程序,看演唱会再也不怕没票了

    前言 大麦网 是中国综合类现场娱乐票务营销平台 业务覆盖演唱会 话剧 音乐剧 体育赛事等领域 但是因为票数有限 还有黄牛们不能丢了饭碗 所以导致了 很多人都抢不到票 那么 今天带大家用Python来制作一个自动抢票的脚本小程序 知识点 面向
  • linux安装mysql5.7

    Linux下安装Mysql5 7 超详细完整教程 以及云mysql连接 linux mysql5 7 清香可口柑的博客 CSDN博客 grant all privileges on to root identified by 123456
  • 无人机数据集调研

    最近在研究无人机检测相关领域的内容 因此对目前开源的无人机数据集做一个整理 目录 无人机数据集 一 VisDrone2019 二 UAVDT 无人机数据集 一 VisDrone2019 数据集下载地址 比赛官网 VisDrone2019数据
  • 1分钟免费开通IDaaS云服务

    2020 Zero trust 零信任 持续火热 零信任不仅仅是技术 更是理念的转变 会成为未来十年主流的网络安全架构 企业如何快速构建自己的零信任 SDP防护架构 背景 国内现状 大多数企业尚未建立企业的身份认证和授权中心 能够管理企业内
  • 获取 gps信息_ROS传感器之GPS简介

    一 传感器分类 在自动驾驶或者机器人领域 传感器的使用按照测量对象划分 可分为两大类 一类是测量自身状态 另一类测量环境状态 前者主要包含GPS IMU和编码器 后者主要有激光雷达 毫米波雷达和相机 这里的状态主要是指位置和速度 有些传感器
  • android 登陆界面

    LoginActivity java package com example ruian import android app Activity import android app AlertDialog import android c
  • 用python将结果存进csv文件中

    def writeCsv File species row File species out open data test csv a newline csv writer csv writer out dialect excel csv
  • 代码走查和代码审查_这是经过1000多次代码审查后我学到的东西

    代码走查和代码审查 这个故事最初发表在我的博客上 如果您对这种内容感兴趣 请随时签出并订阅 在过去的三年中 我已经审查了1000多个请求 合并 请求 在那段时间里 我学到了很多东西 主要是关于如何不审阅代码 如何减轻过程的痛苦 使高质量的代
  • python字典中的值只能是字符串类型_python字典key不能是可以是啥类型

    python中字典的key不能是可变类型 字典可存储任意类型对象 其中值可以取任何数据类型 但键必须是不可变的 如字符串 数字或元组 语法格式 d key1 value1 key2 value2 字典是另一种可变容器模型 且可存储任意类型对
  • 神经搜索有多能?

    原文 Alex C G 译文 Piper Hu 本文阅读时长约为5分钟 神经搜索 是数据处理上非常新颖的一个话题 也是Jina AI目前着重关注的方向 可是到底神经搜索是什么 它能解决什么问题 与现在开发者们使用的搜索系统搭建又有什么不一样
Powered by Hwhale