前言:
在當今信息時代,數(shù)據(jù)庫扮演著關(guān)鍵的角色,用于存儲和管理各種類型的數(shù)據(jù)。向量數(shù)據(jù)庫是一種專門設計用于高維數(shù)據(jù)存儲和快速檢索的數(shù)據(jù)庫系統(tǒng)。在不斷創(chuàng)新和變革后,騰訊云不久前發(fā)布了AI原生(AI Native)向量數(shù)據(jù)庫。
向量數(shù)據(jù)庫發(fā)展背景和現(xiàn)狀
向量數(shù)據(jù)庫作為一種創(chuàng)新的解決方案應運而生。它專門為高維數(shù)據(jù)的存儲和檢索而設計,通過利用向量化存儲和高效的向量索引技術(shù),克服了傳統(tǒng)數(shù)據(jù)庫系統(tǒng)在處理高維數(shù)據(jù)時的局限性。向量數(shù)據(jù)庫能夠更高效地進行相似性搜索和近鄰搜索,提供更快的查詢響應時間。它采用特定的索引結(jié)構(gòu)和數(shù)據(jù)組織方式,有效地解決了高維數(shù)據(jù)存儲和檢索的效率問題,并且能夠更好地處理高維稀疏數(shù)據(jù)。
在大規(guī)模數(shù)據(jù)和復雜任務的背景下
, 傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)可能無法滿足高效處理和管理數(shù)據(jù)的需求。這時候,引入向量數(shù)據(jù)庫成為一種重要的解決方案。向量數(shù)據(jù)庫專門針對高維數(shù)據(jù)存儲和快速檢索進行優(yōu)化,具備處理復雜數(shù)據(jù)和大規(guī)模數(shù)據(jù)集的能力。
在此基礎上,騰訊云發(fā)布一款全托管的自研企業(yè)級分布式數(shù)據(jù)庫服務,專用于存儲、檢索、分析多維向量數(shù)據(jù)。該數(shù)據(jù)庫支持多種索引類型和相似度計算方法,單索引支持10億級向量規(guī)模,可支持百萬級 QPS 及毫秒級查詢延遲。騰訊云向量數(shù)據(jù)庫不僅能為大模型提供外部知識庫,提高大模型回答的準確性,還可廣泛應用于推薦系統(tǒng)、NLP 服務、計算機視覺、智能客服等 AI 領(lǐng)域。
AI加持下,向量數(shù)據(jù)庫是否應該重新定義?
將AI接入向量數(shù)據(jù)庫的好處是多方面的。
首先,向量數(shù)據(jù)庫提供高效的向量索引和相似性搜索技術(shù),能夠快速找到與給定向量相似的數(shù)據(jù)項。這對于AI中的相似度匹配、推薦系統(tǒng)、聚類分析等任務非常重要。
通過將AI模型訓練的向量嵌入數(shù)據(jù)存儲在向量數(shù)據(jù)庫中,可以實現(xiàn)快速的相似度搜索和近鄰查詢,提高查詢效率。向量數(shù)據(jù)庫支持多模態(tài)數(shù)據(jù)的存儲和檢索,能夠容納不同類型的數(shù)據(jù),如文本、圖像、音頻等。這對于多模態(tài)AI應用非常重要,例如視覺與語義檢索、多模態(tài)生成等。
向量數(shù)據(jù)庫還具備高度可擴展性和強大的并發(fā)查詢能力,能夠處理大規(guī)模數(shù)據(jù)和高并發(fā)訪問的需求。這為訓練大型AI模型和處理海量數(shù)據(jù)提供了基礎設施支持。
取其精華,優(yōu)勢思考
作為一種專門存儲和檢索向量數(shù)據(jù)的服務提供給用戶, 騰訊云數(shù)據(jù)庫在高性能、高可用、大規(guī)模、低成本、簡單易用、穩(wěn)定可靠等方面體現(xiàn)出顯著優(yōu)勢。
- 高性能 : 向量數(shù)據(jù)庫單索引支持10億級向量數(shù)據(jù)規(guī)模,可支持百萬級 QPS 及毫秒級查詢延遲。
- 高可用: 向量數(shù)據(jù)庫提供多副本高可用特性,其多可用區(qū)和三節(jié)點的架構(gòu)可用性可達99.99%,顯著提高系統(tǒng)的可靠性和容錯性,確保數(shù)據(jù)庫在面臨節(jié)點故障和負載變化等挑戰(zhàn)時仍能正常運行。
- 大規(guī)模:向量數(shù)據(jù)庫架構(gòu)支持水平擴展,單實例可支持百萬級 QPS,輕松滿足 AI 場景下的向量存儲與檢索需求。
- 低成本:只需在管理控制臺按照指引,簡單操作幾個步驟,即可快速創(chuàng)建向量數(shù)據(jù)庫實例,全流程平臺托管,無需進行任何安裝、部署和運維操作,有效減少機器成本、運維成本和人力成本開銷。
- 簡單易用:支持豐富的向量檢索能力,用戶通過 HTTP API 接口即可快速操作數(shù)據(jù)庫,開發(fā)效率高。同時控制臺提供了完善的數(shù)據(jù)管理和監(jiān)控能力,操作簡單便捷。
- 穩(wěn)定可靠: 向量數(shù)據(jù)庫源自騰訊集團自研的向量檢索引擎 OLAMA,近40個業(yè)務線上穩(wěn)定運行,日均處理的搜索請求高達千億次,服務連續(xù)性、穩(wěn)定性有保障。
如何快速申請體驗
騰訊云向量數(shù)據(jù)庫如何快速體驗?
騰訊云向量數(shù)據(jù)庫目前是公測階段。公測用戶免費領(lǐng)用實例,每個地域最多申請2個,免費試用時長3個月。若1個月內(nèi)未使用實例,平臺將自動回收。
序號 | 步驟描述 | 具體操作 |
---|---|---|
1 | 申請騰訊云賬號并認證 | 注冊騰訊云賬號 |
2 | 測試申請 | 提交產(chǎn)品內(nèi)測申請,填寫用戶信息。 |
3 | 了解向量數(shù)據(jù)庫所支持的規(guī)格與類型 | 預估數(shù)據(jù)規(guī)模,選擇合適的類型與規(guī)格。具體信息 |
4 | 確定向量數(shù)據(jù)庫所部署的地域 | 選擇當前支持的地域信息 |
5 | 規(guī)劃數(shù)據(jù)庫實例的私有網(wǎng)絡與安全組 | 創(chuàng)建私有網(wǎng)絡與 創(chuàng)建安全組,并同時設置安全組入站規(guī)則。 |
6 | 購買實例 | 新建數(shù)據(jù)庫實例。直接選擇上一步已準備的私有網(wǎng)絡與安全組。 |
7 | 申請與騰訊云向量數(shù)據(jù)庫在同一地域同一個 VPC 內(nèi)的 Linux 云服務器 CVM | 擁有自己的云服務器 |
8 | 連接并操作向量數(shù)據(jù)庫 | 連接并寫入數(shù)據(jù)庫 |
9 | 管理向量數(shù)據(jù)庫實例 | 通過控制臺直接管理實例,查看實例狀態(tài)或銷毀實例 |
10 | 智能運維 | 在控制臺查看監(jiān)控數(shù)據(jù)庫實例的各項指標。 |
性能測試實例
通過擁抱開源工具 ann-benchmark 的方式進行向量數(shù)據(jù)庫的性能測試,也方便客戶公平的與其他產(chǎn)品進行性能比拼驗證。 本文介紹了騰訊云向量數(shù)據(jù)庫基于ann-benchmark 工具適配后的使用方式及相關(guān)增強功能的使用介紹;另外,優(yōu)化后的測試工具也支持了多種靈活的性能 benchamrk 測試配置方案及支持 k-nn 召回率探索模式等,降低了性能測試準入門檻
前期準備
-
一臺云服務器
-
一個向量數(shù)據(jù)庫申請,
本次測試使用的是存儲型小規(guī)格實例(1核8GB)
-
開源測試工具ann-benchmark : 可以自行搜索下載
-
上傳測試工具及數(shù)據(jù)集到測試客戶端 云服務器上
注:ann-benchamrk 官方數(shù)據(jù)集測試工具可自動從外網(wǎng)官方站點下載。 -
安裝測試工具依賴
軟件依賴: python 版本大于 3.6.8, 使用建議的操作系統(tǒng)版本上的 python3 即可
a. 安裝操作系統(tǒng)依賴包
yum install python3-pillow-devel.x86_64
b. 解決測試工具并安裝 python 運行依賴
cd ann-benchmarks
pip3 install -r requirements.txt
實例測試
1. 測試 128 維數(shù)據(jù)在 HNSW 索引下的單核查詢性能
-
從數(shù)據(jù)庫中獲取連接地址和密鑰:
-
選擇測試數(shù)據(jù)集
從測試數(shù)據(jù)集說明中,找到 ann-benchamrk 已存在的名為 sift-128-euclidean 的數(shù)據(jù)集正
好是 128 維度,可使用該數(shù)據(jù)集做測試。 該數(shù)據(jù)集命令以 euclidean 結(jié)尾,表示使用
L2 相似算法 - 設置配置文件
a. 拷貝默認配置文件到自己的配置文件路徑
cp ann_benchmarks/algorithms/vector_db/config.yml mytest.yml
b. 按需設置自己的配置參數(shù)
vi mytest.yml
只需要配置自己的數(shù)據(jù)庫ip地址 HttpBase 和密鑰 ApiKey 即可
float:
any:
- base_args: [ '@metric' ] #不需要修改
constructor: VectorDb #不需要修改
disabled: false #不需要修改
docker_tag: ann-benchmarks-vector_db #不需要修改
module: ann_benchmarks.algorithms.vector_db #不需要修改
name: vector_db #不需要修改
run_groups:
vector_db:
arg_groups:
- [ 16 ] #M , 創(chuàng)建 Collection 時指定的 M 參數(shù),是一個
List , 會為每個值創(chuàng)建一個對應的 collection。 (top)
- DbName: db-test #測試使用的 DB 名字,collection 名字采用
自動生成方式。 命名方式為 "數(shù)據(jù)集名字_M 值"
HttpBase: 改為數(shù)據(jù)庫的ip地址 #Vector DB 連接的地
址,包含協(xié)議、IP、和端口信息
NeedAuth: true # 是否需要啟用認證,當前僅支持 Header 的
方式認證
User: root # 訪問實例使用的用戶名
ApiKey:改為自己的秘鑰 #從騰訊云控制臺上獲取的實例訪
問 API-KEY
DropDb: true # 工具是否在每次插入數(shù)據(jù)前,先刪了已經(jīng)存在的
DB
CreateDb: true # 工具是否需要創(chuàng)建新的數(shù)據(jù)庫
ReCreateCollection: false # 是否每次運行前都重建
collection
DropCollectionOnDone: false # 是否在運行結(jié)束刪除數(shù)據(jù),
主要解決多表并發(fā)時內(nèi)存不足場景,默認可使用 false
IndexType: FLAT # 創(chuàng)建 Collection 時的 index 類型, 當前
支持 FLAT, HNSW
MetricType: L2 # 創(chuàng)建 Collection 時的 Metric Type,同官
方 API 支持列表
ColReplicaNum: 2 # 創(chuàng)建 Collection 時指定多少個副本
ColShardNum: 10 # 創(chuàng)建 Collection 時,指定多少個 shard
EfConstruction: 500 # 創(chuàng)建 Collection 時,指定的鄰居數(shù)
ExitOnError: true # 工具是否在 API 返回非 200 的時候退出,
如不關(guān)注錯誤,可忽略。
- 命令行運行測試
通過以下命令運行測試,工具會自動從外網(wǎng)下載 ann-benchmark 官方數(shù)據(jù)集并寫入騰訊
云向量數(shù)據(jù)庫。
下為對齊官方的標準的單核性能測試運行方式:
python3 run.py --dataset sift-128-euclidean --local --force --parallelism 1 --algorithm vector_db --definitions=mytest.yml --
runs 1
- 查詢結(jié)果
python3 data_export.py --output=mytest.csv
- 向量數(shù)據(jù)庫監(jiān)控圖
2.探索指定召回率時,需要設置的查詢 ef 條件
-
找開探索模式,重新打開剛才的配置文件
修改配置文件中的 KNNSeekMode 為 true, 該模式測試工具會反復運行不同 ef 值的查
詢,直到獲得最匹配的召回率為止 -
配置探索參數(shù)
KNNSeekStartEF: 指定從哪個 ef 參考值開始查詢
KNNSeekStep: 指定探索模式中,每次 ef 值變化幾個單位; 如 1 則為:
KNNSeekStartEF+=1 或相減。(每次遞增或遞減的步長)
KNNSeekExpect: 期望找到的召回率,如 0.95 -
運行工具:
命令:
python3 data_export.py --output=mytest.csvpython3 run.py --dataset sift-128-euclidean --local --force --parallelism 1 --algorithm vector_db --definitions=mytest.yml --runs 1 --only_query
- 結(jié)果顯示如下(圖片中 KNNSeekExpect=0.95):
即在 ef=111 時,可獲得最接近 0.95 的召回率
3.Search 檢索性能測試
- 找到期望測試的 ef 或者設置 ef
通過‘(二)探索為獲得指定召回率,需要設置的查詢條件’ 找到期望召回率的 ef;或
者按需設置自己的 ef 值 - 壓測查詢配置
在配置文件中,如下使用 8 核壓測查詢 ef=111 的情況。 注意需要設置 KNNSeekMode
為 false
壓測命令,壓測時需要打開–batch 參數(shù),同時設置–runs 為較大值以便長時間運行,如果數(shù)據(jù)庫cpu資源沒有打滿,可使用多進程同時進行壓測
文章來源:http://www.zghlxwxcb.cn/news/detail-784325.html
python3 run.py --dataset sift-128-euclidean --local --force --parallelism 1 -algorithm vector_db --definitions=mytest.yml --runs 999 --only_query --batch
- 查看壓測結(jié)果
騰訊云向量數(shù)據(jù)庫控制臺提供了實例的 CPU,內(nèi)存、QPS,時延等關(guān)鍵性能指標監(jiān)
控。可從方便的控制臺獲取
總結(jié)
Tencent Cloud VectorDB的出現(xiàn),無疑為這些企業(yè)提供了一種新的選擇。從性能、可靠性和成本效益來看,Tencent Cloud VectorDB有明顯優(yōu)勢。一起快來試試吧??!文章來源地址http://www.zghlxwxcb.cn/news/detail-784325.html
到了這里,關(guān)于大模型時代下向量數(shù)據(jù)庫的創(chuàng)新與變革的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!