用户案例|向量引擎在携程酒店搜索中的应用场景和探索

Zilliz AI 初创计划是面向 AI 初创企业推出的一项扶持计划,预计提供总计 1000 万元的 Zilliz Cloud 抵扣金,致力于帮助 AI 开发者构建高效的非结构化数据管理系统,助力打造高质量 AI 服务与运用,加速产业落地。访问https://zilliz.com.cn/了解更多。


携程集团(Trip.com Group) 是全球领先的一站式旅行平台,旗下的平台可面向全球用户提供一套完整的旅行产品、 服务及差异化的旅行内容,能够提供超过 120 万种全球住宿服务。

而随着携程用户需求和搜索行为日趋复杂多样化,基于文本匹配的检索方法已经不能够很好地满足用户在个性化精准搜索方面的需要。其中比较常见的问题有多义词问题。基于文本的检索方法主要依赖于关键词匹配进行搜索和排序,所以会忽视搜索意图背后更深层次的语义信息,导致对搜索结果的准确性和召回率的性能上有较大的影响。例如,查询“苹果”可以指代水果,也可以指代科技公司。同时,传统的搜索引擎在处理长尾查询上也往往出现召回效果不佳的情况。

此外,酒店搜索还会涉及到丰富的信息维度,如酒店的位置、房间类型、标签、评价等。传统的文本匹配方法难以有效整合和利用这些多维信息,对于多条件的精确搜索和筛选也有一些乏力。搭建向量引擎可以有效地解决上述问题,本文将详细介绍向量引擎在携程酒店搜索中的应用场景和相关经验。

01.当前局限性剖析

局限性之一:用户和商户表述差异

搜索引擎的索引数据是基于携程酒店搜索引擎团队采集的酒店信息、设施信息、地理信息等基础数据建立的。然而,不同用户的搜索习惯因人而异,商户和用户的描述也存在差异,不同商户在维护信息时也会千差万别。因此,搜索引擎需要具备一定的语义理解能力,使其能够顺利的在用户搜索输入和商户维护词汇之间进行匹配,以便准确地召回用户最想要的结果。

举个例子,如果商户维护了一个名为"带宠物"的设施服务标签,如果有一部分用户的输入是"能够带宠物",相关的设施服务和酒店就无法被搜索到。以往的常规解决方案是给"带宠物"标签添加别名"能够带宠物",这样可以通过关联别名来解决用户和商户之间的表述差异,使得不同的搜索输入能够召回同一类型的结果。然而,这种方法存在一定的局限性。别名的选择依赖于现有搜索词的点击情况,如果搜索引擎中没有某个词,那么该词就不会被展示出来,从而无法产生点击行为,那么该别名就无法被发掘到。

alt

局限性之二:不同语种的表述差异

举个例子,在携程海外搜索场景中,如果在多语言标签库中没有维护"無料Wi-Fi",搜索"無料Wi-Fi"时,搜索结果中就没有相关的酒店设施标签。在这种情况下,"無料"一词在日语中意味着免费,"無料Wi-Fi"实际上想要表达的是可以免费使用的无线网络连接。然而,如果没有维护多语言的标签名称,搜索引擎将无法正确识别用户的意图,导致搜索结果不准确。

为了解决这个问题,团队的解决方案是补充维护更多不同语言的标签信息,例如将设施标签的日文表达"無料Wi-Fi"添加到搜索引擎中。但这种方法依赖于翻译库的准确度和丰富度。由于词库庞大,很多词无法进行人工翻译,可能只能依靠机翻,这就存在准确度的问题,翻译的准确性对于能否搜索到所需内容有很大影响。

alt

局限性之三:不同背景下的音译表述差异

由于音译表述的差异,用户可能使用不同的拼写或注音来搜索同一个词或短语。如果搜索引擎无法正确理解用户的音译表述,用户换一种音译翻译词搜索就无法找到相应的结果,可能会导致搜索结果的相关性和准确性下降。举个例子,当用户搜索"荷里活"时,搜索结果可能全是中国的地标,而当搜索"好莱坞"时,则会正常召回美国好莱坞的相关结果。

