关于搜索引擎:INFINI-Labs-产品更新-Easysearch-171发布

<article class=“article fmt article-content”><p>INFINI Labs 产品又更新啦~,包含 Console,Gateway,Agent 1.23.0 和 Easysearch 1.7.1。此次版本重点修复历史遗留 Bug 、网友们提的一些需要等。以下是本次更新的具体阐明。</p><h2>INFINI Console v1.23.0</h2><p>INFINI Console 是一款十分轻量级的多集群、跨版本的搜寻基础设施对立管控平台。通过对风行的搜索引擎基础设施进行跨版本、多集群的集中纳管, 企业能够疾速不便的对立治理企业外部的不同版本的多套搜寻集群。</p><p>Console 在线体验: http://demo.infini.cloud (用户名/明码:readonly/readonly)。</p><p>Console 本次更新如下:</p><h3>Bug fix</h3><ul><li>修复数据迁徙中数据分片范畴因精度导致数据溢出显示为正数</li><li>修复删除实例队列后生产的 Offset 未重置问题</li><li>修复网友提出的各种问题,如集群设置默认关上节点、索引采集等</li></ul><h3>Improvements</h3><ul><li>优化实例治理中减少磁盘闲暇空间显示</li><li>优化实例队列名称显示</li></ul><h2>INFINI Gateway v1.23.0</h2><p>INFINI Gateway 是一个面向搜寻场景的高性能数据网关,所有申请都通过网关解决后再转发到后端的搜寻业务集群。基于 INFINI Gateway 能够实现索引级别的限速限流、常见查问的缓存减速、查问申请的审计、查问后果的动静批改等等。</p><p>Gateway 本次更新如下:</p><h3>Bug fix</h3><ul><li>修复删除实例队列后生产的 Offset 未重置问题</li></ul><h2>INFINI Easysearch v1.7.1</h2><p>INFINI Easysearch 是一个分布式的近实时搜寻与剖析引擎,外围引擎基于开源的 Apache Lucene。Easysearch 的指标是提供一个轻量级的 Elasticsearch 可代替版本,并持续欠缺和反对更多的企业级性能。</p><p>Easysearch 本次更新如下:</p><h3>Bug fix</h3><ul><li>修复 source_reuse 与字段别名抵触</li><li>改良 HierarchyCircuitBreakerService 并增加断路器</li><li>修复 _meta 不为空且 启用 source_reuse 时的映射解析谬误</li><li>修复 source_reuse 下对多值还原不正确的问题</li></ul><h3>Improvements</h3><ul><li>优化初始化配置向导,分步骤执行</li><li>改良 HierarchyCircuitBreakerService 并增加断路器</li><li>改良跨集群复制的数据加载,减少对 source_reuse 索引的反对</li></ul><h2>期待反馈</h2><p>欢送下载体验应用,如果您在应用过程中遇到如何疑难或者问题,欢送返回 INFINI Labs Github(https://github.com/infinilabs) 中的对应我的项目中提交 Feature Request 或提交 Bug。</p><ul><li><strong>下载地址:</strong> https://www.infinilabs.com/download</li></ul><h2>对于极限科技(INFINI Labs)</h2><p></p><p>极限科技,全称极限数据(北京)科技有限公司,是一家专一于实时搜寻与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据摸索与剖析体验。</p><p>极限科技是一支年老的团队,采纳人造分布式的形式来进行近程合作,员工散布在寰球各地,心愿通过致力成为中国乃至寰球企业大数据实时搜寻剖析产品的首选,为中国技术品牌输入添砖加瓦。</p><p>官网:https://www.infinilabs.com</p></article> ...

March 4, 2024 · 1 min · jiezi

关于搜索引擎:京东搜索EE链路演进-京东云技术团队

导读搜寻零碎中容易存在头部效应,中长尾的优质商品较难取得充沛的展现机会,如何破除零碎的马太效应,晋升展现后果的丰富性与多样性,助力中长尾商品成长是电商平台搜寻零碎的一个重要课题。其中,搜寻EE零碎在放弃排序后果根本稳固的根底上,通过将优质中长尾商品交叉至排序后果中将优质商品动静展现给用户,晋升用户体验与搜寻后果丰富性,是破除马太效应的一大助力。 本文将从搜寻EE近期的全量迭代登程,展示其链路演进的整体脉络,蕴含:EE自适应动静探测模型——EE场景建模形式降级——打分与交叉两阶段一致性降级——探测与天然流量全局联动优化四个阶段,梳理对搜寻EE的思考与下一步迭代方向。 全文目录:1. EE自适应动静探测模型 2. EE场景建模形式降级 3. 打分与交叉两阶段一致性降级 4. 感知上下文的品牌店铺维度探测 5. 总结与瞻望 一、EE自适应动静探测模型传统EE模型从商品曝光置信度、打分置信度等角度登程,决策EE商品的展现地位以及交叉地位,较少从用户浏览用意与摸索志愿的差异化角度,来考量探测力度。其可能导致用户在宽泛浏览与筛选商品时,短少丰盛的商品抉择,在决策购买时反而交叉了摸索商品的误判情景,影响用户的搜寻体验,不能充分发挥搜寻EE零碎的摸索和利用(Explore & Exploit)两大能力。 针对以上探测错配状况,可尝试在EE模型中显式建模用户的“逛”、“买”摸索偏好,进一步联合偏好,自适应调整搜寻EE的利用与摸索力度。对于偏“逛”用户加强EE摸索力度,提供更丰盛的摸索展现;对于购买志愿显著的用户,提供更间接的购买抉择。通过对用户摸索偏好的显式建模,可能在晋升用户的转化效率的同时晋升搜寻后果丰富性。 1.自适应摸索模型优化相较于原有EE模型,自适应摸索对EE模型的自适应摸索能力进行了降级,次要体现在如下三点:(1)对用户摸索偏好进行差异化建模:"逛" "买"用户提供动静差异化探测力度,在转化效率和搜寻丰富性中获得均衡。(2)以用户浏览深度为子工作建模到EE模型中:以浏览深度作为用户志愿的重要指标,并建模到EE模型中,显式加强模型对用户浏览志愿的感知。(3)晋升模型对探索性特色利用性:对摸索偏好的显式建模,晋升探索性特色在模型中的学习权重,在EE过程中对摸索特色进行充分利用。 2.计划实际 为了加强EE模型的自适应摸索能力,针对原有EE模型进行如下降级: (1)摸索偏好网络Explore-Net 在放弃原有的EE模型主网络Exploit-Net根底上,增加了摸索偏好网络Explore-Net(图中左下绿色局部),晋升模型对用户摸索用意的差异化建模。 ①输出特色优化 思考到用户的摸索用意只与集体个性、搜索词相干,因而Explore-Net的输出特色仅应用用户侧、Query侧中相干特色。 为进一步度量特色与摸索偏好的关联性,统计不同浏览深度下各特色的散布差别,剔除了未与浏览深度显著相干特色,如搜索词长度等,精简特色空间晋升预估精度。 ②模型显性建模 EE原模型的输出中蕴含探索性特色,但在进行搜寻排序工作中易被其余特色覆盖导致利用率不强,在摸索偏好建模中显式构建了摸索偏好网络Explore-Net,对用户摸索用意进行独立建模构建,加强探索性特色的重要性。 优化后的EE模型具备Exploit-Net与Explore-Net双塔构造,Exploit-Net对商品进行精准化打分,对候选商品进行充分利用;Explore-Net对用户摸索志愿进行建模,依据用户偏好动静调整摸索力度,独特形成商品摸索与利用的残缺机制。 (2)用户浏览深度回归工作构建 在原有的训练过程根底上,增加了用户浏览深度回归工作(图中左上红色局部),晋升模型对用户浏览志愿的感知性,加强EE模型的自适应摸索能力。 ①辅助工作抉择 浏览深度作为用户浏览志愿的直观体现,体现了用户的摸索志愿,因而应用浏览深度预估工作作为模型训练的辅助工作,对用户偏好进行显式建模。 在辅助工作类型的考量上,综合思考了将浏览深度划分不同区间进行预测的分类工作,以及对浏览深度的回归工作。在试验中分类工作体现出较为显著的头尾倾向性,输入值散布不平均,实际中最终选用了回归工作作为辅助工作。 ②回归工作设计 在样本数据分析中,发现用户的浏览深度差异化极大。为了均衡浏览深度的差别,保障模型输入值的平均性与差异性,对浏览深度标签进行了log平滑放缩,并选用RMSE-loss作为辅助工作的损失函数对浏览深度工作进行构建。 在模型训练中头尾样本绝对较少,对过浅和过深的两类样本预测准确性偏低。为均衡样本间差别,在损失函数的样本权重设计中,对由浅到深相应样本,其权重为先减小后增大的 “凹形”权重,均衡头尾和腰部样本的准确性。 (3)Explore-Net与主网络的二次交融 Explore-Net 和 Exploit-Net 进行了交融(图中中上红色局部),加强模型整体对探索性特色的利用,晋升EE隐层embedding丰富性,对摸索偏好较强的用户晋升了不确定性打分,晋升摸索商品的范畴和丰盛度。 ①特色交融 因为在用户浏览深度回归工作上对用户的摸索偏好进行了显式建模,Explore-Net的输入embedding对探索性特色进行了高维抽取,可能对用户偏好进行自适应建模。 为让摸索偏好特色更好地参加到整体工作训练中,均衡打分的精准性与差异化,将Explore-Net的深层表征与Exploit-Net的深层表征进行拼接交融,晋升EE模型隐层embedding的丰富性和表征能力,晋升模型打分能力。 ②不确定性预估交融 用户的摸索偏好与商品的不确定性预估有间接的相干关联。对于摸索用意较强的用户,晋升商品打分的不确定性,助力更丰盛的商品交叉到搜寻后果中,反之亦如此。因而在不确定性预估模块中,设计在摸索表征层面进行交融。 在不确定性预估(SVGP)模块中,将浏览深度回归网络输入值与方差预估局部进行了二次交融,对于摸索偏好较强的用户,显式强化了商品不确定性打分,晋升摸索力度。 3.降级成果(1)摸索利用成果剖析 ①EE模型打分后果剖析: 在雷同的预测集上,统计了均匀打分探测力度随浏览深度变动状况 论断:相比原模型,自适应摸索模型的均匀探测力度,随浏览深度增大而逐步增大,体现出session维度的显著差异化。 ②EE试验位下交叉商品地位剖析: 在各试验位下,统计均匀插入地位与浏览深度的变动状况。 论断:Test桶后果,随着浏览深度增大,商品的均匀插入地位相比原模型有所前移,摸索力度加强。 外围论断:通过以上对摸索利用的成果剖析,自适应摸索模型合乎设计预期,在浏览深度较低的session下插入商品较少,摸索力度较弱;在浏览深度较深的session下,EE模型的摸索志愿更强,模型摸索力度更大,交叉商品地位有所前移。 (2)线上成果 放弃搜寻效率持平的状况下,EE外围指标晋升显著并全量上线,流动性、摸索成功率晋升近 0.5%。 商品建模形式思考: 差异化建模用户摸索用意后,EE模块实现了对不同用户自适应调整摸索并获得了肯定收益。用户侧建模形式优化后,对商品侧建模形式进行降级革新,将是进一步晋升EE探测模型的正当切入点。 二、EE场景建模形式降级原主网络建模形式为点击率单任务,点击作为转化的前置行为,建模点击行为实现对后劲中长尾的摸索助力。同时在实践中,通过样本label进行动静权重调整,隐式建模转化属性,兼顾转化效率。 仅建模点击对高转化属性商品并不敌对,同时是对题目党行为的潜在激励,和EE模块优化整体生态环境、打造搜寻长期价值的初衷有所偏差。因而降级思路不再局限于仅关注曝光后取得点击这一前置链路行为,而是对整体转化链路进行建模,关注商品的多维度属性。 1.EE场景建模形式优化在原有根底上引入转化行为的显式建模工作,将主网络结构从点击单任务降级为点击转化多任务,以多任务形式加强不同行为的建模品质,实现对商品的更全面、更精确建模。 2.计划实际 在EE自适应摸索机制根底上,EE场景建模形式降级对原有模型进行了如下优化与降级: ...

