亞馬遜云科技向量數據庫助力生成式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 的緩存命中率,有助于降低成本并提高檢索效率。

本文對于向量數據庫知識庫構建部分展開了初步的討論,基于實踐經驗對于知識庫構建中的一些文檔拆分方法,向量模型選擇,向量數據庫調優等一些主要步驟分享了一些心得,但相對來說比較抽象,如果你對此感興趣,可以期待下一篇。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166390.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166390.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166390.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于STM32設計的智能防盜單車鎖(馬蹄鎖)設計_升級版

1. 前言 隨著共享單車和自行車的普及,人們對自行車的安全和便利性提出了更高的要求。智能防盜馬蹄鎖是一種基于 STM32 單片機的智能鎖,可以通過手機藍牙實現開鎖和關鎖控制,同時具備 GPRS 防盜預警功能,提高了自行車的安全性和使用便利性。 通過智能防盜馬蹄鎖,用戶可以…

YOLOv5和改進后模型的result.csv文件對比

import pandas as pd import matplotlib.pyplot as plt# 讀取CSV文件 df1 pd.read_csv(rE:\xianyu\yolo.csv) df2 pd.read_csv(rE:\xianyu\final.csv)# 獲取列名 columns df1.columns# 循環繪制每一列的對比圖 for column in columns:plt.figure(figsize(8, 5))plt.plot(df1…

技術分享 | 在 IDE 插件開發中接入 JCEF 框架

項目背景 當前的開發環境存在多種不同語言的 IDE,如 JetBrains 全家桶、Eclipse、Android Studio 和 VS Code 等等。由于每個 IDE 各有其特定的語言和平臺要求,因此開發 IDE 插件時,需要投入大量資源才能盡可能覆蓋大部分工具。同時&#xf…

數據結構算法-貪心算法

引言 貪心:人只要有 “需求“ ,都會有有點“貪“, 這種“貪“是一種選擇,或者“”取舍“ RTS(即時戰略)游戲: 帝國時代里 首先確保擁有足夠的人口 足夠的糧食,足夠的戰略資源 足夠的…

干貨科普 | 不同類型的機器人及其在工作中的應用

原創 | 文 BFT機器人 制造商在其操作中使用各種類型的機器人,每種機器人都具有特定的能力和功能。我們將討論制造業中使用的一些最常見類型的機器人,以及哪種機器人可能最適合您的應用。 01 關節機器人 關節式機器人是一種工業機器人,具有一…

npm,yarn,pnpm 清理緩存

目錄 1,為什么要清理緩存1,緩存文件太多,影響系統運行2,不同源會有區別 2,命令2.1,npm2.2,yarn2.3,pnpm 1,為什么要清理緩存 1,緩存文件太多,影響…

關于easy-es的聚合問題

es實體類&#xff1a; public class ChemicalES {IndexId(type IdType.CUSTOMIZE)private Long id;HighLightIndexField(fieldType FieldType.TEXT, analyzer "ik_max_word")private String name;IndexField(fieldType FieldType.KEYWORD)private List<Stri…

三數之和 Java版

題目描述&#xff1a;給你一個包含 n 個整數的數組 nums&#xff0c;判斷 nums 中是否存在三個元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 請你找出所有和為 0 且不重復的三元組。 注意&#xff1a;答案中不可以包含重復的三元組。 輸入&#xff1a;nums …

“土味出海”,屢試不爽!短劇出海引來新一輪爆發?

土味和“錢途”并存的短劇不僅在國內迅猛爆發&#xff0c;今年下半年以來海外市場多部爆火短劇出現&#xff0c;“短劇出海”的話題熱度不斷攀升&#xff0c;絲毫不差2021年網文出海的盛況。 “霸總的愛&#xff0c;日入千萬刀”&#xff0c;是真實存在的&#xff01; 據統計…

tp8 使用rabbitMQ(1)簡單隊列

php8.0 使用 rabbitmq 要使用 3.6版本以上的&#xff0c; 并且還要開啟 php.ini中的 socket 擴展 php think make:command SimpleMQProduce //創建一個生產者命令行 php think make:command SimpleMQConsumer //創建一個消費者命令行 代碼中的消息持久化的說明 RabbitMQ 消息持…

