作者:来自 Elastic Vincent Bosc
学习如安在 Elasticsearch 中利用希罕向量,以最小的复杂性提拔干系性并实现搜刮效果个性化。
希罕向量是 ELSER 中的关键组件,但它们的用途远不止于此。在这篇文章中,我们将探究希罕向量如安在电阛阓景中提拔搜刮干系性:基于搜刮举动(如点击)和用户偏好对文档举行加权。
什么是希罕向量?
向量搜刮是当前的热门话题,但大多数讨论会合在麋集向量上:用于呆板学习和神经搜刮的紧凑型数值表现。而希罕向量则接纳了差别的路径。
与细密压缩数据的麋集向量差别,希罕向量以更具可表明性和布局化的格式存储信息,通常包罗大量的零。固然没有那么受关注,但在符合的场景下,它们的本领黑白常强盛的。
💡 意见意义小知识:希罕向量和倒排索引都利用希罕性来高效地表现和检索信息。
在 Elasticsearch 中,你可以利用 sparse_vector 字段范例来存储希罕向量:这并不令人不测。
利用希罕向量举行查询
在 Elasticsearch 中利用希罕向量举行搜刮的体验雷同于传统的关键词搜刮,但有所差别。希罕向量查询(sparse vector queries)不是直接匹配词项,而是利用加权词项和点积,根据文档与查询向量的匹配程度来评分。
用例 1:通过信号加强提拔搜刮排名
信号加强是指夸大某些特性或词项以提拔搜刮排名。当业务逻辑或用户举动表明某些效果应该排在更前时,这种方法尤其有效。
假设我们正在处理处罚一个简单的电商索引:
- PUT marketplace
- {
- "mappings": {
- "properties": {
- "title": {
- "type": "text"
- },
- "query_boost": {
- "type": "sparse_vector"
- },
- "customer_types": {
- "type": "sparse_vector"
- }
- }
- }
- }
复制代码 如今,让我们只利用传统的 full text 范例来索引两个文档:
- POST marketplace/_doc/1
- {
- "title": "playstation 5 - special offer"
- }
- POST marketplace/_doc/2
- {
- "title": "playstation controller"
- }
复制代码 对 “playstation” 的根本搜刮会起首返回控制器,而不是由于它更干系,而是由于默认的词法评分算法 BM25 倾向于偏好较短的字段,导致标题轻巧的控制器排名更高。更多的内容可以参阅 “Elasticsearch:分布式计分 - TF-IDF”。
- GET marketplace/_search
- {
- "query": {
- "match": {
- "title": "playstation"
- }
- }
- }
- "hits": [
- {
- "_index": "marketplace",
- "_id": "2",
- "_score": 0.21110919,
- "_source": {
- "title": "playstation controller"
- }
- },
- {
- "_index": "marketplace",
- "_id": "1",
- "_score": 0.160443,
- "_source": {
- "title": "playstation 5 - special offer"
- }
- }
- ]
复制代码 但我们渴望提拔 console 的搜刮效果,特殊是由于它有特价优惠!
一种实现方式是通过希罕向量将加强信号直接嵌入到文档中:
- POST marketplace/_doc/1
- {
- "title": "playstation 5 - special offer",
- "query_boost": [
- {"playstation": 3, "game console": 1}
- ]
- }
复制代码 这个文档如今在搜刮查询 “playstation” 和 “game console” 中具有了额外的权重。
我们可以调解查询,以联合这个希罕向量的加强效果:
- GET marketplace/_search
- {
- "query": {
- "bool": {
- "must": [
- {
- "match": {
- "title": "playstation"
- }
- }
- ],
- "should": [
- {
- "sparse_vector": {
- "field": "query_boost",
- "query_vector": {
- "playstation": 1
- }
- }
- }
- ]
- }
- }
- }
- "hits": [
- {
- "_index": "marketplace",
- "_id": "1",
- "_score": 3.160443,
- "_source": {
- "title": "playstation 5 - special offer",
- }
- },
- {
- "_index": "marketplace",
- "_id": "2",
- "_score": 0.21110919,
- "_source": {
- "title": "playstation controller"
- }
- }
- ]
复制代码 得益于希罕向量匹配所带来的额外得分,console 如今排在了 controller 之前,这正是我们想要的效果!
这种方法提供了一种更换传统加强技能的方式,比方 function_score 查询或字段级权重调解。通过利用希罕向量将加强信息直接存储在文档中,你可以在调解干系性时得到更高的机动性和透明度。同时,它还实现了业务逻辑与查询逻辑的解耦。
不外,也必要注意衡量:对于一些简单的利用场景,传统的加强方式大概更容易实现,而且在某些环境下性能更优。而当你必要更细粒度、具有多维控制的加强方式时,希罕向量的上风就会凸显出来。
提示: must 子句会举行过滤并影响评分,而 should 子句在条件匹配时会增长评分。
用例 2:利用希罕向量实现个性化
希罕向量同样可以实现个性化。你可以为客户特性或用户画像分配权重,并利用这些权重为个体用户展示最干系的产物。
以下是一个示例:
- POST marketplace/_doc/3
- {
- "title": "High fructose snack bar with artificial flavor"
- }
- POST marketplace/_doc/4
- {
- "title": "Snack bar with whole food ingredients",
- "customer_types": {
- "healthy-conscious": 3
- }
- }
复制代码 假设 Jim 是一位偏好康健、可连续选项的客户:
- POST user/_doc/jim
- {
- "customer-types": {
- "healthy-conscious": 2
- "tech-savvy": 1,
- "eco-friendly": 1
- }
- }
复制代码 我们可以根据 Jim 的偏好定制搜刮体验:
- GET marketplace/_search
- {
- "query": {
- "bool": {
- "must": [
- {
- "match": {
- "title": "snack bar"
- }
- }
- ],
- "should": [
- {
- "sparse_vector": {
- "field": "customer_types",
- "query_vector": {
- "healthy-conscious": 2,
- "tech-savvy": 1,
- "eco-friendly": 1
- }
- }
- }
- ]
- }
- }
- }
- "hits": [
- {
- "_index": "marketplace",
- "_id": "4",
- "_score": 7.2515574,
- "_source": {
- "title": "Snack bar with whole food ingredients",
- "customer_types": {
- "healthy-conscious": 3
- }
- }
- },
- {
- "_index": "marketplace",
- "_id": "3",
- "_score": 1.1612647,
- "_source": {
- "title": "High fructose snack bar with artificial flavor"
- }
- }
- ]
复制代码 因此,更康健的能量棒出如今搜刮效果的顶部,由于这更符合 Jim 的购买倾向。
这种通过希罕向量实现的个性化方法,基于雷同于静态用户标签的理念,但使其更具动态性和表现力。与其将用户归类为某个单一标签(如 “tech-savvy - 技能达人” 或 “healthy-conscious - 康健意识强”),希罕向量可以表现多个偏好,并赋予差别的权重,而且这些权重可以直接整合进搜刮排名过程。
利用 function_score 查询来融入用户偏好是一种机动的个性化更换方案,但随着逻辑的复杂化,它大概变得难以维护。另一种常见的方法是协同过滤(collaborative filtering),它依靠外部体系来盘算用户与商品之间的相似度,通常必要额外的底子办法支持。学习排序(LTR)也可以应用于个性化,具备强盛的排序本领,但在特性工程和模子训练方面要求较高的成熟度。
总结
希罕向量是你搜刮工具箱中的一个多功能增补。我们只先容了两个现实的例子:提拔搜刮效果和基于用户画像实现个性化。但它的应用范围非常广泛。
通过将布局化、加权的信息直接嵌入到文档中,你可以以最小的复杂度实现更智能、更干系的搜刮体验。
Elasticsearch 拥有很多新功能,资助你为特定用例构建最佳搜刮办理方案。深入相识我们的示例条记本,开始免费云试用,大概如今就试试在当地呆板上运行 Elastic。
原文:Enhancing relevance with sparse vectors - Elasticsearch Labs
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|