当前位置: 首页 > news >正文

搜索引擎算法工程师,在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理解领域的一些研究方向

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

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

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

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

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

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

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

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 水库大坝安全监测险情应对措施
  • vscode使用ssh连接远程服务器
  • 【Java数据结构】初识线性表之一:顺序表
  • 基于springboot+mybatis学生管理系统
  • vivado EQUIVALENT_DRIVER_OPT、EXCLUDE_PLACEMENT
  • OS_同步与互斥
  • Xcode15报错: SDK does not contain ‘libarclite‘
  • Python 给存入 Redis 的键值对设置过期时间
  • 红酒与城市探索:品味都市的多元风情
  • 初学SpringMVC之接收请求参数及数据回显
  • 神经网络和安全结合:一种基于神经网络的智能攻击检测与防御系统;构建攻击行为预测模型
  • SD卡讲解
  • 347. 前 K 个高频元素(中等)
  • 【Spring Boot】Spring原理:Bean的作用域和生命周期
  • 【CT】LeetCode手撕—8. 字符串转换整数 (atoi)
  • C++类中的特殊成员函数
  • const let
  • java中的hashCode
  • JS专题之继承
  • leetcode讲解--894. All Possible Full Binary Trees
  • mysql外键的使用
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • vue自定义指令实现v-tap插件
  • 编写符合Python风格的对象
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 给新手的新浪微博 SDK 集成教程【一】
  • 面试遇到的一些题
  • 批量截取pdf文件
  • 算法之不定期更新(一)(2018-04-12)
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #define 用法
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (二)PySpark3:SparkSQL编程
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (未解决)macOS matplotlib 中文是方框
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)Scala的“=”符号简介
  • (转)程序员疫苗:代码注入
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .net下的富文本编辑器FCKeditor的配置方法
  • /var/spool/postfix/maildrop 下有大量文件
  • @Async注解的坑,小心
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BZOJ3757] 苹果树
  • [caffe(二)]Python加载训练caffe模型并进行测试1
  • [ComfyUI]Flux+MiniCPM-V强强联手艺术创意,媲美GPT4V级国产多模态视觉大模型