#Js篇:var、let和 const

var 聲明的變量具有函數作用域或者全局作用域&#xff1b;存在變量提升&#xff0c;即在執行上下文中&#xff0c;變量會被提升到函數或全局作用域的頂部&#xff0c;但初始化的賦值不會提升&#xff1b;可以重復聲明同一個變量不會報錯&#xff1b;可以被重新賦值&#xff1b…

vue3 + Ant Design Vue國際化,組件默認顯示中文

官網 寫入App.vue <template><ConfigProvider :locale"zhCN"><router-view :key"$route.fullPath"></router-view></ConfigProvider> </template><script setup> import { ConfigProvider } from "ant-de…

某上市證券公司:管控文件交換行為 保護核心數據資產

客戶簡介 某上市證券公司成立于2001年&#xff0c;經營范圍包括&#xff1a;證券經紀、證券投資咨詢、證券承銷與保薦、證券自營等。經過多年發展&#xff0c;在北京、上海、深圳、重慶、杭州、廈門等國內主要中心城市及甘肅省內各地市設立了15家分公司和80余家證券營業部。20…

軟文推廣中如何提煉好產品賣點,媒介盒子分享

內容同質化的時代下&#xff0c;企業應該如何讓用戶留下印象&#xff0c;并且成功將產品賣出去&#xff0c;核心思維就在于提煉產品賣點&#xff0c;產品賣點是銷量提升的關鍵&#xff0c;相信企業在推廣產品時都會有點困惑&#xff0c;感覺自家產品和競品比起來只是logo、外觀…

壓縮與解壓縮

核心接口 Compressor package com.xxx.arch.mw.nbp.common.csp;import com.xxx.arch.mw.nbp.common.constant.CommonConstants; import com.xxx.arch.mw.nbp.common.exception.NbpException;import static com.xxx.arch.mw.nbp.common.csp.CompressorEnum.ZSTD;/*** */ publi…

【mybatis】使用<foreach>報錯parameter ‘id‘ not found

程序其他sql都執行正常&#xff0c;也寫了param注解&#xff0c;但是還是一直報parameter ‘id’ not found。最后發現是調用sql的實現類里ids的入參對象名稱不叫ids&#xff0c;叫idList 代碼如下&#xff1a; List<Map<String,String>> resultmapper.sql(date,…

【攻防世界-misc】pure_color

1.方法一&#xff1a;用畫圖工具打開圖片&#xff0c;將圖片拷貝至虛擬機win7桌面&#xff0c; 點“屬性”&#xff0c;顏色設置為“黑白”&#xff0c; 出現flag值。 2.方法二&#xff1a;使用Stegsilve打開&#xff0c;分析圖片 將圖片打開&#xff0c;按左右鍵查找&#xff…

c#數據庫:vs2022 加入mysql數據源

網上有VS2019連接MySQL數據庫的&#xff0c;那么VS2022&#xff0c;VS2023如果和連接到mysql數據庫呢&#xff0c;這里總結一下我的經歷&#xff1a; 1、首先下載ODBC驅動安裝包 當前下載地址&#xff1a;https://dev.mysql.com/downloads/connector/odbc/ 2、ODBC安裝 下載完…

openGauss學習筆記-131 openGauss 數據庫運維-啟停openGauss

文章目錄 openGauss學習筆記-131 openGauss 數據庫運維-啟停openGauss131.1 啟動openGauss131.2 停止openGauss131.3 示例131.3.1 啟動openGauss131.3.2 停止openGauss 131.4 錯誤排查 openGauss學習筆記-131 openGauss 數據庫運維-啟停openGauss 131.1 啟動openGauss 以操作系…

【ChatGLM3-6B】Docker下快速部署

【ChatGLM2-6B】小白入門及Docker下部署 前提下載安裝包網盤地址 開始安裝加載鏡像啟動鏡像進入容器啟動模型交互頁面訪問頁面地址 前提 安裝好了docker安裝好了NVIDIA顯卡16G 下載安裝包 網盤地址 ? 這里因為網盤上傳文件有大小限制&#xff0c;所以使用了分卷壓縮的方式…