MyScale是一款完全托管于亞馬遜云科技,支持SQL的高效向量數據庫。MyScale的優勢在于,它在提供與專用向量數據庫相匹敵甚至優于的性能的同時,還支持完整的SQL語法。以下內容,將闡述MyScale是如何借助亞馬遜云科技的基礎設施,構建出一個穩定且高效的云數據庫。

什么是向量數據庫

或許你尚未察覺,然而向量嵌入(vector embedding)實際上無處不在。它們構成了眾多機器學習和深度學習算法的根基,被廣泛運用于從搜索引擎到智能助手等各式各樣的應用。機器學習與深度學習通常會把文本、圖像、音頻、視頻等非結構化數據轉化為向量嵌入的形式進行儲存,并借由向量相似性搜索技術進行語義相關性搜索?;谙蛄康南嗨?span class="keyword">性搜索現如今已被大量應用于各類人工智能驅動的應用場景,包括圖像檢索、視頻分析、自然語言理解、推薦系統、定向廣告、個性化搜索、智能客服以及欺詐檢測等。在這樣的背景下,對向量數據的管理顯得尤為重要,我們需要能夠快速地儲存、索引和搜索這些向量化的數據。

現存的向量數據庫大體上可以分為兩大類別。一類是專為向量設計的專有向量數據庫產品,例如Pinecone、Weaviate、Qdrant、Chroma、Milvus等。另一類則是在通用的SQL或NoSQL數據庫產品上進行擴展,其中最為人熟知的SQL數據庫之一Postgres通過插件pgvector支持了向量索引和搜索;而包括ClickHouse、Redis、Elasticsearch和Cassandra在內的許多開源數據庫近期都增加了對向量索引的原生支持。

人們通常認為,專有的向量數據庫專門為向量檢索設計,能夠提供較佳的搜索性能。而支持向量搜索的通用數據庫產品則依賴于原有的通用數據庫,能夠提供更為完善的數據管理和結構化數據查詢能力,向量檢索性能則有所損失。MyScale基于開源的在線分析處理(OLAP)數據庫ClickHouse開發,集成了自主研發的多尺度樹圖(英文:multi-scale tree graph,縮寫MSTG)向量索引算法。它不僅繼承了ClickHouse卓越的結構化數據分析和查詢能力,同時也提供了數倍于專有向量數據庫的性價比,從而將兩者的優勢集于一身,給企業提供了統一的結構化和非結構化數據管理方案。

整體架構

MyScale是一款完全依托于亞馬遜云科技云臺的數據庫服務,其架構深度結合了亞馬遜云科技的多元化產品線,包含了AWS EC2云端虛擬服務器、AWS EKS集群管理、AWS S3對象存儲、AWS NLB負載均衡等。有賴于亞馬遜云科技提供的強大底層設施,可迅速地構建出MyScale的云端服務產品。

如下圖所示,MyScale云服務的架構設計包括全局控制平面(global control plane)、區域控制平面(regional control plane)以及區域數據平面(regional data plane)三個層次,每個層次對應一個Kubernetes集群。全局控制平面中部署了云服務的業務系統,負責組織、用戶的管理以及整體的使用量統計等。每個區域對應一個云服務供應商的一個可用區,如AWS US-EAST-1。每個區域獨立部署一個控制平面和多個數據平面??刂?span class="keyword">平面提供該區域內的集群管理(創建、停止、銷毀)API以及計費系統,數據平面則運行用戶啟動的MyScale數據庫集群,它們運行在同一個數據平面中的多個可用區。

MyScale的所有服務都部署在亞馬遜云科技的托管Kubernetes服務EKS上。EKS提供了高度可用、安全及可擴展的Kubernetes環境,這使得MyScale可以充分利用Kubernetes的強大功能,如服務發現、負載均衡、自動擴縮容、安全隔離等。借助AWS EKS上的Cluster Autoscaler,MyScale可以根據用戶工作負載的需求,快速地啟動、停止和擴展實例,對EKS的節點池進行擴縮容。

