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

亚马逊云科技向量数据库助力生成式AI成功落地实践探秘(二)

向量数据库选择哪种近似搜索算法,选择合适的集群规模以及集群设置调优对于知识库的读写性能也十分关键,主要需要考虑以下几个方面:

向量数据库算法选择

在 OpenSearch 里,提供了两种 k-NN 的算法:HNSW (Hierarchical Navigable Small World) 和 IVF  (Inverted File) 。

在选择 k-NN 搜索算法时,需要考虑多个因素。如果内存不是限制因素,建议优先考虑使用 HNSW 算法,因为 HNSW 算法可以同时保证 latency 和 recall。如果内存使用量需要控制,可以考虑使用 IVF 算法,它可以在保持类似 HNSW 的查询速度和质量的同时,减少内存使用量。但是,如果内存是较大的限制因素,可以考虑为 HNSW 或 IVF 算法添加 PQ 编码,以进一步减少内存使用量。需要注意的是,添加 PQ 编码可能会降低准确率。因此,在选择算法和优化方法时,需要综合考虑多个因素,以满足具体的应用需求。

向量数据库集群规模预估

选定了算法后,我们就可以根据公式,计算所需的内存进而推导出 k-NN 集群大小, 以 HNSW 算法为例:

占用内存 =  1.1 * (4*d + 8*m) * num_vectors * (number_of_replicas + 1)

其中 d:vector 的维度,比如 768;m:控制层每个节点的连接数;num_vectors:索引中的向量 doc 数

向量数据库批量注入优化

在向知识向量数据库中注入大量数据时,我们需要关注一些关键的性能优化,以下是一些主要的优化策略:

Disable refresh interval

在首次摄入大量数据时,为了避免生成较多的小型 segment,我们可以增大刷新的间隔,或者直接在摄入阶段关闭 refresh_interval(设置成 -1)。等到数据加载结束后,再重新启用 refresh_interval。

Disable Replicas

同样,在向量数据库首次加载大量数据时,我们可以暂时禁用 replica 以提升摄入速度。需要注意的是,这样做可能会带来向量数据库丢失数据的风险,因此,在向量数据库数据加载结束后,我们需要再次启用 replica。

增加 indexing 线程

处理 knn 的线程由 knn.algo_param.index_thread_qty 指定,默认为 1。如果你的设备有足够的 CPU 资源,可以尝试调高这个参数,会加快 k-NN 索引的构建速度。但是,这可能会增加 CPU 的压力,因此,建议先按节点 vcore 的一半进行配置,并观察 cpu 负载情况。

增加 knn 内存占比

knn.memory.circuit_breaker.limit 是一个关于内存使用的参数,默认值为 50%。如果需要,我们可以将其改成 70%。以这个默认值为例,如果一台机器有 100GB 的内存,由于程序寻址的限制,一般最多分配 JVM 的堆内存为 32GB,则 k-NN 插件会使用剩余的 68GB 中的一半,即 34GB 作为 k-NN 的索引缓存。如果内存使用超过这个值,k-NN 将会删除最近使用最少的向量。该参数在集群规模不变的情况下,提高 k-NN 的缓存命中率,有助于降低成本并提高检索效率。

本文对于向量数据库知识库构建部分展开了初步的讨论,基于实践经验对于知识库构建中的一些文档拆分方法,向量模型选择,向量数据库调优等一些主要步骤分享了一些心得,但相对来说比较抽象,如果你对此感兴趣,可以期待下一篇。

相关文章:

亚马逊云科技向量数据库助力生成式AI成功落地实践探秘(二)