常规的解决方案是添加同义词"好莱坞"和"荷里活"之间的关联,例如将"荷里活"作为"好莱坞"的别名,并在商区实体维护中进行相应的标注。这样可以确保搜索引擎既能召回相关结果,又能保证结果的排序准确性。但是由于音译词组合的多样性,有可能导致指数级别的爆炸问题,搜索引擎会承受的巨大索引压力,且收益不佳。

alt

02.向量引擎的前期调研

通过上面的问题分析,可以看到,携程酒店搜索面临着泛化召回和模糊召回的场景需求。为了能够满足需求,团队考虑了使用向量查询来帮助实现更准确的搜索。向量查询是一种基于向量空间模型的信息检索方法,其基本思想是将查询和文档表示为向量,通过计算它们之间的相似度来确定匹配程度,以此来召回与查询最相关的文档。

为了初步验证向量化能否解决问题,团队做了一个简单的初步验证:通过调用 OpenAI 的 text-embedding-ada-002 模型来获取查询词(query)和酒店名(item)的向量表示,并利用这些计算向量之间的余弦相似度。一般在语义上越是相似的词,其向量之间的相似度越高。可以根据计算向量的相似度,评估文本之间所包含的语义相似度。

alt

从验证结果来看,通过对比不同词语的向量相似度,可以区分出具有相同含义的词语和语义有差异的词语。那么向量相似度可以作为携程酒店搜索提供更准确的语义相似度衡量方式,引入向量引擎来改进携程酒店搜索结果的质量是一种可行方案。

03.向量引擎的架构设计

alt

04.技术选型

向量化模型选型

向量化模型是我们实现向量引擎的第一块基石。团队对比了一些常见的语言向量化模型,就准确率而言, multilingual-e5 和 Luotuo 都表现出相对较高的准确率。

dmultilingual-e5 在多语言处理方面具有更好的表现,相比之下,Luotuo 在小语种处理方面表现不佳。就性能而言,大模型(超过 1B 参数)的在线推理速度较慢,不适合实时调用。所以综合考虑准确率和性能两方面原因,团队最终选择了 multilingual-e5 模型作为语言模型。

alt

向量数据库选型

向量数据库则是支撑向量引擎进行向量检索的的另一大基石。根据市场上的选择,向量引擎可分为三类:向量索引组件+自建服务、专用向量数据库和传统引擎+向量索引组件。

alt

在进行技术选型时,携程酒店团队对向量引擎的几种实现方式进行了分类和对比,以便于根据具体需求和考虑因素来选择最适合的向量引擎,以此满足开发和业务的需求。

alt

对于向量索引组件+自建服务的方式上来说:为适应具体的应用场景和数据特点,可能需要更多时间的学习组件及额外编写代码处理索引的构建更新等,这可能增加了使用和维护的难度。传统引擎+向量索引组件这个方向上,公司的基础服务部门如果有这方面的支持,对于使用方来说,也是一种比较省力的办法。还有一个方向是使用专用向量数据库,所谓专业的工具做专业的事,可以实现事半功倍的效果。

经过上面的对比,团队选择将 Milvus 作为向量引擎,原因如下图所示:

alt

在服务能力上,为了确保能够满足接口服务的响应时间要求,团队对 Milvus 进行了相关性能测试。从测试环境下的测试结果可以看到,两种索引均能保证在 30ms 左右召回。IVF-SQ8 索引占用内存相对较少,优点是可实现单机部署,但该索引方式在召回性能上会略差于 HNSW,可根据实际需求平衡选择哪种索引结构做向量数据存储。

alt

05.向量引擎搭建实现

向量化服务

向量化服务主要包含三个方面的工作,即在线向量服务、实体数据离线向量化和向量化召回服务。

在线向量服务:通过文本在线向量化服务,用户可以将文本数据转换为数值向量表示,从而方便进行文本相似度计算等任务。使用的是 multilingual-e5 预训练的文本向量模型,可以直接使用这些模型进行文本向量化,无需自行训练。