September 4, 2023 · 1 min · jiezi

关于搜索引擎:基于-OpenSearch-向量检索版大模型搭建对话式搜索

面向企业开发者的PaaS计划一周前,阿里云OpenSearch公布的LLM智能问答版,面向行业搜寻场景,提供企业专属问答搜寻服务。作为一站式免运维的SaaS服务,智能问答版基于内置的LLM大模型提供问答能力,为企业疾速搭建问答搜寻零碎,详见链接:https://developer.aliyun.com/article/1239380 除了SaaS的解决方案外,现在阿里云OpenSearch再推面向企业开发者的PaaS计划:基于OpenSearch向量检索版,为企业开发者提供性能体现优良、性价比优异的向量检索服务,并提供与大模型联合脚本工具,用户可在应用能力牢靠的向量检索服务的同时,自由选择文档切片计划、向量化模型、大语言模型。 大语言模型时代,对话式搜寻开启新纪元随着2022年末公布大语言模型利用,短短两个月工夫月活过亿,惊人的增长速度刷新了AI利用的记录,也把整个世界带到了大模型时代。 新的技术浪潮带来业务场景的变革,Google、Bing等大企业的跟进,使得对话式搜寻成为企业争相摸索的新畛域,如何将大语言模型弱小的逻辑推理、对话能力,与业务本身垂直畛域数据相结合,打造出专属企业的对话式搜寻服务,成为待解决的首要问题。 为什么不能间接应用大语言模型?大语言模型体现出的“什么都懂,什么都能聊”,次要依赖于底座大语言模型(LLM)中压缩的世界常识,它可能答复比拟普世的问题,但如果间接应用大语言模型征询垂直业余畛域问题,因为世界常识中并不蕴含企业专属的数据,失去的后果常常是齐全谬误的、不相干的。 下图示例中,提到的havenask是阿里巴巴自研的开源大规模搜索引擎(https://github.com/alibaba/havenask),作为OpenSearch的底层引擎于2022年11月对外开源,但大语言模型并未获知此信息,返回后果不现实。 开源信息尚且如此,可见企业想基于本身数据构建对话式搜寻,是无奈间接应用大语言模型的,需寻求联合计划。 为什么用向量检索+大语言模型搭建对话式搜寻?对话式搜寻的利用场景对话式搜寻可被利用于电商、内容、教育、企业外部等多行业畛域,依据客户特色与问题需要,精准取得问答后果,高效获取信息。 那么企业该如何基于本身数据,构建垂直畛域对话式搜寻服务呢?以后大多数企业均采纳“文档切片+向量检索+大模型生成答案”的形式,构建垂直畛域对话式搜寻。 将企业数据和对话交互信息,先进行向量特征提取,而后存入向量检索引擎构建索引并进行类似度召回,将召回TOP后果传入LLM大语言模型,对信息进行对话式后果整合,最终返回给客户。这种计划在老本、成果、业务应用灵便度等不便均具备劣势,成为企业的优选计划。 什么是向量?将物理世界产生的非结构化数据(如图片、音视频、对话信息),转化为结构化的多维向量,用这些向量标识实体和实体间的关系。再计算向量之间间隔,通常状况下,间隔越近、类似度越高,召回类似度最高的TOP后果,实现检索。向量检索其实离咱们很近:以图搜图、同款比价、个性化搜寻、语义了解…… 为什么向量能用于对话式搜寻?向量检索的其中一个典型利用场景就是「天然语义了解、语义了解」,而对话式搜寻的外围,也在于对问题和答案的语义了解。 下图举例,当用户征询“浙一医院”的相干问题时,因为数据库中不具备“浙一”关键词,所以传统分词搜寻无奈召回。此时引入向量分析,对人们历史语言与点击关联进行剖析,建设语义相关性模型,将数据特色用高维向量表白,通过比对向量间隔,发现“浙一医院”和“浙江大学医学院从属第一医院”相关性很高,能够被检索进去。 由此可见,向量能够在对话式搜寻计划中,承当语义剖析、返回相干数据后果的重要作用。 OpenSearch向量检索版+大模型计划简介OpenSearch向量检索版是阿里巴巴自主研发的大规模分布式搜索引擎,其外围能力广泛应用于阿里巴巴和蚂蚁团体内泛滥业务。OpenSearch向量检索版专一向量检索场景,数据毫秒级查问,数据秒级更新、实时写入,反对标签+向量混合检索等能力,满足同平台下不同企业、同企业内不同业务的问答场景向量后果返回。 OpenSearch向量检索版+大模型计划整体分为2个局部,首先将业务数据进行向量化预处理,其次在线搜寻服务进行检索及内容生成。 (1)业务数据预处理 为了可能依照用户需要搜寻到指标商品,须要对业务数据进行预处理,构建向量索引实现搜寻性能 步骤1:将文本模式的业务数据导入文本向量化模型中,失去向量模式的业务数据 步骤2:将向量模式的业务数据导入到OpenSearch向量检索版中,构建向量索引 (2)搜寻问答在线服务 实现搜寻性能后,联合Top N搜寻后果,基于LLM问答模型返回搜寻问答后果 步骤1:将终端用户输出的query输出文本向量化模型,失去向量模式的用户query 步骤2:将向量模式的用户query输出OpenSearch向量检索版 步骤3:应用OpenSearch向量检索版内置的向量检索引擎失去业务数据中的Top N搜寻后果 步骤4:将Top N搜寻后果整合作为prompt,输出LLM问答模型 步骤5:将问答模型生成的问答后果和向量检索失去的搜寻后果返回给终端用户 (3)成果展现 下图为将OpenSearch产品文档作为业务数据,应用本计划构建的对话式搜寻成果展现。 OpenSearch向量检索版+大模型计划,有哪些劣势? (1)高性能:自研的高性能向量检索引擎 大模型场景下,向量维度广泛较高,对性能老本要求更高OpenSearch向量检索版反对千亿数据毫秒级响应,实时数据更新秒级可见OpenSearch向量检索版的检索性能优于开源向量搜索引擎数倍,在高QPS场景下召回率显著优于开源向量搜索引擎 $$OpenSearch向量检索版VS开源引擎性能:中数据场景$$ $$OpenSearch向量检索版VS开源引擎性能:大数据场景$$ 上述数据起源阿里巴巴智能引擎事业部团队,2022年11月 (2)低成本:采纳多种形式优化存储老本,缩小资源耗费 数据压缩:可将原始数据转化为float模式存储,并再采纳zstd等高效算法进行数据压缩,实现存储老本优化精密索引结构设计:针对不容类型索引,可采纳不同优化策略,升高索引大小非全内存加载:能够应用mmap非lock的模式加载索引,无效升高内存开销引擎劣势:OpenSearch向量检索版引擎自身具备构建索引大小、GPU资源耗用的劣势,等同数据条件下,OpenSearch向量检索版内存占用仅为开源向量检索引擎的50%左右(3)具备丰盛的向量检索能力 反对HNSW、QC、Linear等多种向量检索算法反对标签、文本倒排索引、向量索引的混合检索 反对按表达式过滤,边过滤边检索 Query中反对设置,类似度阈值、扫描返回的节点数等参数,配置灵便(4)海量数据反对,应答业务扩张 反对大规模向量疾速导入与索引构建,单节点 348维 1亿向量,通过配置优化,可在3.5小时内实现全量构建反对数据动静更新、即增即查、主动索引重建反对数据程度扩大(5)可灵便、疾速搭建企业专属对话式搜寻 稳固牢靠:应用客户业务数据而非公开数据进行内容生成,输入后果更加稳固、牢靠交互降级:既能为客户返回对话式检索后果,也能够作为传统检索,返回TOP后果,更灵便应答各种业务场景流式输入:向量检索之后的LLM交互通常耗时较长,OpenSearch反对流式输入,缓解等待时间过长的体验问题产品配置流程 第一次开明阿里云账号并登录控制台,您需先创立AK和SK产品反对MaxCompute数据源、API数据源,您需提前准备向量数据(后续产品将集成文本embedding服务,可关注产品更新布告)购买OpenSearch向量检索版实例,零碎主动部署与购买规格统一的空集群,您需为该集群「配置数据源、配置索引构造、索引重建」,实现向量数据导入与索引构建之后,才可失常搜寻在控制台查问测试页面或通过API/SDK,进行向量搜寻成果测试下载OpenSearch大模型联合工具,并配置大模型相干信息(用户可通过简略调整联合工具代码,自行抉择第三方大模型联合应用)启动对话式搜寻服务更多应用阐明参考: https://help.aliyun.com/document_detail/2341640.html 特地揭示:本解决方案中的“开源向量模型”、“大模型”等来自第三方(合称“第三方模型”)。阿里云无奈保障第三方模型合规、精确,也不对第三方模型自身、及您应用第三方模型的行为和后果等承当任何责任。请您在拜访和应用前慎重考虑。此外咱们也提醒您,第三方模型附有“开源许可证”、“License”等协定,您该当仔细阅读并严格遵守这些协定的约定。 点击立刻收费试用云产品 开启云上实际之旅!原文链接 本文为阿里云原创内容,未经容许不得转载。

