大模型時代,新一代向量數(shù)據(jù)庫的探索應(yīng)用-DingoDB
一、DingoDB 的設(shè)計理念
2015 年前,數(shù)據(jù)架構(gòu)以數(shù)據(jù)倉庫(Data Warehouse)為主,專注于結(jié)構(gòu)化數(shù)據(jù)的統(tǒng)一存儲。到 2016-2022 年期間,流行數(shù)據(jù)湖(Data Lake)的概念,擴(kuò)展了數(shù)據(jù)維度并管理了更多類型的數(shù)據(jù)。最近一年,AIGC 飛速發(fā)展,數(shù)據(jù)生態(tài)隨之演進(jìn)到了新的數(shù)據(jù)棧時代,隨著數(shù)據(jù)分析復(fù)雜度的不斷提升,由最初的查詢處理需求,擴(kuò)展到機(jī)器學(xué)習(xí)和深度學(xué)習(xí),又發(fā)展到了現(xiàn)在的自助分析、生成式內(nèi)容創(chuàng)作(AIGC)、自動化機(jī)器學(xué)習(xí)平臺(AutoML、GPT)等場景。這些都離不開對現(xiàn)實世界中的結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的高效管理。需求的增長催生了新的數(shù)據(jù)生態(tài)。
在新的數(shù)據(jù)棧時代,原有數(shù)據(jù)處理流程基本不變,包括數(shù)據(jù)的來源、獲取、轉(zhuǎn)化、存儲和計算以及利用數(shù)據(jù)進(jìn)行分析預(yù)測和構(gòu)建應(yīng)用。未來趨勢是走向"向量海",所有非結(jié)構(gòu)化數(shù)據(jù)最終會被轉(zhuǎn)化為向量進(jìn)行存儲,基于數(shù)據(jù)結(jié)構(gòu)構(gòu)建實時分析處理流程,在此基礎(chǔ)上再構(gòu)建出各種數(shù)據(jù)應(yīng)用。
九章云極 DataCanvas 在數(shù)據(jù)生態(tài)方面積累了豐富的經(jīng)驗,提出一站式解決方案,涵蓋了數(shù)據(jù)攝取到數(shù)據(jù)應(yīng)用的全過程,并推出了相應(yīng)的成熟軟件和產(chǎn)品來滿足客戶需求。DingoDB 是其中的多模向量數(shù)據(jù)庫,主要目標(biāo)是處理數(shù)據(jù)存儲和計算,以及部分分析和預(yù)測的功能。
除了 DingoDB,還推出更多相關(guān)產(chǎn)品,如 TableAgent 數(shù)據(jù)分析智能體以及自有的人工智能平臺和大模型。這一系列工具的目的是為了能夠串聯(lián)起數(shù)據(jù)處理的全流程,為用戶提供一站式的解決方案,有效滿足大規(guī)模數(shù)據(jù)的存儲、分析和應(yīng)用需求。
在"Vector Ocean"時代,數(shù)據(jù)生態(tài)融合了多樣化的數(shù)據(jù)類型,如圖像、文檔、音頻和視頻。這些多模態(tài)、非結(jié)構(gòu)化數(shù)據(jù)通過向量化后,成為不同維度的向量集合,進(jìn)而存儲于大規(guī)模、高效的向量數(shù)據(jù)庫中。這個數(shù)據(jù)庫內(nèi)部采用多種不同的數(shù)據(jù)組織形式,包括傳統(tǒng)的數(shù)據(jù)庫表結(jié)構(gòu)、鍵值對(KV)存儲,甚至可能包括文檔型數(shù)據(jù)庫(Document DB)。存儲這些數(shù)據(jù)之后,可以支持多種應(yīng)用場景,如商業(yè)智能(BI)、數(shù)據(jù)流分析、人工智能(AI)、數(shù)據(jù)科學(xué)等。
DingoDB 致力于創(chuàng)建一個多模態(tài)向量數(shù)據(jù)庫,能夠整合結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)的存儲、分析與查詢。滿足用戶對向量查詢的需求,也能夠保護(hù)和利用其現(xiàn)有數(shù)據(jù),并強(qiáng)化對向量查詢的支持。
二、DingoDB 的產(chǎn)品優(yōu)勢和架構(gòu)介紹
1. DingoDB 概覽
DingoDB 支持結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的存儲,提供與 MySQL 兼容的協(xié)議和優(yōu)化器。數(shù)據(jù)庫底層支持鍵值對(KV)和向量的存儲,并采用分布式存儲架構(gòu),實現(xiàn)多模態(tài)數(shù)據(jù)的聯(lián)合存儲和分析。用戶可以通過 SQL 指令和 API 訪問數(shù)據(jù),并支持服務(wù)器端運(yùn)算。整體上是一個完整的多模態(tài)向量數(shù)據(jù)庫。
DingoDB 致力于解決大規(guī)模、多模態(tài)數(shù)據(jù)存儲和分析的問題,提供海量存儲能力和聯(lián)合分析服務(wù)。面臨的挑戰(zhàn)包括多模態(tài)數(shù)據(jù)的統(tǒng)一分析和融合存儲的難度、數(shù)據(jù)的高可用性以及服務(wù)計算與存儲的一體化問題。DingoDB 旨在簡化系統(tǒng)之間的復(fù)雜度,提供更有效的存儲方案,為用戶保障數(shù)據(jù)的可靠性和完整性,同時不斷研究和解決業(yè)界面臨的問題。
作為中國信通院首批認(rèn)證通過的向量數(shù)據(jù)庫,DingoDB 以卓越的產(chǎn)品能力完成測試,通過包括 27 個必選項在內(nèi)的共計 39 個測試項目,通過數(shù)量遠(yuǎn)超同期測評廠商,成為當(dāng)前通過項目最多的向量數(shù)據(jù)庫。
當(dāng)前,DingoDB 已成為 Langchain 項目官方支持的后端存儲。
2. DingoDB 特點
DingoDB 的產(chǎn)品特點主要集中在四個方面:存儲、SQL 處理、API 支持和數(shù)據(jù)分析。
- 在存儲方面,DingoDB 基于工業(yè)級的 Raft 協(xié)議實現(xiàn)多副本策略,確保了數(shù)據(jù)的強(qiáng)一致性和安全性。這種設(shè)計也使得數(shù)據(jù)庫容易擴(kuò)容,降低了用戶的成本并提高了性能與可靠性。
- 在 SQL 處理方面,DingoDB 提供了統(tǒng)一的 SQL 處理能力,支持 MySQL 協(xié)議和索引管理。數(shù)據(jù)庫支持監(jiān)控化和分解化的融合分析,允許對數(shù)據(jù)進(jìn)行更復(fù)雜的查詢操作。
- API 層面,DingoDB 支持多種高性能 API 接口,滿足如決策制定等高頻業(yè)務(wù)需求,便于用戶直接進(jìn)行數(shù)據(jù)分析。
- 在數(shù)據(jù)分析能力上,DingoDB 通過 Python SDK 支持多模態(tài)數(shù)據(jù)的混合分析,包括向量和標(biāo)量索引的混合檢索。數(shù)據(jù)庫同時兼容多種處理器并支持算子下推,這是一項增強(qiáng)查詢效率和性能的強(qiáng)大功能。
3. DingoDB 架構(gòu)
DingoDB 的邏輯架構(gòu)被分為多個層次。最上層是各種應(yīng)用場景,涵蓋了傳統(tǒng)關(guān)系數(shù)據(jù)庫分析、語義搜索、結(jié)構(gòu)化和分解化數(shù)據(jù)分析等方面,以及實時數(shù)據(jù)決策支持、提示詞管理、大模型記憶體等現(xiàn)代火熱場景。
在接口層,DingoDB 提供了與 MySQL 協(xié)議兼容的 SQL 支持、高性能的 Serving API 以及原生向量 API 的支持。在 API 下面一層提供了高效的元數(shù)據(jù)存儲和資源管理能力,緊接著是查詢優(yōu)化器和事務(wù)管理器,負(fù)責(zé)查詢和寫入調(diào)度的實現(xiàn)。
在執(zhí)行層,DingoDB 具有一個多模態(tài)執(zhí)行引擎。
在存儲層,DingoDB 支持關(guān)系型表、向量表,并能夠?qū)悠渌愋偷拇鎯θ鐚ο蟠鎯蚍植际轿募到y(tǒng)。
上圖清晰展示了 DingoDB 從應(yīng)用層到底層存儲的架構(gòu)設(shè)計。
應(yīng)用層:DingoDB 支持多種應(yīng)用場景。
協(xié)議層:包括三個接入入口,一是支持 MySQL 客戶端和 JDBC Driver 的 SQL 入口;二是提供高性能的 Java SDK,可以直接連接到存儲層,滿足實時訪問需求;三是適應(yīng) Python 環(huán)境的大模型需求,通過 Python 或 C++ SDK 實現(xiàn)快速接入。
計算層:主要由兩部分構(gòu)成——Executor 是處理分布式事務(wù)和查詢優(yōu)化的分布式支撐引擎;Coordinator 作為協(xié)調(diào)器,負(fù)責(zé)元數(shù)據(jù)管理和資源管理。
存儲層:底層是核心的存儲架構(gòu),包括原始數(shù)據(jù)存儲以及向量索引和標(biāo)量索引的存儲。此外,DingoDB 還支持向量的動態(tài)構(gòu)建和計算功能。
4. DingoDB 產(chǎn)品優(yōu)勢
DingoDB 的產(chǎn)品優(yōu)勢主要體現(xiàn)在五個方面:
- 全面的訪問接口:提供 SQL、SDK、API 等多種訪問模式,支持表格和向量作為一等公民的數(shù)據(jù)模型,允許用戶靈活選擇和使用。
- 內(nèi)建的數(shù)據(jù)高可用:所有功能和高可用性都是內(nèi)建的,不需要部署外部組件,極大降低了部署和運(yùn)維成本。
- 全自動彈性數(shù)據(jù)分片:支持動態(tài)配置數(shù)據(jù)分片大小,能夠根據(jù)用戶設(shè)置的閾值自動進(jìn)行數(shù)據(jù)分片的分類和合并,無需用戶擔(dān)心分布式數(shù)據(jù)管理。
- 標(biāo)量和向量的聯(lián)合查詢:支持傳統(tǒng)索引類型以及主流向量索引類型,無縫銜接標(biāo)量和向量混合檢索,使得檢索能力在業(yè)界領(lǐng)先。
- 內(nèi)建實時索引構(gòu)建優(yōu)化:根據(jù)數(shù)據(jù)規(guī)模變化和計算資源配置,自動重新構(gòu)建索引以優(yōu)化數(shù)據(jù)結(jié)構(gòu),提高訪問效率,用戶無感知地體驗到索引更新的效果。
三、應(yīng)用場景介紹
DingoDB 被應(yīng)用于多種場景,包括企業(yè)知識庫建設(shè)、作為大型模型的記憶體、實時決策的指標(biāo)分析,并且支持 VectorOcean 數(shù)據(jù)支撐平臺等應(yīng)用。
在賦能大模型應(yīng)用方面,DingoDB 的應(yīng)用被分為四個不同的層次,涵蓋了從數(shù)據(jù)到 Embedding Model的整個流程。包括使用業(yè)界公開或自研的大型模型和 Embedding 模型來實現(xiàn)數(shù)據(jù)的向量化。在向量存儲層面用 DingoDB 支撐各種場景,然后再去對接大語言模型去實現(xiàn)各種應(yīng)用。
知識管家是大模型時代,基于向量數(shù)據(jù)庫和大模型的一個新的應(yīng)用方向。DingoDB 為知識管家提供了強(qiáng)有力的支撐。知識管家主要負(fù)責(zé)企業(yè)的知識管理和創(chuàng)造,應(yīng)用場景包括智能問答、內(nèi)容創(chuàng)作助手、智能化工作流程、企業(yè)決策輔助等等。
關(guān)于DingoDB的進(jìn)一步信息和開源代碼可以通過 GitHub 獲取。
http://github. com/dingodb/dingo。
https://github. com/dingodb/dingo-store。
https://www. dingodb. com/。