实体数据离线向量化:该服务将实体数据转化为向量形式并做持久化,以便后续的向量检索和召回使用。

alt

向量化召回服务:向量化召回服务会对召回的向量会进行相关的依赖检查,确保召回的实体满足业务需求。最终,该服务会返回 TOPK 个最相似的满足依赖检查的实体。

alt

06.向量数据库部署搭建

Milvus 部署的前置依赖

alt

Milvus 向量数据库的部署的前置依赖是对象存储、消息队列和分布式键值存储。

  • 分布式键值存储:团队使用的是 ETCD 负责存储和管理各个节点的配置信息,用于配置和服务发现。

  • 消息队列:团队使用的是公司提供的 Kafka 基础服务,用于实时数据处理和消息传递。

  • 对象存储:团队使用的是公司提供的对象云存储平台,用于存储向量数据和相关的元数据。

Milvus 部署情况

  • 部署方式

团队使用的是 GitHub 上的源码构建自定义镜像的方式进行 Milvus 向量数据库的部署。版本为:v2.3.1。基于携程 k8s 基础服务平台,采用了集群部署方式。

  • 部署节点

针对于 Milvus 数据库的部署模块,集群部署方式需要部署以下 8 个组件,分别是访问代理层(proxy)、协调节点(Root coordinator,Query coordinator ,Data coordinator,Index coordinator)和执行节点(Query node,Data node,Index node)。

alt
  • 索引选择

索引选择的 HNSW 索引。HNSW 是基于图的索引,该索引具有高效的近似最近邻搜索,在处理高维度向量数据时表现出色,适用于追求高查询效率的场景。

  • 资源大小

在 Milvus 的部署中,参考 Milvus 官方提供的工具和根据实际的数据量和维度来配置资源。实际生产环境中,数据量达到了 3100 万+,每个向量数据的维度为 1024 维。下图展示了各个节点的资源配置情况:

alt

07.向量引擎的使用场景

场景一:携程酒店搜索场景

未引入向量引擎前,在直搜和联想场景下,例如搜索"美丽夜景",可能只能召回两家酒店。但如果搜索"不错夜景",则可以召回更多酒店。"美丽夜景"和"不错夜景"实际上都是酒店的一种标签类型,可以视为同义词。从查询语义的一致性上来说,使用"美丽夜景"应该具有召回"不错夜景"酒店的能力。因此,该场景下,可以引入向量引擎来实现同义词的召回,得到更准确的结果召回,以满足用户的需求。

alt

携程酒店搜索引入向量引擎召回的过程总览如下:

  • 查询理解:根据用户的输入词进行查询理解,生成查询理解语句。

  • 召回阶段:召回阶段包含文本召回和语义召回。

     a. 文本召回:对查询理解语句进行切词,使用文本匹配的方式进行召回。
    
     b. 语义召回:语义召回包含意图召回和向量召回。意图召回是根据用户的查询输入,进行意图识别,并根据成功识别的用户意图进行酒店召回;向量召回是在无法准确识别用户意图的情况下,通过向量引擎进行向量召回。
    
  • 合并和精排:根据召回的结果进行合并和精排的操作,最终输出展示给用户。

alt

场景二:SEO 落地页生成

alt

SEO 落地页生成整个过程如下:

  • 关键词挖掘:通过国际化团队的挖掘结果获取相关的关键词。

  • 实体召回:根据挖掘的关键词召回相关的实体。

  • 意图识别:对用户搜索词做意图分析识别。

  • 向量引擎泛化召回:当意图识别失败时,使用向量引擎进行泛化召回,以扩大召回范围。

  • 相关依赖检查:对召回的实体进行相关依赖检查,确保召回的实体与用户需求相关。

  • 酒店相关召回:根据识别和泛化召回的实体,进行与酒店相关的召回。

  • 筛选排序:对召回的酒店进行筛选和排序,按照产品规则进行处理。

  • 精排:根据精细排名规则对召回的酒店进行精细排名,以优化搜索结果的质量。

  • 生成 SEO 落地页:根据最终召回和排名结果生成相应的 SEO 落地页。