June 14, 2023 · 1 min · jiezi

关于搜索引擎:记录搭建一个私人搜索引擎

自己很喜爱搜索引擎技术,最近想搭建一个属于本人的私人搜索引擎,主动实现所有的进去流程,记录一下。把某个行业、某个畛域,对应的网址放在一个txt文件内,接下来动动鼠标,点几下,从爬取到最初即时搜寻,主动全副搞定,成果跟在百度搜寻没什么两样。 以下是具体的操作流程逻辑: 第一步:创立一个索引工作,一键生成这个操作会主动创立对应的表,用来寄存爬取的网页内容,不须要人工创立,省去一些过于细化的配置。 第二步,开始主动内容爬取,主动入库这个过程会先在后盾进行多线程链接爬取,而后再进行多线程内容爬取,只须要指定链接文件,爬取层数,是否遵循robots,保留表,就能够一键开始爬取,期间会有进度条显示。 第三步,一键更新指定内容索引这个过程会通过索引模块,对某个表进行分词,索引,生成倒排索引文件,此过程也是全自动的。 第四步,指定搜寻库,开始搜寻生成完索引后,能够指定哪个索引作为以后搜寻的搜寻库,而后就能够自在搜寻了 对于数据承载量,一般版本单机可承载几十万数据,高级版本单机可承载千万级数据,次要在于算法逻辑和数据结构的区别。语言为php+mysql,主打一个傻瓜式操作,配置不便。如果你也喜爱搜寻技术,能够相互交换。

May 13, 2023 · 1 min · jiezi

关于搜索引擎:OpenSearch-图搜图文搜图向量检索最佳实践

一、向量检索介绍1.1 多模态信息的典型特点-非结构化信息能够被划分为两大类:当信息可能用数据或对立的构造加以示意,称之为结构化数据;当信息无奈用数字或对立的构造示意,称之为非结构化数据。非构造数据与结构化数据相比较而言,更难让计算机了解。 以搜寻为例:须要将非结构化数据→转为结构化→再实现搜寻; 1.2 向量检索的定义与利用1.2.1 什么是向量检索?将物理世界产生的非结构化数据,转化为结构化的多维向量,用这些向量标识实体和实体间的关系。 再计算向量之间间隔,通常状况下,间隔越近、类似度越高,召回类似度最高的TOP后果,实现检索。 向量检索其实离咱们很近:以图搜图、同款比价、个性化搜寻、语义了解…… 1.2.2 向量检索典型利用场景1.图像/视频/语音 多模态检索 图搜购物、同款比价,拍照搜题、图片辨认等; 2.NLP 文本检索 规范地址库检索、企业机构名称检索、通过补充向量语义召回,晋升搜寻成果; 3.搜寻举荐广告 类似举荐、个性化搜寻等; 4.向量检索简直可能利用到AI畛域的所有场景。 同时检索的后果也能够作为后续算法的输出进行更多业务相干的计算,实现简单的业务场景。 二、企业自建向量检索的痛点性能差:返回后果耗时太长、后果返回率低 —— 搜寻期待久,甚至超时解体,体验差老本高:索引占用过多内存,老本高,价格贵 —— 业务投入老本高,性价比低成果差:短少向量搭建教训,精度和参数调不好 —— 搜寻成果差海量数据反对差:业务快速增长,数据量飞涨,自建计划无奈无效进行海量数据的索引构建和解决 —— 构建慢、更新慢、拓展性差三、OpenSearch向量检索版-端到端图像搜寻解决方案3.1 端到端图像搜寻计划介绍就算企业没有向量数据、仅有图片原始数据,也能通过OpenSearch向量检索版端到端图像搜寻计划,疾速搭建图像搜寻服务。用户能够间接导入图片源数据,在OpenSearch外部便捷实现图片向量化、向量搜寻等步骤,实现以图搜图、以文搜图等多种图像检索能力。 (1)便捷、高性价比的端到端体验 向量化和索引构建客户将图片源数据上传到OpenSearch向量检索版,向量检索版应用内置算法,可能将千亿级别的图片数据进行向量化、存储、并造成向量索引。针对字段、索引进行压缩,尽可能减少内存占用,帮忙客户降低成本。搜寻客户将要搜寻的图片,上传给OpenSearch向量检索版,由它对该图片进行向量化将向量化后的图片与此向量索引进行比对查问,获取类似度最高的后果,并返回给客户 (2)可选三种形式上传图片原始数据,进行向量化解决 OSS+MaxCompute+OpenSearch向量检索版:用户先将图片上传至OSS中,在MaxCompute中存储业务表数据以及每条数据对应的图片地址(OSS里的门路,比方/image/1.jpg)MaxCompute+OpenSearch向量检索版:用户将图片通过base64编码后的图片及其表数据存储在MaxCompute中API+OpenSearch向量检索版:用户通过OpenSearch向量检索版给出的数据推送接口,将base64编码后的图片及其表数据推送到OpenSearch向量检索版实例中 (3)内置模型实现图片向量化 以后内置达摩院开源clip模型实现图像转向量后续将内置更多可选模型3.2 技术劣势劣势一:高性能保障:自研的超高向量检索引擎 OpenSearch向量检索版反对千亿数据毫秒级响应,实时数据更新秒级可见OpenSearch向量检索版的检索性能优于开源向量搜索引擎数倍,在高QPS场景下召回率显著优于开源向量搜索引擎OpenSearch向量检索版VS开源引擎性能:中数据场景 数据起源阿里巴巴智能引擎事业部团队,2022年11月 OpenSearch向量检索版VS开源引擎性能:大数据场景 数据起源阿里巴巴智能引擎事业部团队,2022年11月 劣势二:低成本:采纳多种形式优化存储老本、缩小资源耗用 数据压缩:可将原始数据转化为float模式存储,并再采纳zstd等高效算法进行数据压缩,实现存储老本优化 精密索引结构设计:针对不容类型索引,可采纳不同优化策略,升高索引大小 非全内存加载:能够应用mmap非lock的模式加载索引,无效升高内存开销 引擎劣势:OpenSearch向量检索版引擎自身具备构建索引大小、GPU资源耗用的劣势,等同数据条件下,OpenSearch向量检索版内存占用仅为开源向量检索引擎的50%左右。 劣势三:具备丰盛的向量检索能力 反对HNSW、QC、Linear等多种向量检索算法反对标签、文本倒排索引、向量索引的混合检索,进步检索性能与查问精度,下图举例说明按外围词混合检索、类别过滤前后的搜寻成果比照: 劣势四:反对按表达式过滤,具备边检索边过滤能力,能无效升高搜寻无后果率,晋升搜寻成果 劣势五:Query中反对设置,类似度阈值、扫描返回的节点数等参数,找到查问耗时与返回后果精度之间的最优解 劣势六:大规模数据疾速索引构建、反对实时更新、数据程度拓展 反对大规模向量疾速导入与索引构建,单节点 348维 1亿向量,通过配置优化,可在3.5小时内实现全量构建反对数据动静更新、即增即查、主动索引重建反对数据程度扩大3.3 产品配置流程第一次开明阿里云账号并登录控制台,您需先创立AK和SK产品反对MaxCompute数据源、API数据源,您需提前准备数据购买OpenSearch向量检索版实例,零碎主动部署与购买规格统一的空集群,您需为该集群「配置数据源、配置索引构造、索引重建」,之后才可失常搜寻在控制台查问测试页面或通过API/SDK,进行以文搜图成果测试;通过API/SDK进行以图搜图成果测试通过API/SDK调用向量搜寻服务更多应用阐明参考: :https://help.aliyun.com/document_detail/2247007.html?spm=a2c4...3.4 客户案例某电商客户,通过约15个工作日实现POC接入: 实现2亿级别768维向量数据的存储和索引构建,并反对增量更新无需重建索引万级别数据,实现毫秒级检索响应,查问耗时比照自建计划升高50%反对按条件查问、分类筛选、标签过滤的向量检索能力,满足灵便的业务场景须要原文链接 本文为阿里云原创内容,未经容许不得转载。

April 24, 2023 · 1 min · jiezi

关于搜索引擎:OpenSearch-上线实时热搜个性化底纹功能

