技术点梳理0618
ann建库,分布式建库,性能优化,precision recall参数优化
hnsw,图索引
1. build
a)确定层:类似跳表思路建立多层,对每一个插入的节点,random层号l,从图的起始点search_layer(ef=1)到l+1层(自顶向下)的最近邻近点
b)确定边:遍历l到0层(继续向底部搜索),search_layer(ef)找到最邻近ef个点,选择最邻近的M个点,建立双向边
c)裁剪-防止稠密:遍历M个点如果节点的邻节点超过Mmax仅保留最近的边
2. search(q)
a) 快速游走到比较近的节点:自顶向下搜索到最底层search_layer(ef=1)
b) 贪心ann:建立两个集合,候选集队列C、最近邻队列W(队列长度为ef),从C里拿出距离q最近的节点c,如果可以更新W(距离小于W的对尾)就遍历c的邻节点来更新W
分布式建库(全增量):流批一体化,全量、批次增量、实时增量
- dump系统,产出全量、增量
- 离线构建系统有两个任务
-
- processor负责读取全量/增量数据源并对每条doc处理,用加库的模型embedding成向量,归一化,写入swift(类似kafka)
- builder,以及在线服务会订阅swift,builder服务本地根据partition构建HNSW索引,产出全量和批次增量,分片检索
- 实时索引
-
- query dnn服务与searcher服务统一管控,item dnn加载到processor中量化
- hnsw支持插入,但不支持删除,改用软删除
性能优化
- 联合检索,带条件的向量检索
- query cache
- 在gpu中计算向量相似度
precision recall参数优化
- 建立ann与knn的准召率,比如直接在线抽样回放
- 最近邻超参tradeoff,参数越大准召率越高性能越差
- 距离公式,不能使用内积(不满足三角不等式,开根号),要用欧式距离,检索时转成内积
实时索引建库,结合item生命周期(新建实时生效,低pv item,失效item处理)的索引管理
分布式索引构建通常包括全量、批次增量、实时增量。数据join平台通过流批一体化生产全量和增量,其中增量通过swift消息分发到召回服务,所有的update操作会转成软delete后再add操作,会导致实时增量的索引增长非常迅速。
低pv item处理:item有2亿,分为了excellent、normal库,先seek excellent库,再用normal库补足,其中今天新发商品进excellent库
失效item处理:软delete,增量索引中bitmap标记doc是否存在,到多段索引合并时再真正delete
model serving优化,包括feature store设计(考虑特征版本号管理、实时特征读写更新、过期特征处理)、深度学习模型推理优化、模型运维管理
model serving优化
- op fusion、op placement
feature store:
- 用户特征中特征穿越问题
模型运维:
- 模型更新:模型增量训练后(ODL一样),model check auc(可能会训飞),发布到rtp灰度集群做打分平均判断,验证通过再部署到rtp online集群
- 模型发布:fg离在线一致性,模型打分离在线一致性
搜索引擎架构整体优化
失量检索引擎,设计细节
vector search,ann索引(ivf、hnsw)、index,几个特点:
- 分库和伸缩:离在线两部分,在线为两层分布式架构(qrs、searcher),离线对主键分片构建索引,分发到searcher集群,qrs将请求拆为多个,quota被均分后*1.2系数下发searcher召回过滤
- 多表join联合索引形成大宽表:在索引构建时主表添加辅表索引,seek主表不需查询辅表正排而是通过辅表地址获取正排值执行filter,既实现了大宽表又将拆表建索引。并且在seek阶段,多条索引链交并集seek(其中并集采用小根堆),边seek边filter,filter对象提前映射到对应正排索引,从多次寻址优化到1次寻址,这样的seek模式能保障有效召回量
- DAG图执行与模型推理统一:基于tensorflow框架,基于op schema自定义算子,组图实现流程编排。执行时DAG拓扑排序并行执行op,基于docid有序,可以分段并行seek&filter,减少rt。searcher load相关性dnn模型,本地完成推理,避免相关性服务IO
- ann检索:支持实时增量
- 分布式索引构建:在processor任务中加item塔,对doc量化,写入swift消息中间件,builder任务会读取,同时在线服务也会读取
- 在线实时增量构建:update操作会转成delete再add,但delete只是软删除,ivf/hnsw的add跟离线没差异,所以实时索引增长很快,需要用批次索引覆盖
- 在线查询:最近邻超参tradeoff,参数越大准召率越高性能越差,对比ann与knn的准召率调节超参
相关文章:

技术点梳理0618
ann建库,分布式建库,性能优化,precision recall参数优化 hnsw,图索引 1. build a)确定层:类似跳表思路建立多层,对每一个插入的节点,random层号l,从图的起始点search_…...

石英砂酸洗提纯方法和工艺
石英砂酸洗提纯方法和工艺是石英砂加工中至关重要的一个环节,其目的是通过化学手段去除石英砂中的杂质,提升其纯度。以下将详细介绍石英砂酸洗提纯的方法和工艺,以便更好地理解和应用这一技术。 一、概述 石英砂酸洗提纯主要是利用酸液对石英…...

linux安装dgl
1.DGL官网、选择与自己cuda、python版本匹配的dgl的whl文件CUDA11.8、python10并下载 2.用pip install运行 pip install /home/u2023170749/download/dgl-2.2.0cu118-cp310-cp310-manylinux1_x86_64.whl或者直接安装https://blog.csdn.net/weixin_44017989/article/details/13…...