alt
alt

08.总结

本文主要介绍了向量引擎在携程酒店搜索中的应用场景和相关经验,分别从以下几个方面进行了介绍:

  • 携程酒店为什么需要向量引擎。携程酒店搜索亟需提升泛化搜索能力,以此更好的解决传统文本检索的同义词问题和长尾问题等。

  • 探讨了实现向量引擎如何做技术选型。在选择向量数据库时,根据携程酒店的需求和实际情况,选择了 Milvus 向量数据库作为解决方案。

  • 介绍了如何设计搭建向量引擎,包括向量化服务搭建和向量数据库部署等方面。

  • 介绍了向量引擎在携程酒店搜索中的使用场景,利用向量引擎的泛化召回能力,在酒店搜索场景和 SEO 优化上提高搜索结果的质量和准确性。

通过以上介绍,可以看出向量引擎在携程酒店搜索中的重要性和应用价值,对向量引擎进行合适的选型和设计,能够实现更精准高效的酒店搜索服务,提升用户的搜索体验。

本文作者

  • 赵明辰 携程酒店搜索引擎高级研发经理;
  • 刘阳 携程酒店搜索引擎资深研发

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/457207.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

log4j2 burp插件-Log4j2Scan(二)

该工具为被动扫描Log4j2漏洞CVE-2021-44228的BurpSuite插件,具有多DNSLog(后端)平台支持,支持异步并发检测、内网检测、延迟检测等功能。 一、安装方法 建议使用BurpSuite 2020或以上更高版本,低版本BurpSuite未经严…

4种小众的能力,帮你更好地适应未来

新年伊始,又是一个全新的开始。 未来的社会究竟需要什么样的能力?这已经是一个很老的话题,已经有许许多多讨论了。但这其中,可能有一些是容易被人忽略的,或者不容易被注意到的。 我想跟你一起分享,我对这个…

IAB视频广告标准《数字视频和有线电视广告格式指南》之 概述- IAB受众和技术标准 - 我为什么要翻译介绍美国人工智能科技公司IAB系列(2)

第二篇 - 概述- IAB受众和技术标准 本文目录 一、IAB技术实验室简介 二、概述及IAB受众 三、资源- IAB倡导的相关视频广告技术标准 四、案例分享-介绍一家数字化营销服务公司 - SproutSocial 五、数字营销工兵观察 六、资料来源及推荐阅读 一、IAB技术实验室简介 随着近…

河南大学数据结构实验-顺序栈和链栈的实现

计算机与信息工程学院实验报告 姓名:杨馥瑞 学号:2212080042 专业:数据科学与大数据技术 年级:2022 课程:数据结构 主讲教师:袁彩虹老师 辅导教师:_______ 实验时间&…

第五十八回 吴用赚金铃吊挂 宋江闹西岳华山-飞桨图像分割套件PaddleSeg初探

鲁智深被贺太守抓住,押入死牢。武松得信后,正想回梁山报信,正好戴宗来了,就请戴宗赶快回梁山搬救兵。宋江说兄弟有难,怎能不救? 于是带了十六个头领来到少华山。 因为华州城池厚壮,宋江等无计可…

Jmeter+ant,ant安装与配置

1.ant含义 ant:Ant翻译过来是蚂蚁的意思,在我们做接口测试的时候,是可以用来做JMeter接口测试生成测试报告的工具 2.ant下载 下载地址:Apache Ant - Ant Manual Distributions download中选择ant 下载安装最新版zip文件 3.…

【C++面向对象】C++飞机购票订票系统(源码+说明)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

HTML视频笔记

学习arm开发板,涉及到网页HTML PHP什么的,简单看个视频学习下 HTML|超简单HTML入门教程 https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element ​​​​​​vscode需要的libc6等需要的版本高​​​​​​ 为了安装vscode,将…

电商场景下 ES 搜索引擎的稳定性治理实践

继上文在完成了第一阶段 ES 搜索引擎的搭建后,已经能够实现对千万级别的商品索引的读写请求的支持。目前,单机房读流量在 500~1000 QPS 之间,写流量在 500 QPS 左右。 但随着业务的发展,问题也逐渐开始暴露&#xff0…

Qt篇——QChartView获取鼠标停留位置的数值

需求:鼠标停留在QChartView上时,想要计算停留位置的数值。 一开始的方法是想要通过鼠标移动事件计算鼠标在QChartView上的坐标,在换算成数值,后来发现QChartView中除了图表数据,还有坐标轴与坐标轴数值标签占了高度&a…

采购代购系统独立站,接口采集商品上货

采购代购系统独立站的建设与商品上货接口的采集是一个综合性的项目,涉及前端开发、后端开发、数据库设计以及API接口的对接等多个环节。以下是一个大致的步骤和考虑因素: 一、系统规划与需求分析 明确业务需求:确定代购系统的核心功能&…

智能物流新纪元:分布式I/O模块重塑仓储自动化

随着工业4.0概念的深入人心,物流行业正在经历前所未有的变革。在这个过程中,物流企业必须积极走向工业自动化、智能化,进而提高物流效率,降低物流成本,以便更好地满足客户和市场的需求。智能物流、仓库自动化已然是趋势…

SSM整合项目(Vue3环境搭建)

SSM整合项目(Vue3环境搭建) 1.下载node.js 1.卸载原来的node.js 2.检测是否卸载成功 3.下载node.js(10.16.3) 一路next就可以 4.检测是否安装成功 2.全局安装Vue插件cli 命令行输入 npm install -g vue/cli 3.新建Vue项目 1.…

惬意上手MongDB

上一篇文章介绍了MySQL,今天来介绍一下MongoDB,相较于MySQL而言,它是简单的。 简介 MongoDB是一种开源的、跨平台的文档数据库,采用NoSQL数据库的形式。它以高性能、高可用性和灵活的数据模型而闻名,适用于大规模数据存储和处理…

html--钢琴

代码 <!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>html钢琴</title> <script src"js/js.js"></script> <link href"…

QT开发(二) 构建QMainWindow

1、前言 QMainWindow是Qt框架中用于创建应用程序主窗口的类。它是许多GUI应用程序的基础&#xff0c;提供了丰富的功能和灵活性&#xff0c;以支持用户界面的创建和管理。 QMainWindow的结构主要包括以下几个部分&#xff1a; 菜单栏&#xff08;Menu Bar&#xff09;&#…

【单调栈】代码随想录算法训练营第六十天 |84.柱状图中最大的矩形(待补充)

84.柱状图中最大的矩形 1、题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2、文章讲解&#xff1a;代码随想录 3、题目&#xff1a; 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱…

RC4算法:流密码算法的经典之作

title: RC4算法&#xff1a;流密码算法的经典之作 date: 2024/3/11 18:16:16 updated: 2024/3/11 18:16:16 tags: RC4起源演变算法优劣分析RC4 vs AES安全性RC4 vs DES性能比较应用场景介绍工作原理详解代码实例演示 一、RC4算法的起源与演变 RC4算法是由著名密码学家Ron Riv…

粒子群算法对pi控制器进行参数优化,随时优化pi参数以控制直流无刷电机转速。

粒子群算法对pi控制器进行参数优化&#xff0c;随时优化pi参数以取得设定直流无刷电机转速。 PSO优化PID&#xff0c;用于BLDC速度控制 仿真平台为&#xff1a;MATLAB 采用的是Simulinkm程序相配合 仿真结果以及程序示例&#xff1a;

UnityShader常用算法笔记(颜色叠加混合、RGB-HSV-HSL的转换、重映射、UV序列帧动画采样等,持续更新中)

一.颜色叠加混合 1.Blend混合 // 正常&#xff0c;透明度混合 Normal Blend SrcAlpha OneMinusSrcAlpha //柔和叠加 Soft Additive Blend OneMinusDstColor One //正片叠底 相乘 Multiply Blend DstColor Zero //两倍叠加 相加 2x Multiply Blend DstColor SrcColor //变暗…