向量数据库选择哪种近似搜索算法,选择合适的集群规模以及集群设置调优对于知识库的读写性能也十分关键,主要需要考虑以下几个方面: 向量数据库算法选择 在 OpenSearch 里,提供了两种 k-NN 的算法:HNSW (Hierarchical…...

怎么当代课老师教学生

老师朋友们,有没有帮忙当过代课老师呢?或者,没当过的老师是不是对这种职业充满了好奇?让我来分享一下,当代课老师的日常是什么样的吧! 备课 说起备课,那可是个大工程!不过&#xff…...

『 MySQL数据库 』表的增删查改(CRUD)之表的数据插入及基本查询

文章目录 📂 Create(创建/新增)📌全列插入与指定列插入📌📌单行数据插入与多行数据插入📌📌插入数据否则更新📌📌数据的替换📌 📂 Retrieve(查询)&#x1f4c…...

Vue中mvvm的作用

目录 模型表示应用程序的数据。在Vue.js中,它们是JavaScript对象。视图是用户界面。在Vue.js中,使用模板语法编写HTML的表示层。ViewModel是视图的抽象表示,负责处理用户输入的数据,并处理视图的数据绑定。ViewModel使用模型中的…...

基于springboot实现高校食堂移动预约点餐系统【项目源码】

基于springboot实现高校食堂移动预约点餐系统演示 Java语言简介 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备…...

用element ui上传带参数的文件,并用flask接收

需求 网页需要实现上传一个csv文件&#xff0c;并携带两个表单的参数给后端 方法 上传组件 <el-uploadclass"upload-demo"dragaction"/upload" <!--要上传到的路由地址&#xff0c;跟flask路由函数对应-->accept".csv" <!--只接…...

[Android]使用Git将项目提交到GitHub

如果你的Mac还没有安装Git&#xff0c;你可以通过Homebrew来安装它&#xff1a; brew install git 方式一&#xff1a;终端管理 1.创建本地Git仓库 在项目的根目录下&#xff0c;打开终端&#xff08;Terminal&#xff09;并执行以下命令来初始化一个新的Git仓库&#xff1…...

python cv2.imread()和Image.open()的区别和联系

文章目录 1. cv2.imread()1.1 cv2.imread参数说明1.2 注意事项 2. Image.open()3. cv2.imread()与Image.open()相互转化3.1 cv2.imread()转成Image.open()&#xff1a;Image.fromarray()3.2 Image.open()转成cv2.imread()&#xff1a;np.array() 1. cv2.imread() cv2.imread()…...

hdlbits系列verilog解答(exams/m2014_q4i)-45

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 实现以下电路&#xff1a; 二、verilog源码 module top_module (output out);assign out 1b0;endmodule三、仿真结果 转载请注明出处&#xff01;...

flink源码分析之功能组件(二)-kubeclient

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。其中kubeclient上一个系列介绍过,为了系列完整性,这里“copy”一下。 kubeclient组件…...

无需API开发,有赞小程序集成广告推广系统,提升品牌曝光

无需API开发&#xff0c;实现有赞小程序与其他系统的连接 有赞小程序作为一个多功能的电子商务解决方案&#xff0c;为商家提供了无需复杂API开发就可以实现系统连接和集成的便捷途径。通过有赞小程序&#xff0c;商家可以轻松实现与各种系统的数据同步和应用互联&#xff0c;…...

CMD - ping

文章目录 前言参数 前言 ping 命令主要测试到达指定 IP 或主机的连通性. 参数 -t: ping 指定的计算机直到中断 -a: 将地址解析为主机名 -n count: 要发送的回显请求数...

数据结构与算法编程题23

设计二叉树的双序遍历算法&#xff08;双序遍历是指对于二叉树的每一个结点来说&#xff0c;先访问这个结点&#xff0c;再按双序遍历它的左子树&#xff0c;然后再一次访问这个结点&#xff0c;接下来按双序遍历它的右子树&#xff09; #define _CRT_SECURE_NO_WARNINGS#inclu…...

小程序中的大道理之二--抽象与封装

继续扒 接着 上一篇 的叙述, 健壮性也有了, 现在是时候处理点实际的东西了, 但我们依然不会一步到底, 让我们来看看. 一而再地抽象(Abstraction Again) 让我们继续无视那些空格以及星号等细节, 我们看到什么呢? 我们只看到一整行的内容, 当传入 3 时就有 3 行, 传入 4 时就…...

基于卷积神经网络CNN开发构建HAR人类行为识别Human Activity Recognition【完整代码实践】

行为识别相关的开发实践在我们之前的博文中也有过相关的实践了,感兴趣的话可以自行移步阅读即可:《python实现基于TNDADATASET的人体行为识别》 《UCI行为识别——Activity recognition with healthy older people using a batteryless wearable sensor Data Set》《人体行为…...

excel自己记录

1、清除换行符号 2、添加特殊符号&并清除换行符号 7日&15日&30日&60日 3、判断单元格最后一个字符是不是数字&#xff0c;不是就删掉 IF(ISNUMBER(--RIGHT(B2,1)),B2,SUBSTITUTE(B2,RIGHT(B2,1),"")) ISNUMBER(--RIGHT(B2,1))判断最右边的一个数是否…...

vcsa6.7 5480无法登录

停电维护硬件后&#xff0c;发现vcsa异常&#xff0c;https://ip:5480无法登录&#xff0c;https://ip/ui正常&#xff0c;ssh登录页正常 kb资料 通过端口 5480 登录到 VMware vCenter Server Appliance Web 控制台失败 (2120477) 操作过程 Connecting to 192.16.20.31:22..…...

CSS 属性列表

CSS属性列表 序号 属性类别 属性 描述 1 动画属性 keyframes 定义一个动画,keyframes定义的动画名称用来被animation-name所使用。 2 animation 复合属性。检索或设置对象所应用的动画特效。 3 animation-name 检索或设置对象所应用的动画名称 ,必须与规则keyfra…...

浅谈能源智能管理系统在大学高校中的应用

安科瑞 华楠 摘要&#xff1a;结合深圳南方科技大学能效系统工程设计实例&#xff0c;针对校园中电耗、热量消耗、冷量消耗及水资源消耗数据的采集、传输、分析管理系统&#xff0c;分析了系统中的水、电、气在高校中的能耗分布&#xff0c;并阐述了节能应用方案&#xff0c;可…...

脚本自动化定制开发:实现高效工作的魔法钥匙

在当今这个快节奏的工作环境中&#xff0c;自动化已成为提高工作效率的黄金标准。如果你是一名Windows用户&#xff0c;那么通过Windows脚本自动化&#xff0c;你可以将你的工作流程化繁为简&#xff0c;实现高效工作。而在众多Windows脚本自动化工具中&#xff0c;Python以其简…...

ITK-SNAP医学图像分割架构深度解析与性能优化实战指南

ITK-SNAP医学图像分割架构深度解析与性能优化实战指南 【免费下载链接】itksnap ITK-SNAP medical image segmentation tool 项目地址: https://gitcode.com/gh_mirrors/it/itksnap ITK-SNAP作为一款专业的医学图像分割工具&#xff0c;其核心价值不仅在于直观的用户界面…...

Qianfan-OCR应用场景:跨境电商商品说明书多语言文本提取

Qianfan-OCR应用场景&#xff1a;跨境电商商品说明书多语言文本提取 1. 跨境电商文档处理的痛点与机遇 跨境电商行业每天需要处理海量的商品说明书&#xff0c;这些文档通常具有以下特点&#xff1a; 多语言混合&#xff08;中文英文目标国语言&#xff09;复杂排版&#xf…...

告别脚本恐惧!用Tosca Commander实现Web/API自动化测试的保姆级入门指南

告别脚本恐惧&#xff01;用Tosca Commander实现Web/API自动化测试的保姆级入门指南 第一次接触自动化测试时&#xff0c;看到满屏的代码和命令行&#xff0c;很多人会本能地产生抗拒。但测试工作又确实需要自动化来提升效率——这就是Tosca Commander的价值所在。作为一款领先…...

逆向分析必备:用Frida+ADB真机调试的5个高阶技巧(含ARM/X86架构选择指南)

逆向工程实战&#xff1a;Frida与ADB真机调试的架构适配与效率优化 在移动安全研究和逆向分析领域&#xff0c;真机调试往往比模拟器环境更具挑战性&#xff0c;也更能反映真实场景下的应用行为。当Java层与Native代码交互频繁时&#xff0c;不同CPU架构带来的兼容性问题常常让…...

RAG检索增强生成:让大模型拥有最新知识

什么是RAG RAG&#xff08;Retrieval-Augmented Generation&#xff09; 即检索增强生成技术&#xff0c;是一种将信息检索系统与大规模语言模型相结合的技术框架。其核心思想是在生成回答之前&#xff0c;先从外部知识库中检索相关信息&#xff0c;然后将这些信息作为上下文提…...

DolphinScheduler 3.x 集成 DataX 保姆级教程:从环境变量到HDFS权限,一次搞定所有坑

DolphinScheduler 3.x 与 DataX 深度集成实战&#xff1a;权限控制与性能调优全解析 在数据工程领域&#xff0c;ETL 流程的稳定性和效率直接影响着数据仓库的质量和时效性。DolphinScheduler 作为一款开源的分布式工作流调度系统&#xff0c;与阿里巴巴开源的 DataX 数据同步工…...

用增量学习对抗‘遗忘’:在TE过程数据集上复现论文《Fault diagnosis of TE process based on incremental learning》

增量学习在TE过程故障诊断中的实战应用&#xff1a;从数据预处理到模型对抗遗忘 TE过程&#xff08;Tennessee Eastman process&#xff09;作为化工领域的经典仿真数据集&#xff0c;长期以来为故障诊断算法提供了标准测试平台。当我们将目光投向工业场景中的真实需求时&#…...

AI结对编程实测:减少47%代码评审时间的“黑暗技巧”——测试工程师的效能革命

在软件开发的效率竞赛中&#xff0c;代码评审环节往往扮演着“质量守门员”与“流程减速带”的双重角色。对于软件测试从业者而言&#xff0c;评审不仅是发现缺陷的最后一道防线&#xff0c;更是理解系统实现、设计验证策略的关键窗口。然而&#xff0c;传统评审模式高度依赖人…...

Python无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案

前言 今天在给一个同学远程部署项目的时候&#xff0c;在使用 pip 下载项目所需要的模块时&#xff0c;出现了如下问题&#xff1a; pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径…...

传感器非线性飘移解析

传感器非线性飘移是指传感器输出信号与输入物理量之间的映射关系随时间或环境条件发生非线性的、缓慢的、不可预测的变化。这种飘移会直接导致测量精度下降&#xff0c;是精密测量系统&#xff08;如无人机、机器人、高精度仪器&#xff09;中常见且棘手的问题。 传感器非线性…...