為了保證用戶集群之間的隔離,MyScale利用了Kubernetes的命名空間(namespace)特性。在數據平面中,用戶創建的每個MyScale數據庫集群對應Kubernetes中的一個命名空間,這樣就可以最小化集群之間的相互影響。每個集群對應的命名空間中包含數據庫節點、負載均衡服務和元數據存儲服務。

用戶在使用MyScale云服務時,可以通過運行在全局控制平面上的Web UI來創建和管理MyScale集群。用戶在Web UI創建MyScale集群后,云服務的后端會調用相應區域控制平面中的接口,將MyScale數據庫集群的具體參數和配置轉成一個Kubernetes中的CRD資源配置文件,保存在該區域的控制平面中。對應的區域數據平面中運行的Cluster Manager會監聽到區域控制平面中數據庫集群CRD資源的變化情況,并做出相應的操作,在數據平面中創建或修改實際的MyScale數據庫集群。在MyScale數據庫集群啟動后,用戶可以通過Web UI、Python/Java/NodeJS客戶端、HTTP接口以及包括Langchain和LlamaIndex在內的LLM應用框架來訪問MyScale數據庫。

選擇配備基于NVMe的本地SSD盤的EC2實例來部署MyScale數據庫。和大部分選擇純內存HNSW向量索引算法的向量數據庫不同,MyScale自研的MSTG算法允許將向量數據緩存在本地NVMe SSD盤中,因此MyScale在為用戶提供高性能的向量搜索的同時,大大節約了內存的使用。在亞馬遜云科技的公開測試中,MyScale超過了Pinecone、Weaviate、Qdrant、Zilliz等專有向量數據庫,提供了最佳的性價比(QPS per dollar)。

在部署MyScale云服務時,可以使用Crossplane來實現對亞馬遜云科技上的EC2和EKS服務的部署和管理。首先,通過Crossplane的AWS Provider配置了對應的亞馬遜云科技賬戶信息,使得Crossplane能夠訪問和操作亞馬遜云科技資源。然后,定義EC2和EKS的YAML配置文件,通過這些文件,可以定義需要的服務器和Kubernetes集群的參數,如實例類型、集群大小等。通過應用這些配置文件,Crossplane的AWS Provider會調用AWS API來創建和配置這些資源。

不僅如此,Crossplane還能夠定期同步這些資源的狀態,可以通過Kubernetes的接口來監控和管理這些資源。當需要修改或刪除這些資源時,只需要修改對應的YAML文件并重新應用,Crossplane就會自動完成對應的操作。通過使用Crossplane,能夠以一種聲明式、統一和自動化的方式來管理云資源,大大提升工作效率和準確性。

在數據安全方面,MyScale采用了Teleport,一種先進的遠程訪問管理系統。Teleport能夠為開發者和運維人員提供通過密文連接安全地訪問Kubernetes集群的能力。這不僅提升了系統的安全性,也提升了操作的便捷性。更重要的是,Teleport具有全面的審計功能,能夠詳細記錄所有會話和事件,這對于進行安全分析和滿足合規性要求非常有幫助。這就意味著可以對任何操作有完全的可視化,從而更好地控制和保護MyScale云服務系統,為用戶提供安全可靠的服務。

小結

這篇文章介紹了MyScale,一個在亞馬遜云科技上托管的向量數據庫。MyScale基于開源的在線分析處理(OLAP)數據庫ClickHouse開發,集成了自主研發的多尺度樹圖(MSTG)向量索引算法,可以提供優秀的數據管理和結構化數據查詢能力,同時也提供了性價比突出的向量搜索功能,以及結構化和非結構化聯合分析、處理的功能,可以被廣泛應用于圖像檢索、視頻分析、自然語言理解等AI驅動的場景。

免責聲明:市場有風險,選擇需謹慎!此文僅供參考,不作買賣依據。

標簽: