搜索引擎算法工程师,在query理解方面,都有哪些方面的工作

 

一、什么是query理解?

通俗来讲,就是query整形。又可以理解为是一个转接头,把用户送来过来的奇奇怪怪的query(或者说是在搜索引擎看来是奇奇怪怪的query)转换为搜索引擎最想看到的query的。

在LLM当前能力的帮助下,实际上query理解的工作好做多了。即使没有太多基础的玩家,实际上完全可以依赖LLM来做这件事。对于任何一个环节,就是一个prompt的事情。这绝对是会有收益的。问题是成本,以及性能。一个检索需求的时延要求多数是3s内,如果只靠LLM是很难控制在3s内的。对于离线的任务,非实时交互的,对时间要求不高的,可以考虑使用LLM,效果可能比单独训练一个小模型效果都要好。

二、主要工作

在query理解方面,还是有很多工作要做的。

2.1 分词与词性标注


将用户输入的查询语句进行有效分词。

对分词后的词汇进行词性标注,区分名词、动词、形容词等。

对于这一块内容,已经有比较成熟的技术,例如StanfordNLP,就是一个模型一个包,拿过来就可以使用使用部署成服务。

这里还需要去做一个工作:关键词提取,从查询中提取出对搜索结果影响最大的关键词。这包括基于字符匹配的分词算法、基于统计的分词算法,以及基于理解的分词算法,后者在分词的同时进行句法、语义分析,处理歧义现象。进行权重分析,使用诸如TF-IDF算法等方法确定Query中各词汇的重要性,并据此优化搜索结果的相关性。

2.2 命名实体识别


识别查询中的专有名词,如人名、地名、组织名等。这里有一个做法,可以通过命名实体来做加分。优化排序效果。

2.3 查询意图识别


分析用户查询背后的意图,比如是信息检索、交易、导航还是其他特定意图。

意图分类的细化,例如将信息检索意图细分为新闻、学术、娱乐等。在RAG中,需要知道query应该是模型回答还是联网查询,故需要一个二分类的模型。

意图识别,实际上就是分类任务。

还可以通过意图分类和命名实体识别技术,理解用户的搜索意图,尤其是在Query中存在多个可能的意图时,需要结合知识图谱进行知识推理,完成意图识别。

2.4 情感分析



判定查询语句的情感倾向,如正面、负面或中性。

2.5 查询改写


包括Query纠错、Query对齐和Query扩展。对原始查询进行改写以更好地匹配搜索结果。Query纠错用于修正用户输入的错误,Query对齐用于将用户Query改写为与搜索引擎索引内容更匹配的形式,Query扩展则是为了提供更多相关搜索选项,帮助用户挖掘潜在需求。

包括同义词替换、语法调整、错别字纠正等。

通过同义词库或上下文分析扩展查询词,增加检索的全面性。这里同义词也可以做成类似于图谱的东西。通过同义词扩展策略,增加Query的表达范围,提高搜索结果的覆盖度和准确性。但是同义词并非总是有效,也会带来副作用。这对同义词的构建要求是比较高的。

此外,充分利用LLM的能力,也可以有不错的提升效果(不过处理时间比较长)。这里再分享一下我的这篇文章。

用十篇论文聊聊关于使用LLM做query Rewrite的问题_hyde+prf-CSDN博客

2.6 上下文理解


利用用户历史数据、地理位置等信息理解查询的上下文。 

对于现在的很多LLM应用,多轮对话的作为上下文非常重要的组成部分。

对于不同的领域场景,这里会有比较大的出入。例如电商领域,可以结合用户画像,用户的历史搜索行为来对当前的query进行理解。而对于搜索引擎,可以对全部query做分类处理。而对于chat类型的则对多轮对话的内容进行理解和改写又是特别有意义的。

在chat方面指代消歧是一个重要的内容。

2.7 多语言处理


对于多语言搜索引擎,还需要处理不同语言之间的查询理解问题。

这里拼音也可以当做多语言处理。

多模态的内容,在一定程度上也可以算做多语言处理。

三、query理解领域的一些研究方向

深度学习应用:研究如何利用深度学习技术来提高分词、命名实体识别、意图识别等任务的准确性。

迁移学习:探索如何将在一个领域学到的知识迁移到另一个领域,特别是在数据稀缺的情况下。

跨语言理解:研究如何将一种语言的查询理解技术应用到另一种语言。

对话上下文理解:研究如何在多轮对话中更好地理解用户的意图。

对抗性学习:研究如何防御对抗性查询对搜索引擎的影响。

隐私保护查询理解:如何在保护用户隐私的前提下进行查询理解。

可解释性与透明度:提高查询理解算法的可解释性,使搜索引擎的行为更加透明。

弱监督学习:利用少量的标注数据来训练模型,减少对大量标注数据的依赖。

这些研究方向都是当前学术界和工业界的热点问题,不断有新的技术和论文涌现。作为搜索引擎算法工程师,关注这些前沿动态,并结合实际业务需求进行技术创新是非常重要的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多输入多输出 | Matlab实现Transformer多输入多输出预测

多输入多输出 | Matlab实现Transformer多输入多输出预测 目录 多输入多输出 | Matlab实现Transformer多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 多输入多输出 | Matlab实现Transformer多输入多输出预测(完整源码和数据) 1.da…

二分查找算法——部分OJ题详解

目录 关于二分查找算法 部分OJ题详解 704.二分查找 一,分析题目 二,细节处理 三,题目代码 四,*总结朴素模板 *34.在排序数组中查找元素的第一个和最后一个位置 一,查找左端点 二,处理左端点细…

什么是Stream流

文章目录 一、创建流1.1 流的类型1.2 创建 Stream 的常见操作 二、 中间操作2.1 流的映射2.2 流的过滤2.3 其他中间操作 三、 终端操作3.1 reduce() 的使用方法3.2 *short-circuiting* 方法3.3 其他的终端操作 参考资料 一、创建流 1.1 流的类型 在 Java 8 中, 集合接口有两个…

Socks5代理为何比HTTP代理快?

在网络世界中,代理服务器扮演着重要的角色,它们能够帮助我们访问被限制的网站、提高网络安全性以及优化网络性能。其中,Socks5代理和HTTP代理是两种常见的代理类型。然而,很多用户发现,相较于HTTP代理,Sock…

awk和xargs指令

ps -ef|grep "pytest"|awk {print $2}|xargs kill-9解释: ps -ef|grep “pytest”:表示找到pytest进程awk ‘{print $2}’:表示将第二个域打印出来,这里显示的就是进程号xargs kill-9:表示将前面的输出结果…

【两大3D转换SDK对比】HOOPS Exchange VS. CAD Exchanger

在现代工业和工程设计领域,CAD数据转换工具是确保不同软件系统间数据互通的关键环节。HOOPS Exchange和CAD Exchanger是两款备受关注的工具,它们在功能、支持格式、性能和应用场景等方面有着显著差异。 本文将从背景、支持格式、功能和性能、应用场景等…

MySQL 条件函数/加密函数/转换函数

条件函数 IF(): 如果条件为真&#xff0c;返回一个值&#xff0c;否则返回另一个值。 -- 示例&#xff1a;根据员工的薪水返回薪水等级 SELECT name, salary, IF(salary < 3000, Low, IF(salary BETWEEN 3000 AND 7000, Medium, High)) AS salary_level FROM employ…

嵌入式ARM控制器在AGV里的应用

随着ARM技术以及芯片加工工艺的迅猛发展&#xff0c; ARM工业计算机得到了越来越广泛的应用&#xff0c;尤其在工业智慧城市、智能设备以及工业自动化控制等领域。本文将为大家详细介绍ARM控制器在AGV控制系统中的应用&#xff0c;来供大家学习和参考&#xff0c;欢迎大家一起来…

Linux磁盘-创建分区

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux磁盘涉及到的命令不是很多&#xff0c;但是在实际运维中的作用却很大&#xff0c;因为Linux系统及业务都会承载到硬盘…

2.6 计算机语言

声明&#xff1a;文章参考的《系统架构设计师教程&#xff08;第二版&#xff09;》&#xff0c;如有侵权&#xff0c;本人将立即修改和删除。 一、计算机语言的组成 计算机语言主要由一套指令组成。 指令包括表达式&#xff08;变量、常量、字面量、运算符&#xff09;、流程…

【PTA天梯赛】L1-003 个位数统计(15分)

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法刷题 &#x1f43e;或许会很慢&#xff0c;但是不可以停下来&#x1f43e; 文章目录 题目题解总结 题目 题目链接 题解 使用string把长度达1000位的数字存起来开一个代表个位数的数组 a[11]倒序计算最后一位&#xff0c;…

进度条提示-在python程序中使用避免我误以为挂掉了

使用库tqdm 你还可以手写一点&#xff0c;反正只要是输出点什么东西都可以&#xff1b; Demo from chatgpt import time from tqdm import tqdm# 示例函数&#xff0c;模拟长时间运行的任务 def long_running_task():total_steps 100for step in tqdm(range(total_steps), …

js 格式化时间

方法一&#xff1a;使用toLocaleString或toLocaleDateString/toLocaleTimeString Date对象提供了toLocaleString()、toLocaleDateString()和toLocaleTimeString()方法&#xff0c;这些方法允许你根据本地时间格式来显示日期和时间。虽然它们不直接提供高度自定义的格式选项&am…

mac下mysql无法登陆的问题

用如下命令登录出现错误。 sudo mysql.server start解决方案 使用如下命令登录 sudo /usr/local/MySQL/support-files/mysql.server start

利用 Plotly.js 创建交互式条形图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 利用 Plotly.js 创建交互式条形图 应用场景介绍 交互式条形图广泛应用于数据可视化和分析领域。它可以直观地展示不同类别或分组之间的数值差异&#xff0c;并允许用户通过交互操作探索数据。 代码基本功能介…

基于springboot+mybatis学生管理系统

基于springbootmybatis学生管理系统 简介&#xff1a; 题目虽然是学生管理系统&#xff0c;但功能包含(学生&#xff0c;教师&#xff0c;管理员),项目基于springboot2.1.x实现的管理系统。 编译环境 &#xff1a; jdk 1.8 mysql 5.5 tomcat 7 框架 &#xff1a; springboot…

RISC-V指令集架构详细组成

寄存器组成 寄存器&#xff1a;用于暂存待处理的数据。 RISC-V架构具有一组统一的寄存器&#xff0c;用于整数运算和地址计算&#xff0c;具体如下&#xff1a; 通用寄存器 x0&#xff1a;存数值0.x1-x31&#xff1a;通用目的寄存器。每个寄存器都是32位&#xff08;RV32I&a…

代码随想录第50天|单调栈

739. 每日温度 参考 思路1: 暴力解法 思路2: 单调栈 使用场合: 寻找任一个元素的右边或者左边第一个比自己大或者小的元素位置, 存放的是遍历过的元素 记忆: 单调栈是对遍历过的元素做记录, 一般是对栈顶的元素 nums[mystack.top()] 做赋值操作的 如果想找到右边的元素大于左…

ccf认证 202312-3

小 C 观察了事先收集到的数据&#xff0c;并加以统计&#xff0c;得到了一个名词属于各个类别的可能性大小的信息。具体而言&#xff0c;每个类别都可以赋予一个被称为权重的值&#xff0c;值越大&#xff0c;说明一个名词属于该类别的可能性越大。由于每次向用户的询问可以获得…

力扣题解(摆动序列)

376. 摆动序列 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如&#xff0c; [1, 7, 4, 9, 2, 5] 是一个 …