【SAP-ABAP】-权限批导-批量给某个角色导入事务码权限
需求:SAP期初上线的时候,业务顾问经常会遇到批量创建角色和分配角色权限的情况 岗位需求:一般是业务顾问定义权限,BASIS进行后期运维,今天讲两个批导功能,方便期初上线 主要函数:PRGN_READ_ROLE…...
异常处理总结
自定义异常 系统中的异常可以分为我们能预知的异常和未知的系统异常,对于我们能预知的异常如空值判断,用户名错误,密码错误等异常我们需要返回客户端,对于系统内部异常如SQL语法错误,参数格式转换错误等需要统一包…...
大模型日报2024-06-18
大模型日报 2024-06-18 大模型资讯 大模型产品 Olvy 3.0:AI加速客户反馈分析 摘要: Olvy 3.0推出AI自动监听和智能标签功能,通过Google Meet集成轻松提取洞察,贴近客户,激发同理心。 PlantIdentify-免费植物识别应用 摘要: PlantI…...
NumPy 双曲函数与集合操作详解
NumPy 双曲函数 NumPy 提供了 sinh()、cosh() 和 tanh() 等 ufunc,它们接受弧度值并生成相应的双曲正弦、双曲余弦和双曲正切值。 示例: import numpy as npx np.sinh(np.pi/2)print(x)示例 找到数组 arr 中所有值的双曲余弦值: import…...
ABSD-系统架构师(十三)
1、CDN和反向代理的基本原理都是()。 A缓存 B负载均衡 C路由转发 DNAT转发 答案:A 2、(必考)在ABSD(基于架构的软件开发)方法中,顶层被分解为()ÿ…...

PLC通过Profibus协议转Modbus协议网关接LED大屏通讯
一、背景 Modbus协议和Profibus协议是两种常用于工业控制系统的通信协议,它们在自动化领域中起着重要的作用。Modbus是一种串行通信协议,被广泛应用于各种设备之间的通信,如传感器、执行器、PLC等。而Profibus则是一种现场总线通信协议&…...

第二十三篇——香农第二定律(二):到底要不要扁平化管理?
目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 对于企业的理解,扁平化的管理,如果从香农第二定律…...

stm32f103 HAL库 HC-SR04测距
目录 一、实现测距二、添加TIM3控制LED根据距离以不同频率闪烁三、观察时序Modebus协议12路超声波雷达设计方案1. 系统架构设计2. 硬件设计3. 软件设计4. 通信协议设计5. 用户接口6. 安全和冗余7. 测试和验证8. 电源和物理封装9. 文档和支持 一、实现测距 配置时钟 配置定时器…...

vue中通过自定义指令实现一个可拖拽,缩放的弹窗
效果 功能描述 按住头部可拖拽鼠标放到边框,可缩放多层重叠丰富的插槽,易于扩展 示例 指令代码 export const dragDialog {inserted: function (el, { value, minWidth 400, minHeight 200 }) {// 让弹窗居中let dialogHeight el.clientHeight ?…...

FreeRtos-09事件组的使用
1. 事件组的理论讲解 事件组:就是通过一个整数的bit位来代表一个事件,几个事件的or和and的结果是输出 #define configUSE_16_BIT_TICKS 0 //configUSE_16_BIT_TICKS用1表示16位,用0表示32位 1.1 事件组适用于哪些场景 某个事件若干个事件中的某个事件若干个事件中的所有事…...

多路h265监控录放开发-(1)建立head窗口并实现鼠标拖动整个窗口
头文件: //鼠标事件 用于拖动窗口//一下三个函数都是QWidget的可重载成员函数void mouseMoveEvent(QMouseEvent* ev) override;void mousePressEvent(QMouseEvent* ev) override;void mouseReleaseEvent(QMouseEvent* ev) override; 源文件: / /// 鼠标…...

ICMR 2024在普吉岛闭幕,学者与泰国舞者共舞,燃爆全场
惊艳!ICMR 2024在普吉岛闭幕,学者与泰国舞者共舞,燃爆全场! 会议之眼 快讯 ICMR(International Conference on Multimedia Retrieval)即国际多媒体检索会议,是一个专注于多媒体检索领域的顶级…...

大模型精调:实现高效迁移学习的艺术
在人工智能领域,大型预训练模型(以下简称“大模型”)已经取得了令人瞩目的成果。这些模型通过在海量数据上进行预训练,能够捕捉到丰富的特征信息,为各种下游任务提供强大的支持。然而,如何将这些大模型应用…...
epoll服务端和客户端示例代码
epoll 服务端demo #include <stdio.h> #include <sys/epoll.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> #include <fcntl.h> #include <unistd.h> #include <ne…...

最大乘积和-第13届蓝桥杯省赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第85讲。 最大乘积和&#…...

探索C嘎嘎的奇妙世界:第四关---引用与内联函数
1 引用: 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 #include<iostream> using namespace std;int main() {int a 0;// 引用:…...

DLS平台:惠誉全球经济展望——今年调增至2.6%,明年调减!
摘要 尽管全球货币政策逐渐转向宽松,惠誉国际评级(Fitch Ratings)在最新的《全球经济展望》中对2024年全球经济增长进行了上调。然而,由于美国经济增速放缓和其他因素的影响,2025年的全球经济增长预期则被下调。这篇文…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...

HTTPS证书一年多少钱?
HTTPS证书作为保障网站数据传输安全的重要工具,成为众多网站运营者的必备选择。然而,面对市场上种类繁多的HTTPS证书,其一年费用究竟是多少,又受哪些因素影响呢? 首先,HTTPS证书通常在PinTrust这样的专业平…...