搜寻必备性能-热搜和底纹热搜和底纹是一个搜索引擎必备的基本功能,通常占据着搜寻框入口的重要地位。 热搜和底纹处于搜寻整个流程的最上游,通过举荐热门、优质、多样化的查问词,对用户搜寻用意起到重要的疏导作用。既能够缩小用户输出,优化体验,又能够优化查问词品质,大大降低后续查问用意了解。 个性化底纹 实时热搜榜 用户角度热搜、底纹须要满足如下的需要: 我想轻易逛逛,不晓得搜什么好,能不能给我举荐一些优质的查问词?我想晓得大家都搜了些什么,紧跟潮流不会错。最好能联合我的趣味举荐query,也要有多样性,我既想看感兴趣的内容,又想摸索一些新内容经营角度热搜、底纹能够提供这样的价值: 我想晓得哪些query被搜得最多,热门query是用户趣味的风向标,通过剖析热门query能够把握用户的趣味走向,对制订经营策略提供决策依据我想给用户举荐一些优质商品,在用户有输出的状况下,能够通过下拉提醒疏导用户用意;然而在没有任何输出的时候,如何举荐优质query呢?如果给用户举荐热门query,不能总是固定给出最热的那几个query,须要思考到多样性。一方面兼顾用户体验,另一方面须要给局部次热门query曝光机会。通过剖析用户的行为,联合用户的趣味来举荐query,既兼顾用户体验,又能够晋升业务水平,实现既定目标。OpenSearch实时热搜、个性化底纹性能计划介绍为了更好的满足客户的业务场景需要、优化用户的搜寻场景体验,OpenSearch降级原有性能与模型,推出了个性化底纹、实时热搜能力。 个性化底纹服务会依据用户的搜寻历史,联合全局的热门搜索词来为用户举荐query;同时也会被动开掘用户的兴趣爱好,举荐潜在感兴趣的搜索词疏导用户进行搜寻。应用个性化底纹进行搜寻疏导,能够做到既贴合用户的个人兴趣,又会疏导用户浏览多样的内容,以开掘潜在趣味,进步用户的活跃度。实时热搜能够实现热搜榜的实时更新,保障搜寻疏导的时效性。同时对于展现的热搜词,会依据特定的规定分类打标,晋升热搜榜的多样性,优化用户的搜寻疏导体验。实用客户对于搜寻疏导服务有优化需要,进一步减少用户黏性和活跃度心愿提供多方位搜寻疏导,既贴合用户趣味,又保障热度和时效性搜寻疏导优化的投入人力无限,心愿以更低成本取得更好的优化成果应用办法在行业算法版(独享型规格)-搜索算法核心-搜寻疏导-热搜和底纹创立配置模型即可开启训练拜访实时热搜/个性化底纹接口,获取相应后果依据业务需要通过黑白名单对返回后果进行干涉通过API/SDK调用实时热搜,个性能底纹服务。更多应用阐明参考:https://help.aliyun.com/document_detail/602475.html性能价值产品业务更好的搜寻疏导进步用户的产品体验,进步产品DAU通过搜寻行为剖析和趣味开掘,使搜索词更贴合用户趣味以及热度趋势,进步点击率和转化率通过搜索词热度实时计算,保障搜索词的时效性、多样性用户搜寻疏导简化了搜寻输出,能够便捷搜寻本人感兴趣的内容/商品疏导摸索趣味之外的商品/内容,理解以后的热度趋势原文链接 本文为阿里云原创内容,未经容许不得转载。

March 30, 2023 · 1 min · jiezi

关于搜索引擎:ElasticSearch必知必会基础篇

商业倒退与职能技术部-体验保障研发组 康睿 姚再毅 李振 刘斌 王北永阐明:以下全副均基于eslaticsearch 8.1 版本 一.索引的定义官网文档地址:https://www.elastic.co/guide/...索引的全局认知ElasticSearchMysqlIndexTableType废除Table废除DocumentRowFieldColumnMappingSchemaEverything is indexedIndexQuery DSLSQLGET http://...select * fromPOST http://...update table set ...Aggregationsgroup by\sum\sumcardinality去重 distinctreindex数据迁徙索引的定义定义: 雷同文档构造(Mapping)文档的联合 由惟一索引名称标定 一个集群中有多个索引 不同的索引代表不同的业务类型数据 注意事项: 索引名称不反对大写 索引名称最大反对255个字符长度 字段的名称,反对大写,不过倡议全副对立小写 索引的创立 编辑切换为居中 增加图片正文,不超过 140 字(可选) index-settings 参数解析官网文档地址:https://www.elastic.co/guide/...留神: 动态参数索引创立后,不再能够批改,动静参数能够批改 思考: 一、为什么主分片创立后不可批改? A document is routed to a particular shard in an index using the following formula: <shard_num = hash(_routing) % num_primary_shards> the defalue value userd for _routing is the document`s _id es中写入数据,是根据上述的公式计算文档应该存储在哪个分片中,后续的文档读取也是依据这个公式,一旦分片数扭转,数据也就找不到了 简略了解 依据ID做Hash 而后再 除以 主分片数 取余,被除数扭转,后果就不一样了 二、如果业务层面依据数据状况,的确须要扩大主分片数,那怎么办? reindex 迁徙数据到另外一个索引 https://www.elastic.co/guide/... ...

January 10, 2023 · 9 min · jiezi

关于搜索引擎:GoogleHacking语法总结

