本公開總體上涉及向量嵌入(vector?embedding),并且更具體地,涉及在集群(cluster)中的多個節點上支持特定類型的向量索引的數據庫系統。
背景技術:
1、向量是固定長度數字序列,通常為浮點數,諸如[21.4,?45.2,?675.34,?19.4,83.24],這是五維向量。嵌入是將對象(例如,文本、圖像和音頻)表示為連續向量空間中的點的方式,其中這些點在空間中的位置對一個或多個機器學習(ml)算法具有語義意義(semantically?meaningful)。嵌入通常被表示為向量。一般地,向量嵌入表示n維空間中的點。向量嵌入旨在捕獲向量嵌入所表示(或嵌入)的數據的重要“特征”。向量嵌入所表示的數據可以是許多類型的數據之一,諸如文檔、電子郵件、圖像或視頻。特征的示例包括顏色、尺寸、類別、位置、紋理、含義和概念。每個特征由向量嵌入中的一個或多個數字(維度)表示。下文中,“向量嵌入”被稱為“向量”。
2、如今,向量通常由機器學習模型(例如,神經網絡)生成,并且它們所表示的特征對于人類來說通常難以理解。神經網絡產生向量的一種方式是通過捕獲倒數第二層神經元的輸出,即就在最終處理層之前的神經網絡的輸出。
3、向量之間的距離
4、向量的一個屬性是,兩個向量之間的距離是這些向量所表示的對象相似性的良好指標。表示相似的數據的兩個向量在向量空間中應該彼此是很短的距離。反之亦然:不同的數據由向量空間中彼此相距甚遠的向量表示。例如,針對單詞“貓(cat)”的向量和針對單詞“狗(dog)”的向量之間的距離應該小于針對單詞“貓(cat)”的向量和針對單詞“植物(plant)”的向量之間的距離。
5、兩個向量之間的距離通常是通過對向量的每個位置中的數字之差的平方求和來計算的:
6、(vector1[1]?–vector2[1])^2?+?(vector1[2]?–?vector2[2])^2??+??…
7、向量距離表示對象相似性的屬性允許使用向量數據庫來尋找相似的數據。例如,當在向量數據庫中搜索表示狗的圖片的向量時,最接近的向量將是表示其他狗的這些向量,而不是表示植物的向量。
8、向量處理工作負載
9、向量處理工作負載(不要與simd向量處理混淆)已被用于自然語言處理(nlp)、圖像識別、推薦等。向量處理工作負載有兩個子類別,它們需要分開的優化策略:索引(indexing)和搜索(searching)。關于索引,使用近似索引技術來索引向量嵌入(或簡稱為向量)。與b樹(b-tree)索引不同,向量索引返回按相似性排序的許多匹配值。索引創建和重建傾向于是cpu密集型的,并且針對吞吐量被優化。
10、關于搜索,存儲的向量使用一類被稱為“相似性搜索”或“近似最近鄰(ann)”的算法來搜索,以找到與查詢向量最接近的向量。搜索被設計為最小化cpu使用,以便最小化響應時間。
11、向量處理模式
12、向量相似性搜索類似于交互式在線事務處理(oltp),因為最終用戶提交向量查詢并預期即時回復。向量相似性搜索需要毫秒級的響應時間來找到接近的向量(表示相似的數據),即使當向量存儲在其中的數據庫持有數十億個向量。示例查詢是“查找與此圖片相似的產品:[對數字圖像的引用]”。另一示例查詢是“查找在概念上與此自然語言提示相匹配的公司文檔:[nl提示]”。
13、提供快速響應時間需要使用專門的向量索引和用于計算向量之間的距離的快速算法。在一些用例中,需要將向量相似性搜索與關系數據(relational?data)相結合。例如,查詢可能要求關于與自然語言提示相匹配、價值超過100萬美元、郵政編碼為94070、其所有者最近宣布破產的房屋的數據。此外,還可能需要能夠實時將新的向量插入數據庫中、從數據庫中刪除向量、并對向量進行索引。
14、向量數據庫
15、早期的向量工作負載通常使用平面文件(flat?file)或對象存儲來存儲向量。應用會將向量從其后端儲存庫中讀出到存儲器中,并使用第三方庫(諸如faiss)執行向量處理。生成式人工智能(ai)大大增加了向量的量和處理需求。生成式ai需要支持更高量攝取和更快的過濾和檢索。具有向量能力和內置索引的數據庫對于這些應用是重要的。
16、本部分中描述的方法是可以施行的方法,但不一定是先前已經設想或施行的方法。因此,除非另有指示,否則不應假定本部分中描述的方法中的任一種僅因其包括在本部分中而被認定為現有技術。
技術實現思路
1.一種方法,包括:
2.根據權利要求1所述的方法,其中所述一組變更包括作為新向量的插入的第一變更和作為所述多個向量中的特定向量的刪除的第二變更,其中將所述一組變更存儲在所述共享日志中包括:
3.根據權利要求1所述的方法,其中:
4.根據權利要求1所述的方法,其中:
5.根據權利要求1所述的方法,其中所述向量查詢是發起了一個或多個變更的事務的一部分,所述方法還包括:
6.根據權利要求1所述的方法,其中:
7.根據權利要求6所述的方法,其中對于所述共享日志中的多個變更中的每個變更,標識所述共享日志中的所述一組變更的所述子集包括:
8.根據權利要求1所述的方法,還包括:
9.根據權利要求1所述的方法,其中:
10.根據權利要求1所述的方法,還包括:
11.根據權利要求1所述的方法,還包括,在存儲所述hnsw索引之前:
12.一種方法,包括:
13.根據權利要求12所述的方法,其中:
14.根據權利要求12所述的方法,還包括:
15.根據權利要求12所述的方法,還包括:
16.根據權利要求15所述的方法,其中所述一個或多個標準基于:
17.根據權利要求15所述的方法,還包括:
18.根據權利要求17所述的方法,還包括:
19.根據權利要求18所述的方法,其中:
20.根據權利要求18所述的方法,還包括:
21.根據權利要求15所述的方法,還包括:
22.根據權利要求15所述的方法,還包括:
23.一種方法,包括:
24.根據權利要求23所述的方法,其中所述多個類型的向量索引包括分層可導航小世界(hnsw)索引和ivf索引。
25.根據權利要求23所述的方法,還包括:
26.根據權利要求23所述的方法,還包括:
27.根據權利要求23所述的方法,還包括:
28.根據權利要求27所述的方法,還包括:
29.根據權利要求23所述的方法,還包括:
30.根據權利要求29所述的方法,還包括:
31.根據權利要求23所述的方法,還包括:
32.根據權利要求23所述的方法,其中所述多個向量是第一多個向量,其中所述向量索引是第一向量索引,所述方法還包括在生成所述特定類型的第一向量索引之后:
33.根據權利要求32所述的方法,其中所述特定類型是hnsw并且第二類型是ivf,所述方法還包括:
34.一種方法,包括:
35.根據權利要求34所述的方法,其中:
36.根據權利要求34所述的方法,其中基于所述一組向量創建所述hnsw索引包括:
37.根據權利要求34所述的方法,還包括:
38.根據權利要求34所述的方法,還包括:
39.根據權利要求38所述的方法,其中使得所述快照的所述版本被存儲包括:
40.根據權利要求38所述的方法,其中使得所述快照的所述版本被存儲包括:
41.根據權利要求34所述的方法,還包括:
42.根據權利要求41所述的方法,還包括:
43.根據權利要求41所述的方法,其中選擇另一個節點包括:
44.根據權利要求34所述的方法,還包括:
45.?根據權利要求44所述的方法,其中由第二多個節點中的每個節點生成的第三向量查詢的所述結果是top?k結果,其中所述最終結果是top?k結果。
46.根據權利要求44所述的方法,還包括:
47.一種方法,包括:
48.根據權利要求47所述的方法,其中,在所述接收所述指令之前,所述向量對象包括第一模型版本字段,第一模型版本字段包括第一值,第一值指示生成了所述向量的第一版本的模型的第一版本,所述方法還包括:
49.根據權利要求47所述的方法,其中更新所述向量對象包括將第二版本追加到所述向量對象,所述方法還包括:
50.根據權利要求47所述的方法,其中更新所述向量對象包括向所述向量對象前置添加第二版本,所述方法還包括:
51.根據權利要求47所述的方法,還包括:
52.根據權利要求51所述的方法,還包括:
53.根據權利要求51所述的方法,其中第二指令指定所述特定版本。
54.根據權利要求51所述的方法,其中第二指令不指定所述特定版本,并且所述特定版本是與第二指令相關聯的默認版本。
55.根據權利要求47所述的方法,還包括:
56.根據權利要求47所述的方法,其中所述向量對象是二進制大對象(blob)。
57.根據權利要求47所述的方法,還包括:
58.根據權利要求47所述的方法,還包括:
59.根據權利要求47所述的方法,還包括:
60.根據權利要求59所述的方法,其中第二僅向量區不同于第一僅向量區。