GoogleHackingGoogleHacking罕用语法(冒号前面不必加空格intext:(仅针对Google无效) 把网页中的注释内容中的某个字符作为搜寻的条件intitle: 把网页题目中的某个字符作为搜寻的条件cache: 搜寻搜索引擎里对于某些内容的缓存,可能会在过期内容中发现有价值的信息filetype/ext: 指定一个格局类型的文件作为搜寻对象inurl: 搜寻蕴含指定字符的URLsite: 在指定的(域名)站点搜寻相干内容GoogleHacking注意事项引号 '' " 把关键字打上引号后,把引号局部作为整体来搜寻or 同时搜寻两个或更多的关键字link: 搜寻某个网站的链接 link:baidu.com即返回所有和baidu做了链接的URLinfo: 查找指定站点的一些根本信息http://www.google.com/custom?... 可实现站内搜索关键字不辨别大小写字母默认应用AND逻辑搜寻Google在默认下漠视关键字中局部罕用单词(如冠词);Google默认限度关键字最多32个单词,但""不占用字符限度位,活用冲破限度;"+"强制搜寻其后的一个单词,能够勾销之前说的Google对罕用单词的漠视(AND逻辑),然而大部分罕用英文符号(如问号,句号,逗号等)无奈成为搜寻关键字,增强制也不行;"-"强制疏忽其后的一个单词,能够屏蔽蕴含某些关键字的网页(NOT逻辑)(如A-C在后果中出现的网页则是含有A且不含有C的);"|"或"OR"(应用时操作符前后都要加空格),对只有合乎多个关键字中的任意一个的后果予以显示;混合应用多种布尔操作时以从左到右的程序执行而不是以数学逻辑。Google hacking语法收集网站https://www.exploit-db.com/go...GoogleHacking经典语法治理后盾site:target.com intext:治理 | 后盾 | 后盾治理 | 登陆 | 登录 | 用户名 | 明码 | 零碎 | 账号 | login | systemsite:target.com inurl:login | inurl:admin | inurl:manage | inurl:manager | inurl:admin_login | inurl:system | inurl:backendsite:target.com intitle:治理 | 后盾 | 后盾治理 | 登陆 | 登录www.fi11sm33.comsite:*.jxau.edu.* intext:治理 | 后盾 | 后盾治理 | 登陆 | 登录 | 用户名 | 明码 | 零碎 | 账号 | login | system上传类破绽地址site:target.com inurl:file site:target.com inurl:upload注入页面site:target.com inurl:php?id=编辑器页面site:target.com inurl:ewebeditor目录遍历破绽site:target.com intitle:index.ofSQL谬误site:target.com intext:"sql syntax near" | intext:"syntax error has occurred" | intext:"incorrect syntax near" | intext:"unexpected end of SQL command" | intext:"Warning: mysql_connect()" | intext:”Warning: mysql_query()" | intext:”Warning: pg_connect()"phpinfo()site:target.com ext:php intitle:phpinfo "published by the PHP Group"配置文件泄露site:target.com ext:.xml | .conf | .cnf | .reg | .inf | .rdp | .cfg | .txt | .ora | .ini数据库文件泄露site:target.com ext:.sql | .dbf | .mdb | .db日志文件泄露site:target.com ext:.log备份和历史文件泄露site:target.com ext:.bkf | .bkp | .old | .backup | .bak | .swp | .rar | .txt | .zip | .7z | .sql | .tar.gz | .tgz | .tar公开文件泄露site:target.com filetype:.doc | .docx | .xls | .xlsx | .ppt | .pptx | .odt | .pdf | .rtf | .sxw | .psw | .csv邮箱信息site:target.com intext:@target.comsite:target.com 邮件site:target.com email社工信息site:target.com intitle:账号 | 明码 | 工号 | 学号 | 身份证referhttps://zhuanlan.zhihu.com/p/...https://www.cnblogs.com/R-S-P...https://www.cnblogs.com/wwcdg...https://zhuanlan.zhihu.com/p/...https://www.cxymm.net/article...https://blog.csdn.net/huweili...https://www.heibai.org/975.html

November 3, 2022 · 1 min · jiezi

关于搜索引擎:搜索引擎分布式系统思考实践

1.引言搜索引擎在数据量逐渐扩充之后,分布式搜寻是必经之路。搜索引擎的分布式除了要思考数据分片之外,更重要还须要思考数据的有状态以及各组件的状态流转。在这里分享一下基于ZK设计分布式搜索引擎的一些教训和思考落地状况,蕴含了从单机版本到分布式版本的演进。 2.分布式系统分布式系统(distributed system)是一个硬件或软件组件散布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的零碎。当单机零碎在申请量或者数据量无奈承载的时候,须要思考对系统进行正当的分布式革新和部署。CAP(Consistency Availability Partition tolerance)定理是大家熟知的概念,这三个指标是不可能同时做到的,所以在理论利用中,咱们须要咱们总是须要针对以后的业务进行取舍,比方在外围数据库畛域为了数据强一致性那么咱们可能斗争一部分可用性,而在大流量的服务上可能会优先可用性,而在Search的搜寻和举荐的利用场景中咱们应该优先选择可用性,来优先保障性能,而在强一致性上斗争,只须要保障最终一致性即可。3.分布式系统面临的挑战构建一个残缺的分布式系统须要解决如下几个重要的问题: 牢靠的节点状态感知在分布式系统中异样来自很多状况,包含服务器硬件不可用导致的解体,零碎呈现重大异样解体退出,网络不稳固带来的链接异样和不稳固、服务负载过高呈现的假死等各种异样状态。数据更新的可靠性搜寻服务作为有状态的服务,须要索引大量的数据,同时更为重要的是索引数据不仅每时每刻都在写入,而且须要保障天级别或者小时级别的全量数据更新,对于一个在线服务,又要保障检索的稳定性。形象比喻为高速上换车轮不为过。 4.Search分布式总体构造Search分布式总体包含了几大组件: shard(外围检索逻辑和索引分片)searcher(检索和申请散发)indexbuild(离线索引构建)search-client(服务发现客户端)Search分布式框架: 5.shard模块Search的shard模块是整个搜索引擎的外围局部,其次要的性能蕴含了每个独立的检索单元,次要的框架模块蕴含以下局部: 5.1 索引Search的索引蕴含多种品种,每种品种数据结构不一样以后已有的外部索引有正排索引、倒排索引、Term索引、Tf的索引、向量索引等多种索引模式。 正排索引 Search的正排索引寄存了从引擎内每个主键ID到每条doc残缺数据的映射,索引的构造是一个Hashmap构造,每个Key是主键ID的Hash值,value是指向每个残缺doc的指针。引擎外部应用两个Hashmap,第一个是主键ID到惟一的docid映射另一个是docid到残缺doc的指针映射。 倒排索引 倒排索引实质上是记录Key到每个doc的映射,在检索中须要保障倒排链有高效的读写能力,读能力利于高效进行简单的检索语法操作,比方AND、OR、NOT等简单的操作。同时倒排链的数据结构还须要高效的写能力,在引擎检索的同时须要将实时数据写入到引擎,不可避免的须要批改倒排链,所以高效的写能力也比拟要害。 数组 应用数组来作为索引的构造,益处是读很快,逻辑操作也快,cache敌对,然而写操作不行,只能用于离线固定的数据,不写入增量的形式。 跳表(SkipList) 跳表的数据结构是对链表的一种折中,读写性能都算中规中矩,CPU的cache性能比拟差,记录单个docid应用的空间比拟多,须要两个指针外加一个整型。 Bitmap Bitmap类型是应用位来示意二值信息,Bitmap的位数来作为Key值,搜索引擎倒排索引构造比拟适宜Bitmap这种数据结构,同时Bitmap的构造对CPU的cache敌对,读和写操作很快,然而因为Bitmap是记录了所有Key的状态,包含Bitmap是0的,导致空间可能节约重大。 Roaring Bitmap RoaringBitmap是带有肯定压缩性能的Bitmap构造,在既保留了Bitmap的随机读写的性能外,正当对Bitmap中1和0的浓密水平做了解决,缩小了存储空间,综合性能比拟优。倒排索引的数据结构每个都有各自的实用场景和数据,总体来说看RoaringBitmap的综合性能较好一些。ES搜索引擎(Elasticsearch)中对这几种倒排索引有一个具体的测试,感兴趣的同学能够针对每个测试下看一下各自的测试后果。 Term索引 Term的索引次要用来寄存每个字段分词完的每个Term,因为Term数量十分大,如果依照一般的寄存会有大量的空间节约,同时搜索引擎须要前缀搜寻,所以Term词的寄存须要满足前缀查问。Search的Term词寄存应用的数据结构是FST(Finite-State Transducer)数据结构,对应的具体论文地址,FST的数据结构要比前缀查问树Trie树更加的节俭空间,查问效率两者相比基本一致。 向量索引 向量索引外部是一种非凡的倒排索引,依据不同的近似向量查问算法,产出不一样的索引,针对矢量量化算法而言,训练后的向量索引会先聚类成肯定数量的倒排索引,每个聚类后果造成一个codeID,倒排是对应这个聚类下的向量。所以向量索引是一类非凡的倒排索引。 5.2 查问排序查问模块是Search外围的功能模块,包含了检索的泛滥外围业务逻辑,其中包含自研的分词器MusicWs、analysis词性剖析模块、语法解析和逻辑查找模块、Search排序框架以及缓存模块等各局部模块。 6.searcher模块searcher模块是Search外围局部,shard模块的上游,次要的性能蕴含了对申请的分片和Merge以及对数据的重排序等性能。searcher的整体构造如下: 6.1 查问路由Route模块 Route模块次要性能是对申请的原始Query进行横向切分,Route会依据在ZK门路中保留的分片信息来对申请进行分片,比方申请中会带最大召回截断fulllimit,Route会依据fulllimit的值同时依据分片个数进行调配,而后散发到各个shard节点下来。 Merge模块Merge模块是对shard的数据回包进行解决聚合和解决,对各个shard模块回包数据进行解决和聚合。 6.2 排序框架searcher中排序框架,次要是对全局的最初后果进行从新的排序,比方歌曲中会对最终的歌曲检索对立进行打分,每个shard将对应的歌曲归一化分数上传给searcher模块,最终将分数进行对立的排序。同时,排序框架反对自定义开发的打分器和排序插件。 7.Search客户端和服务发现机制Search的服务发现机制是沟通各个服务之间的外围模块,除了保障失常的RPC数据调用外,还要保障服务异样时候流量失常的切换的调度。Search服务发现功能模块: Search的服务发现蕴含两局部,服务端和客户端,通过ZK来交互,ZK上寄存了每个集群的机器IP和端口,客户端来监听该门路的变动,当任意列表中IP删除后,ZK回调客户端来感知,客户端将流量从该台机器切走。同时客户端和服务端之间存在心跳,用于服务端服务卡死等异常情况下流量切流。 8.Search分布式节点的设计带有状态的分布式系统最简单的莫过于对于异样的解决了,包含数据的更新和节点异样的解决,对于Search来言数据的更新会导致节点的高低线,包含状态的变动,而集群的扩缩容会导致各个节点激烈变动带来异样,同时某个节点出了问题,也须要集群智能进行解决和路由,所以后期必须设计一套牢靠的解决机制。 8.1 各个节点的设计shard和searcher的节点是整个Search零碎中的重中之重,首选须要设计一个正当的层次结构来组件整体的分布式系统。 上图是shard节点在ZK中的门路散布,依照集群名利用名逐层散布,在门路的开端节点寄存的是每个shard的本人的分片信息,第一位是总的分片,第二位是第几个分片的ID,该门路下注册的是所有shard的集群IP和端口列表。searcher服务通过监听这个门路来获取以后散发的具体分片数,曾经对应的分片ID。当须要扩容的时候,新的节点服务更新完数据后将本人的对应IP和端口注册到新的节点上,随着老的分片机器逐渐更新数据到新的分片中,对应的老的节点中分片集群IP越来越少,最初逐渐全副迁徙到新的节点中。这是实现了扩容,同理缩容的时候shard节点反向操作实现缩容。 8.2 shard节点和searcher节点的申请设计在shard的节点设计中没有进行辨别主正本,各个正本之前都是有申请流量,之所以这么思考是因为进步机器利用率,只是简略正本价值不大,所以所有正本权重均衡全副接流量。 部署的时候,每一行是一个残缺的数据汇合,也是整体的一个最小申请行。而每一列是雷同的数据汇合,没有主从之分,任何一个节点下面都有流量。当其中一个节点出了问题,比方节点解体,过程退出,在解体的时候shard端外部机制会在解体前被动进行下线,那么searcher会将流量主动散发到残余的shard列节点中。 9.Search分布式数据流的设计Search是有状态的检索服务,会有始终写入的实时数据也有每天或者每小时更新的离线数据到引擎中,数据的牢靠更新十分重要,对于分布式而言,各个分片的产出更新和实时数据的写入都是十分重要的一环。 引擎分为实时和离线,在引擎的构建零碎中会依据中台中设置的总分片数来对原始数据进行平均分片,分片逻辑是依据每条数据的主键ID取Hash而后同余,而后给构建零碎进行构建索引,最初构建完的索引对立放在Search的HDFS门路下。实时数据通过Kafka汇总后,各个shard分片会对立生产Kafka中的数据,而后依据数据中的主键ID进行Hash后同余判断是不是本人所在的分片最初判断是否写入本人所在的索引。对于一致性的解决,因为同一个shard分片中的多个正本中的生产速度不同,实践上只能保障同一个分片中多个正本的最终一致性,即存在某一个时刻有一个数据最先到一个分片中那一瞬间优先检索进去,而同样的搜索词可能在其余分片中检索不进去,不过这种状况简直会感知不到,因为多个正本的生产速度都是在每秒解决几万到十万级别的数据,也就是说Search增量写入能力单条都在1ms以下,除非呈现其中一个节点网络问题或者磁盘异常情况会呈现写入呈现问题,最终呈现某些节点数据检索异样,不过这些异样都会通过报警及时报警,进行节点解决。 10.总结本篇文章次要是对搜索引擎分布式的设计和落地做了总结,次要的几个重要局部是,如何设计一套有状态的分布式系统,其中最次要的外围局部是如何对各个节点的状态变动做解决,以及正当的对数据进行分片和解决。其中ZK的门路节点设计,主动扩缩容的实现,客户端的服务发现,状态感知性能,都是其中外围局部。 *文/苏黎@得物技术公众号

August 23, 2022 · 1 min · jiezi

关于搜索引擎:内容社区行业搜索最佳实践

简介:社区内容通常包含UGC和PGC。因为关键词和内容多样性丰盛、用词标准水平参差不齐,搜索引擎须要对关键词和内容进行智能语义剖析,辨认出用户真正的查问用意,找到最全面最相干的后果满足用户需要。本文将具体介绍如何通过“凋谢搜寻(OpenSearch)内容增强版”在社区论坛场景的利用,晋升用户搜寻体验,带来更多的业务转化。 社区的外围是用户,用户进入社区的次要目标是为了生产内容。内容能够是狭义的图文、音频、视频,也能够是通过社区找到解决问题的办法。优质的内容能晋升用户的活跃度,为平台带来流量与时长,实现用户增长和留存,取得更多业务机会和收益。 "搜寻"作为社区间接获取内容的最有效途径,每个社区都在一直解决上面的搜寻成果问题: 如何精确了解用户的搜寻用意,返回最匹配的后果?如何通过内容流传的差异化,个性化来晋升用户的搜寻体验,加强社区归属感和忠诚度?如何在社区里不同畛域,不同垂类,不同频道间的内容召回中实现交互和连贯?如何实现非商业化内容与商业化内容更好的交融与倒退?本文将带着以上几个思考,为大家解析内容社区行业搜寻特点和挑战,以及介绍阿里云智能凋谢搜寻-内容社区行业增强版的解决方案和利用实际。 内容行业搜寻业务需要» 更多的曝光机会——无后果率低;» 更好的搜寻品质——搜寻相关性高,更高质量的排序;» 更丰盛的业务特色——联合业务个性调整搜寻后果;» 更全面的配套性能——智能纠错、热搜、底纹、下拉提醒等配套能力;» 更低的领有老本——相较自建搜索引擎更低的开发、资源、运维老本;» 更便捷的开发应用——上线周期短,升高搜索引擎开发、成果调优难度; » 用户搜寻用意指向性强——主搜汇集多个频道内容,搜寻后果相关性要求更加精准; 以某论坛社区为例,产品线笼罩多个平台,蕴含网页、APP、小程序等模式,同时业务上辨别多个频道。随着业务的倒退,首页综合搜寻(后简称“主搜”)的流量越来越大,各种付费、引流业务接入,对搜寻流量的经营变得更加重要,对主搜的业务诉求越来越多,须要聚合多个频道的内容,同时搜寻后果相关性要求更加精准,在思考文本相关性的前提下,要退出更多的商业因素思考。 成熟的搜索引擎波及离线模块、在线模块、查问了解服务、算法平台等零碎,所需大量开发、算法调优以及继续的简单运维工作,因为人力无限,自建搜寻零碎很难满足业务需要。 常见搜寻业务场景文章搜寻博文、问答、心得分享等内容搜寻精品内容、热帖发现付费资源引流标签分类过滤、筛选(配图来自阿里云开发者社区) 话题搜寻热门流动、话题互动PGC、UGC热搜、底纹、下拉提醒等搜寻疏导个性化、时效性(配图来自阿里云开发者社区) 凋谢搜寻内容社区增强版计划架构 性能介绍内容行业增强版基于阿里巴巴最新算法性能,贴合不同垂类内容搜寻场景的痛点和需要,提供了内容行业专属的智能语义理解能力、向量召回、排序算法,为内容行业的搜寻性能和成果准确性提供双重保障,并无效的解决了超大词库数据导致的搜寻提早高、资源耗费大、搜寻无后果率低等行业重难点问题。针对内容行业,凋谢搜寻还提供了向量模型,以实现向量召回及多路搜寻,进步查问准确率,并提供多模态搜寻解决方案。 通用版VS内容行业增强版性能差别 查问剖析成果比照行业增强版较通用版相比在查问剖析性能上做出了更深刻的优化,不仅在通用版的根底上更新了常见bad case,而且针对内容行业集各家之所长,丰盛已有词库。 分词:(以空格分词) 拼写纠错: 内容行业向量召回针对内容行业的垂类行业数据分布提供高质量的向量召回模型,保障长尾query,蕴含错别字query,依赖同义词改写召回query的召回成果 向量召回 CTR预估模型-个性化搜寻成果基于Seq行为建模,实现个性化搜寻 例如:用户间断搜寻:“面试”,“Java”两个词和用户只搜寻“Java”的后果是有差别的,实现个性化召回,针对性满足不同用户的搜寻需要,提醒用户搜寻体验。 深度排序模型DeepRanking 模型参数规模能够达到1000亿级别,保障更优搜寻成果,且模型训练、应用成本低,远低于自研人力+机器+研发反对所用老本。 深度召回模型汇合阿里云达摩院的NLP能力,晋升搜寻成果,升高无后果率 针对用户和数据特点,联合阿里巴巴长期技术积攒,深度定制模型构造,做到Make for you的特有深度模型构造。 增强版接入流程轻松接入,疾速上手,一键式接入行业模板,可依据本身业务自定义抉择性能,并满足非技术人员业务干涉调优与数字化经营需要; 点击体验交互式demo 表结构设计详情可参考利用构造--->创立多表join。 数据接入凋谢搜寻反对用户通过数据源将数据接入搜寻,也反对无数据源,通过API/SDK/控制台上传文件的形式导入数据详情如下: RDS数据源配置MaxCompute(原ODPS)数据源配置POLARDB数据源配置API/SDK数据导入内容社区行业模板配置性能抉择,垂类抉择“IT”行业为例,模板性能可自行勾选(默认全选) 其中模板性能包含:查问剖析(IT词权重、IT同义词包、文本向量化等)、排序策略(多路搜寻、文本相关性、向量相关性)、下拉提醒。 搜寻测试如需应用“IT向量索引”搜寻,须要先配置查问剖析-文本向量化性能,并增加对应的IT向量索引: 在搜寻测试中进行测试: 成果定制服务如果有深度召回、排序成果调优、个性化搜寻需要,凋谢搜寻团队专家反对成果定制服务,可填写征询问卷:https://page.aliyun.com/form/... 案例实际某技术社区作为中文IT内容社区,致力于为中国软件开发者提供常识流传、在线学习、职业倒退等全生命周期服务,旗下包含多款产品。 自开始接触阿里云凋谢搜寻产品,在一年的工夫里陆续接入PC端、挪动端的多个平台,笼罩首页搜寻、博客、下载、问答等细分业务的频道搜寻。通过凋谢搜寻,为旗下产品的用户提供高质量的搜寻服务,并通过搜寻能力的优化带来更多的业务转化,晋升整体业务收入。 比照基于开源自建的服务CTR晋升超过80%后续算法专家通过深度定制模型一直帮客户调优,每曝光用户带来点击次数晋升16.7%,Item-CTR晋升11.8%,成果还在继续晋升中; 原文链接本文为阿里云原创内容,未经容许不得转载。

May 5, 2022 · 1 min · jiezi

关于搜索引擎:新功能开放搜索多路召回技术解读

简介:多路召回就是指采纳不同的策略、特色或者简略模型,别离召回一部分候选集,而后再把这些候选集混合在一起后供后续排序模型应用的策略,本文将介绍凋谢搜寻平台上的多路召回技术是如何深度晋升搜寻成果的。 背景所谓的“多路召回”就是指采纳不同的策略、特色或者简略模型,别离召回一部分候选集,而后再把这些候选集混合在一起后供后续排序模型应用的策略。 阿里云凋谢搜寻(OpenSearch)是基于阿里巴巴自主研发的大规模分布式搜索引擎搭建的一站式智能搜寻业务开发平台,目前为包含淘宝、天猫在内的阿里团体外围业务提供搜寻服务反对。目前凋谢搜寻提供文本检索,通过对文本query进行分词加上一些查问剖析解决,对query进行改写后再查问引擎,大大提高了搜寻的成果。然而对于一些对搜寻成果要求较高的场景,例如:教育搜题场景,教育拍照搜题相比传统的网页或者电商的搜寻存在显著的差别,第一点是搜寻的Query特地长,第二点是搜寻的Query由拍照OCR辨认之后失去的文本,其中要害TERM辨认谬误的话,就会重大影响召回排序。针对这些问题的解决办法,一种计划是持续优化QP,加强QP对文本处理的能力。另一种计划是引入向量召回,通过计算向量空间的间隔来召回文档,作为对文本召回的一种补充。 性能价值在长Query、长尾Query、Query不标准等场景时,如果基于文本检索呈现召回不精确、后果有余等问题,补充向量召回能够无效地进步召回文本的成果,同时也能够提供扩召回的能力。 凋谢搜寻提供多路召回的算法工程能力,赋予不同行业的用户定制不同的多路召回性能需要,并且曾经产品化,在多个行业的用户中实际利用。其长处有以下几个方面: 1、提供灵便的算法能力,反对依据不同行业的特点对文本向量化进行技术优化,兼顾成果和性能; 2、反对cava脚本,提供更加灵便的定制排序算分能力; 3、反对带模型的分析器和不带模型的分析器,别离对无算法能力的用户和有算法能力的用户提供向量召回性能; 4、比照开源产品,凋谢搜寻搜寻准确性和搜寻提早劣势更加显著,搜寻提早从开源秒级降到几十ms。 多路召回架构图 多路查问凋谢搜寻(OpenSearch)反对多路查问性能。配置好查问策略,能够同时查问文本Query和向量Query。当然也反对只查问文本Query或只查问向量Query。如果配置了文本向量化性能,则文本查问的时候凋谢搜寻会对文本向量化,生成向量Query,两路后果召回后排序。 向量分析器凋谢搜寻(OpenSearch)反对多种类型的向量分析器,次要是行业通用向量分析器、行业定制向量分析器、以及通用的向量分析器(向量-64维、128维、256维通用)。其中通用的向量分析器须要用户自行将数据转化为向量,并以DOUBLE_ARRAY类型存储,这实用于算法能力较强的客户应用。 查问剖析赋予算法同学对不同行业的向量模型进行定制,依据以教育行业为例, 其中针对教育搜题做的特地优化有: BERT模型采纳达摩院自研的StructBERT,并针对教育行业定制模型向量检索引擎采纳达摩院自研的proxima引擎,准确性和运行速度远超开源零碎训练数据能够基于客户的搜寻日志一直积攒,成果继续晋升改写出语义向量query, RANK上文本term, 只参加算分不参加召回,晋升召回的top文本品质。排序定制凋谢搜寻(OpenSearch)凋谢了两阶段排序:根底排序和业务排序,即粗排和精排。其中,精排反对cava脚本,更灵便地反对用户的排序需要。 多路召回流程中凋谢搜寻最终会进行对立排序,目前反对外部排序和精排模型打分排序。外部排序间接依据多路召回的后果依照返回的分数从高到低排序。精排模型打分须要用户提供模型信息,对多路召回的后果依据模型打分排序。 多路召回实际案例电商/批发搜寻 社区论坛搜寻比照接入前后top title的不同成果 原文链接本文为阿里云原创内容,未经容许不得转载。

January 10, 2022 · 1 min · jiezi

关于搜索引擎:搜索NLP行业模型和轻量化客户定制

简介:凋谢搜寻NLP行业模型和轻量化客户定制计划,解决缩小客户标注老本、齐全无标注或大量简略标注的等问题,让搜寻畛域扩大更易用。特邀嘉宾: 徐光伟(昆卡)--阿里巴巴算法专家 搜寻NLP算法搜寻链路这是一个残缺的从查问词到搜寻后果的链路, 其中NLP算法发挥作用的中央次要在第二阶段的查问剖析,该阶段蕴含多个NLP 算法模块,如文本侧的分词、纠错、实体辨认、词权重、同义词以及语义向量等。零碎是联合文本和语义向量多路召回排序的架构,从而满足不同业务场景的搜寻成果需要。当然除了查问剖析,在第一阶段的搜寻疏导以及第四阶段的排序服务中也有很多NLP 算法的利用。 查问剖析NLP 算法次要在这里的几个子模块发挥作用: 分词,精准的分词能够进步检索效率,也会让召回后果更加精准,拼写纠错,对用户输出的query中呈现拼拼写错误能够主动去纠错,进步搜寻的体验。实体辨认,能够对query 中的每个词打上对应的实体标签,从而为后续的query改写和排序提供要害的特色。词权重模型,会对每个词打上高、中、低的档位,在查问后果时去做丢词的重查。同义词,扩大出雷同意思的词来扩充召回范畴。最初是通过残缺的查问剖析模块之后的一个整体的query改写,将用户输出的query转换成咱们搜索引擎能辨认到的查问串。当初凋谢搜寻不仅反对了阿里自研的搜索引擎,也对开源的ES引擎做了兼容,能够让用户更不便的应用到咱们的算法能力。 行业模型客户痛点1.通用模型畛域适配难 通用模型次要解决新闻资讯行业问题;在具体行业上成果会大打折扣;例如:通用畛域和电商畛域的模型的区别 2.公开行业模型少 云服务产商根本只提供通用模型公开行业数据集也次要笼罩通用畛域 解决难度构建一个行业搜寻NLP 模型的流程: 首先是标注数据集这一步对于行业常识的要求十分高,同时对于数据量的要求也须要达到万级别,标注这样的数据同时也须要数个月的工夫。接着是模型训练,这一步是须要有业余的算法人员,如果不是对算法不相熟的话,模型的迭代效率会很低最初是模型上线这一步须要工程人员去部署运维,如果波及到深度模型的一些上线,还会有很多效率优化的工作须要去做。在数据集标注阶段其实就曾经存在了很多的挑战。分词标注难点1.畛域常识要求高 例如: 药物的名称:利多卡因氯己定气雾剂 | 利多卡因 氯己定 气雾剂地址:南召县四棵树乡王营村 | 南召 县 四棵树 乡 王营 村2.穿插歧义判断难例如: 洗衣服粉 | 洗衣 服 粉实体辨认标注难点1.畛域常识要求高例如: 澳洲爱他美(母婴品牌)金装一段、科比(球鞋系列)4pytorch实现GAN(算法模型)解决办法凋谢搜寻基于阿里巴巴外部搜寻的数据积攒,联合自动化数据挖掘和自研的算法模型,对行业模型的构建链路做了一个革新。 同样是以分词和NER为例,上面模型图是分词的流程。咱们首先通过主动的新词发现算法去开掘指标畛域的畛域新词,失去这些新词之后,咱们会在指标畛域下来构建一个近程监督的训练数据。 基于这样的近程监督训练数据,咱们提出了一个反抗学习网络的构造模型,构造能够达到降噪的成果,从而去年失去一个咱们指标畛域的畛域模型。 上面的模型图是NER的流程,咱们采纳了联合图神经网络的graph NER的模型构造,它能够交融知识库和标注数据。 知识库是由方才分词的链路中新词发现模块主动挖掘出的新词,而后咱们做一个主动的实体词打标,从而去构建出畛域的知识库。对应的技术论文咱们都曾经发表在NLP 畛域顶会ACL上。 小结一下,通过下面提到的技术计划,以电商行业为例,看一下凋谢搜寻行业模型上达到的成果。 能够看到凋谢搜寻的电商行业增强版都显著比通用版成果会好很多。 这套计划不仅仅实用于电商行业,只有是有数据积攒的行业,都能够疾速构建出一套行业模型。 凋谢搜寻轻量化客户定制客户痛点 首先能够看到通用模型间接应用大略能达到一个60分的成果。 刚刚提到的行业模型,实用能力能够达到80分的成果。 但具体到每个客户又存在细分畛域的定制问题。 个别客户的指标可能是要达到90分。 比方上面的两个例子: 右边的这个“万斯汽水系列”,这其实是一个球鞋的一个具体的品牌和系列名称, 尽管凋谢搜寻电商模型曾经能够把品牌和一般词辨认正确,然而对于汽水这个具体的细分的系列并没有正确的辨认好。上面左边的这个例子是“汉本萃葆蔚饮品”。这里凋谢搜寻的电商模型齐全没有辨认出其中特有的品牌和它的子系列,客户在咱们提供的行业模型根底上如果去做自主的定制优化一样会遇到下面介绍行业模型解决方案时的那些问题,从而最终很难去冲破85分, 咱们的指标是缩小客户的标注老本,齐全无标注或者大量简略的标注,让客户的定制会更加易用,从而间接达到一个85分的成果。 解决思路整体的流程和行业模型构建链路相似,要把这些能力产品工具化让客户能够自主参加调优。 新建训练模型 下图是咱们做的一个工具demo,下面是创模型,创立局部客户能够抉择根底的行业模型,而后上传本人的畛域无标注的数据就能够主动的开始模型的训练。 2.成果评估上面是模型训练之后客户能够在咱们的零碎下面去做一个直观的成果评估,能够看到这里会列出根底的模型和以及主动训练之后的模型的成果的变动,客户也能够去做大量的人工标注来验证模型的成果。 这个链路目前曾经在阿里外部应用,近期还会在凋谢搜寻的产品上透出给到客户,原来咱们去做一个轻量化的客户定制达到上述成果可能须要一到两个月的工夫,还须要去标注1万句以上的这些标注数据。当初的话基于这套计划只须要一周的工夫,齐全无标注或者只须要去标注1000个此以内的标注数据就能够达到这样的成果。 ...

December 27, 2021 · 1 min · jiezi

关于搜索引擎:在-Google-中输入这四个单词竟然得到-16-个含有-SQL-注入漏洞的答案

搜索引擎是罕用的信息检索零碎,用户通常应用这类工具进行网络搜寻,以获取想要的信息或答案。然而,如果搜索引擎给出的答案有错呢? 近日,一名开发者出于好奇在 Google 中输出关键词 php mysql email register 并进行搜寻,谷歌返回了教程、操作指南、代码段等。看似所有都很失常,然而这些后果中居然有一大部分含有谬误的 DB statement,相似于: // Don't do this! mysqli_query("SELECT * FROM user WHERE id = '". $_POST["user'] ."'");该开发者对搜寻后果进行了剖析总结,将谬误的 SQL 语句分为以下四类: SQL 查问中的所有参数均被本义;仅在相对必要的状况下对输出数据进行本义;作者尝试进行局部本义,但存在破绽;没有任何本义逻辑。该开发者示意,在发现一个搜寻后果中存在至多一处有问题的语句后即转到下一个搜寻后果,然而在全副 30 个搜寻后果中发现了更多问题。 开发者整顿的 30 条搜寻后果 对此,这名开发者示意大部分 Google 搜寻后果品质不高,甚至某些搜寻后果是通过 SEO 优化才呈现在搜寻后果列表前列的。 这篇文章在 reddit 和 Hack News 上引发了大量探讨。reddit 网友 DevilSauron 示意: 这确实是编程或计算机科学畛域中的现实情况。互联网遍布蹩脚甚至可怕的教程、blogspam(博客垃圾)以及以广告为导向的 UI。可怜的是,搜寻后果的第一页往往充斥着这类信息。 对于我而言,通过互联网寻找真正的专家发明的高质量内容变得越来越难,防止掉入蹩脚教程陷阱的最平安形式是学习驰名的书籍和大学课程。 搜寻后果品质不高并不是什么新问题,但程序员应该分外留神,防止陷入低质量的教程或信息。当然,如果搜索引擎可能改善搜寻后果品质就更好了。 参考链接: https://waritschlager.de/sqli...https://www.reddit.com/r/prog...https://news.ycombinator.com/...

July 27, 2021 · 1 min · jiezi

关于elasticsearch:ElasticSearch-索引的存储机制推演

更好的文章格局,可参考:https://www.yuque.com/terencexie/geekartt/es-index-storeElasticSearch 作为开源的搜索引擎,须要依赖的一个重要数据结构就是 inverted index(倒排索引)。inverted index 通常宏大、且建设过程相当耗时,于是,如何存储 inverted index 就变成了一件极为要紧的事件。 显然,inverted index 不能简略地被放在 memory 中,它还必须做对应的长久化,让这些曾经建设的 inverted index 能够被复用。ElasticSearch 是基于 Lucene 来构建的,在 Lucene 的世界里,inverted index 就是寄存于 disk 的一块 immutable 的 segment。 于是,对于 ElasticSearch inverted index 的寄存问题,就转换为了「如何可能高效地存储 disk 文件 segment」。 既然是 disk file,那么最直观的优化形式便是应用 memory 来做批量沉积,通过累积 data batch 来节俭 disk I/O overhead。于是,ElasticSearch 引入了 in-memory buffer 来暂存每个 doc 对应的 inverted index。当这些 doc inverted index 累积到一定量后,就能够从 in-memory buffer 刷到 disk 了。 另一方面,在 Lucene 的世界里,所有「搜寻」行为,都依赖于 disk segment,没有 disk segment 就没有对应的「可搜寻」。 ...

April 15, 2021 · 2 min · jiezi

关于搜索引擎:ElasticSearchES使用Nested结构存储KV及聚合查询

自建博客地址:https://www.bytelife.net,欢送拜访! 本文为博客同步发表文章,为了更好的浏览体验,建议您移步至我的博客???? 本文作者: Jeffrey本文链接: https://www.bytelife.net/articles/51440.html版权申明: 本博客所有文章除特地申明外,均采纳 BY-NC-SA 许可协定。转载请注明出处!本文将探讨如何在ElasticSearch中应用nested构造进行数据的存储、查问和聚合,并联合K-V场景探讨ElasticSearch针对field数量限度的解决方案。 <!--more--> 为何要应用Nested构造存储KV(键值对)?ElasticSearch对于field的数量有限度,默认状况下field的数量如果超过1000个,写入时再创立新的fields就会报错: java.lang.IllegalArgumentException: Limit of total fields [1000] in index [(index_name)] has been exceeded at org.elasticsearch.index.mapper.MapperService.checkTotalFieldsLimit(MapperService.java:630)但有些场景的field数量并不是咱们能管制的,例如在监控零碎中的业务数据所携带的业务标签,其中可能蕴含了监控零碎不能预知的业务字段。对于这种情景,可能想到的解决方案两个: 调整ElasticSearch的配置,减少field的限度数量:这种计划仅仅实用于能够预测出field数量极限的状况,治标不治本,一旦field数量再次到达限度,又会面临同样的问题。就是应用Pair构造来存储假如第2种计划的数据结构为: { "labels": [{ "key": "ip", "value: "127.0.0.1" }]},{ "labels": [{ "key": "ip", "value: "127.0.0.2" }]}那么es查问就会存在一个问题,例如上面的查问: { "query":{ "bool":{ "must":[ { "match":{ "key":"ip" } }, { "match":{ "value":"127.0.0.1" } } ] } }}这个查问会把例子中的的数据全副查问进去,并不合乎咱们的预期。这是因为es在存储索引时,对于一般object类型的field实际上是打平来存储的,比方这样: { "labels.key":[ "ip" ], "labels.value":[ "127.0.0.1", "127.0.0.2" ]}能够看见,索引打平后,对象的关联关系失落了。对于这种状况,ElasticSearch提供的nested构造能够帮忙咱们解决相似的问题。Nested构造保留了子文档数据中的关联性,如果labels的数据格式被定义为nested,那么每一个nested object将会作为一个暗藏的独自文本建设索引。如下: { "labels.key":"ip", "labels.value":"127.0.0.1"},{ "labels.key":"ip", "labels.value":"127.0.0.2"}通过离开给每个nested object建索引,object外部的字段间的关系就能放弃。当执行查问时,只会匹配’match’同时呈现在雷同的nested object的后果。 ...

March 7, 2021 · 3 min · jiezi

关于搜索引擎:从零开发全网搜索引擎

一、先睹为快搜索引擎我的项目地址:海豚搜寻 www.haiteem.com 二、前言主观来说,一个规范的全网搜索引擎很简单,要解决的数据量亿级、百亿甚至更高,当然这些数据须要足够的硬件反对,集体只须要懂得技术流程逻辑,并实现较大数据(千万及以上)的搜寻即可。 首先介绍一下搜索引擎根本的组成部分: 三、爬虫网络爬虫(Web crawler),是一种依照肯定的规定,主动地抓取万维网信息的程序或者脚本,它们被宽泛用于互联网搜索引擎或其余相似网站,能够主动采集所有其可能拜访到的页面内容,以获取或更新这些网站的内容和检索形式。从性能上来讲,爬虫个别分为数据采集,解决,贮存三个局部。 爬虫策略 一般来讲,爬虫须要制订一个适合的策略,因为互联网的内容过于宏大。个别分为深度优先准则和广度优先准则。深度优先就是先爬取一个网站的首页,再持续爬取首页内的内页,以此类推.....再持续爬取第二个网站。这样的形式对网站的性能有很高的要求,若爬取的频率过高,对个别一般网站而言,会产生很大压力,甚至使得网站无奈失常运行。广度优先准则就是,先对一个网站汇合进行对立的首页爬取,再对产生的内链进行二次对立爬取,以此类推...这样的益处就是能够扩散流量压力,对网站比拟敌对。 在大量网页爬取的过程中,如果应用多线程。效率会很低,所以要尽可能应用多线程爬取,因为爬取数据过程中,网络的工夫开销是最大的。 robots.txt 在当初的网站根目录外面,曾经约定俗成有一个robots.txt,外面有网站管理员依据本人须要写入的网络爬虫的爬取规定,即哪些页面能够爬,哪些页面不容许爬。 网页类型 网页分为动态网页和动静网页,动态网页的数据一次性随页面加载实现,抓取起来比拟容易,但动态数据是网页加载实现后,通过js再一次申请服务器获取到数据,展现在页面上的。一般的抓取申请无奈获取到这些动态数据,所以对于这些动态数据,须要另外的抓取插件。 数据去重 当网页爬取到肯定数量后,网页数量快速增长,必然会产生很多反复链接和内容。此时必须要思考去重问题。对于搜索引擎的海量数据去重,一般而言会思考事实去重,这样会大大减少反复内容的抓取,比对立抓取后对立去重适宜得多。事实去重,须要构建一个链接库,用于每次链接判断,判断存在,则跳过,不存在则持续爬取。一次爬取工作完结后,再进行一次去重,接着入库。 内容类似度算法 1,余弦类似度 余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其余任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大抵指向雷同的方向。两个向量有雷同的指向时,余弦类似度的值为1;两个向量夹角为90°时,余弦类似度的值为0;两个向量指向齐全相同的方向时,余弦类似度的值为-1。这后果是与向量的长度无关的,仅仅与向量的指向方向相干。N维度向量 (A1,A2,A3,A4,A5...), (B1,B2,B3,B4,B5...) 2,simhash算法 步骤:分词、hash、加权、合并、降维 simhash能够计算文本间的类似度,咱们能够通过simhash算法计算出文档的simhash值,通过比拟各个文本的simhash值之间的汉明间隔的大小来判断其类似度,海明间隔越小,则类似度越大。个别大文本去重,大小<=3的即可判断为反复。 1.1、分词: 抉择适宜本人的分词库进行分词即可。如“欢送来到中国”->(分词后)“欢送”、“来到”、“中国” 1.2、hash: 对每个词计算其hash值,hash值为二进制数01组成的n-bit签名。设“欢送“(100101)、“来到”(101011)、“中国”(101011) 1.3、加权: 对于给定的文本,权值即为分词后对应词呈现的数量。给所有特征向量进行加权,即W = Hash * weight;这里咱们假如三个词权值别离为4、5、9;依据计算规定遇到1则hash值和权值正相乘,遇到0则hash值和权值负相乘例如给“欢送”的hash值“100101”加权得 到:W(欢送) = 1001014 = 4 -4 -4 4 -4 4,给“来到”的hash值“101011”加权失去:W(来到)=1010115 = 5 -5 5 -5 5 5,剩下的按此规定计算 1.4、合并 将上述各个特征向量的加权后果累加,变成只有一个序列串。拿前两个特征向量举例,例如“欢送”的“4 -4 -4 4 -4 4”和“来到”的“5 -5 5 -5 5 5”进行累加,失去“4+5 -4+-5 -4+5 4+-5 -4+5 4+5”,失去“9 -9 1 -1 1”。 ...

March 4, 2021 · 1 min · jiezi

关于搜索引擎:中间件ElasticSearch组件RestHighLevelClient用法详解

本文源码:GitHub·点这里 || GitEE·点这里 一、根底API简介1、RestHighLevelClientRestHighLevelClient的API作为ElasticSearch备受举荐的客户端组件,其封装零碎操作ES的办法,包含索引构造治理,数据增删改查治理,罕用查询方法,并且能够联合原生ES查问原生语法,性能非常弱小。 在应用RestHighLevelClient的语法时,通常波及下面几个方面,在把握根底用法之上能够依据业务特点进行一些自定义封装,这样能够更优雅的解决业务需要。 2、外围依赖应用RestHighLevelClient须要依赖rest-high-level-client包,和ES相干根底依赖。 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId></dependency><dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId></dependency><dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId></dependency>二、索引治理这里不做过多形容,留神一点:因为ES的数据结构特点,所以不须要索引更新办法,新的字段在更新数据时间接写入即可,不须要提前更新索引构造。 @Servicepublic class EsIndexOperation { @Resource private RestHighLevelClient client ; private final RequestOptions options = RequestOptions.DEFAULT; /** * 判断索引是否存在 */ public boolean checkIndex (String index) { try { return client.indices().exists(new GetIndexRequest(index), options); } catch (IOException e) { e.printStackTrace(); } return Boolean.FALSE ; } /** * 创立索引 */ public boolean createIndex (String indexName ,Map<String, Object> columnMap){ try { if(!checkIndex(indexName)){ CreateIndexRequest request = new CreateIndexRequest(indexName); if (columnMap != null && columnMap.size()>0) { Map<String, Object> source = new HashMap<>(); source.put("properties", columnMap); request.mapping(source); } this.client.indices().create(request, options); return Boolean.TRUE ; } } catch (IOException e) { e.printStackTrace(); } return Boolean.FALSE; } /** * 删除索引 */ public boolean deleteIndex(String indexName) { try { if(checkIndex(indexName)){ DeleteIndexRequest request = new DeleteIndexRequest(indexName); AcknowledgedResponse response = client.indices().delete(request, options); return response.isAcknowledged(); } } catch (Exception e) { e.printStackTrace(); } return Boolean.FALSE; }}三、数据管理这里在更新数据时,能够间接批改索引构造,在dataMap中放进新的字段即可。 ...

January 25, 2021 · 4 min · jiezi