IP Library › Granted Patent US 12,639,282
Granted Patent B1
US 12,639,282 · App. 19/041,913 · Granted May 26, 2026

Vector index building in distributed computing system

Inventors: Jiacheng Yang (Santa Clara, CA); Zhidong Qu (Milpitas, CA); Erik Michael Lindgren (New York, NY)
Assignee: Databricks, Inc.
G06F16/2282G06F16/278
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,639,282
App. No.
19/041,913
Granted
May 26, 2026
Kind
B1
Abstract

A data processing service receives a data table which includes a plurality of rows of data. The service assigns the plurality of rows of data to a plurality of computing nodes. The computing nodes belongs to a distributed computing system. At each assigned computing node, the service applies a machine learning (ML) model to the assigned rows of data for indexing each row in the data table. The ML model is trained to determine a set of centroids, and each centroid is associated with a centroid ID. For each row of data in the data table, the service receives a centroid ID of one of the plurality of centroids that the respective row of data is assigned to. The service generates an index of the data table with at least the received centroid ID of each of the plurality of row of data in the data table.

Claims (87)

1 . A method comprising:

receiving a data table, the data table comprising a plurality of rows of data;

assigning the plurality of rows of data to a plurality of computing nodes;

applying, at each assigned computing node, a machine learning model to the assigned rows of data for indexing each row in the data table, wherein training the machine learning model comprises:

accessing a plurality of samples to be processed over one or more iterations of training the machine learning model;

in each iteration,

shuffling the plurality of samples;

partitioning the plurality of samples into one or more sets, each set comprising a set of the samples;

assigning the one or more sets of samples to the plurality of computing nodes;

applying, at each of the plurality of computing nodes, the machine learning model to the assigned sets to cluster the plurality of samples; and

receiving an output from the machine learning model, the output comprising one or more centroids, each centroid clustered with a cluster of samples;

performing the one or more iterations of training the machine learning model to stabilize the plurality of centroids; and

determining a set of stabilized centroids, each centroid having a centroid ID;

receiving, for each row of data in the data table, a centroid ID of one of the plurality of centroids that the respective row of data is assigned to; and

generating an index of the data table with at least the received centroid ID of each of the plurality of rows of data in the data table.

2 . The method of claim 1 , wherein accessing a plurality of samples to be processed over one or more iterations of training the machine learning model comprises:

generating a plurality of embedding vectors, each embedding vector representing one of the plurality of samples.

3 . The method of claim 1 , wherein applying, at each of the plurality of computing nodes, the machine learning model to the assigned sets to cluster the plurality of samples comprises:

applying K-Means algorithm to each of the assigned set of samples; and

assigning each of the assigned set of samples to one of the one or more centroids, the one of the one or more centroids is a nearest centroid to the respective sample.

4 . The method of claim 1 , wherein performing the one or more iterations of training the machine learning model to stabilize the plurality of centroids comprises:

determining that a change in the plurality of centroids between two successive iterations meets a predetermined condition.

5 . The method of claim 1 , wherein generating an index of the data table comprises:

computing a product quantization (PQ) code for each row of data; and

generating the index of the data table comprising at least the centroid ID and the PQ code for each of the plurality of rows of data in the data table.

6 . The method of claim 1 , further comprising:

partitioning the plurality of rows of data in inverted file index (IVF) partitions based on a plurality of centroid IDs, each IVF partition comprising a set of rows of data that are assigned to a same centroid.

7 . The method of claim 1 , wherein generating an index of the data table comprises:

generating a secondary index comprising metadata indexing, the metadata comprising information of the respective row of data.

8 . A non-transitory computer readable storage medium comprising stored program code, the program code comprising instructions, the instructions when executed cause a processor system to:

receive a data table, the data table comprising a plurality of rows of data;

assign the plurality of rows of data to a plurality of computing nodes;

apply, at each assigned computing node, a machine learning model to the assigned rows of data for indexing each row in the data table, wherein training the machine learning model comprises:

accessing a plurality of samples to be processed over one or more iterations of training the machine learning model;

in each iteration,

shuffling the plurality of samples;

partitioning the plurality of samples into one or more sets, each set comprising a set of the samples;

assigning the one or more sets of samples to the plurality of computing nodes;

applying, at each of the plurality of computing nodes, the machine learning model to the assigned sets to cluster the plurality of samples; and

receiving an output from the machine learning model, the output comprising one or more centroids, each centroid clustered with a cluster of samples;

performing the one or more iterations of training the machine learning model to stabilize the plurality of centroids; and

determining a set of stabilized centroids, each centroid having a centroid ID;

receive, for each row of data in the data table, a centroid ID of one of the plurality of centroids that the respective row of data is assigned to; and

generate an index of the data table with at least the received centroid ID of each of the plurality of rows of data in the data table.

9 . The non-transitory computer readable storage medium of claim 8 , wherein the instructions to access a plurality of samples to be processed over one or more iterations of training the machine learning model cause the processor system to:

generate a plurality of embedding vectors, each embedding vector representing one of the plurality of samples.

10 . The non-transitory computer readable storage medium of claim 8 , wherein the instructions to apply, at each of the plurality of computing nodes, the machine learning model to the assigned sets to cluster the plurality of samples cause the processor system to:

apply K-Means algorithm to each of the assigned set of samples; and

assign each of the assigned set of samples to one of the one or more centroids, the one of the one or more centroids is a nearest centroid to the respective sample.

11 . The non-transitory computer readable storage medium of claim 8 , wherein the instructions to perform the one or more iterations of training the machine learning model to stabilize the plurality of centroids cause the processor system to:

determine that a change in the plurality of centroids between two successive iterations meets a predetermined condition.

12 . The non-transitory computer readable storage medium of claim 8 , wherein the instructions to generate an index of the data table cause the processor system to:

compute a product quantization (PQ) code for each row of data; and

generate the index of the data table comprising at least the centroid ID and the PQ code for each of the plurality of rows of data in the data table.

13 . The non-transitory computer readable storage medium of claim 8 , wherein the instructions cause a processor system to:

partition the plurality of rows of data in inverted file index (IVF) partitions based on a plurality of centroid IDs, each IVF partition comprising a set of rows of data that are assigned to a same centroid.

14 . The non-transitory computer readable storage medium of claim 8 , wherein the instructions to generate an index of the data table cause the processor system to:

generate a secondary index comprising metadata indexing, the metadata comprising information of the respective row of data.

15 . A system comprising:

one or more computer processors; and

one or more computer-readable mediums storing instructions that, when executed by the one or more computer processors, cause the system to:

receive a data table, the data table comprising a plurality of rows of data;

assign the plurality of rows of data to a plurality of computing nodes;

apply, at each assigned computing node, a machine learning model to the assigned rows of data for indexing each row in the data table, wherein training the machine learning model comprises:

accessing a plurality of samples to be processed over one or more iterations of training the machine learning model;

in each iteration,

shuffling the plurality of samples;

partitioning the plurality of samples into one or more sets, each set comprising a set of the samples;

assigning the one or more sets of samples to the plurality of computing nodes;

applying, at each of the plurality of computing nodes, the machine learning model to the assigned sets to cluster the plurality of samples; and

receiving an output from the machine learning model, the output comprising one or more centroids, each centroid clustered with a cluster of samples;

performing the one or more iterations of training the machine learning model to stabilize the plurality of centroids; and

determining a set of stabilized centroids, each centroid having a centroid ID;

receive, for each row of data in the data table, a centroid ID of one of the plurality of centroids that the respective row of data is assigned to; and

generate an index of the data table with at least the received centroid ID of each of the plurality of rows of data in the data table.

16 . The system of claim 15 , wherein the instructions to access a plurality of samples to be processed over one or more iterations of training the machine learning model cause the system to:

generate a plurality of embedding vectors, each embedding vector representing one of the plurality of samples.

17 . The system of claim 15 , wherein the instructions to apply, at each of the plurality of computing nodes, the machine learning model to the assigned sets to cluster the plurality of samples cause the system to:

apply K-Means algorithm to each of the assigned set of samples; and

assign each of the assigned set of samples to one of the one or more centroids, the one of the one or more centroids is a nearest centroid to the respective sample.

18 . The system of claim 15 , wherein the instructions to perform the one or more iterations of training the machine learning model to stabilize the plurality of centroids cause the system to:

determine that a change in the plurality of centroids between two successive iterations meets a predetermined condition.

19 . The system of claim 15 , wherein the instructions to generate an index of the data table cause the system to:

compute a product quantization (PQ) code for each row of data; and

generate the index of the data table comprising at least the centroid ID and the PQ code for each of the plurality of rows of data in the data table.

20 . The system of claim 15 , wherein the instructions cause the system to:

partition the plurality of rows of data in inverted file index (IVF) partitions based on a plurality of centroid IDs, each IVF partition comprising a set of rows of data that are assigned to a same centroid.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2025
From: YANG, JIACHENG; QU, ZHIDONG; LINDGREN, ERIK MICHAEL
To: DATABRICKS, INC.
Reel/Frame 070503/0590 →
References Cited (29)
US 6233575B1 · Agrawal · 2001 [cited by examiner]
US 12135711B2 · Arnold · 2024 [cited by examiner]
US 20180217836A1 · Johnson · 2018 [cited by applicant]
US 20210272559A1 · Medalion et al. · 2021 [cited by applicant]
US 20230195845A1 · Dasgupta et al. · 2023 [cited by applicant]
US 20230401217A1 · Arnold · 2023 [cited by examiner]
US 20240078232A1 · Arnold · 2024 [cited by examiner]
US 20240362223A1 · Lougovtsov et al. · 2024 [cited by applicant]
Amazon, “Server-Side Encryption with Customer Keys,” date unknown, 8 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptio… [cited by applicant]
Amazon Web Services, “Amazon S3 Multipart Upload Overview,” date unknown, 7 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.h… [cited by applicant]
Big ANN Benchmarks, “NeurIPS'21 Competition Track,” date unknown, 4 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL: https://big-ann-benchmarks.com/neurips21.html>. [cited by applicant]
Big ANN Benchmarks, “NeurIPS'23 Competition Track,” date unknown, 7 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL: https://big-ann-benchmarks.com/neurips23.html >. [cited by applicant]
GitHub, “Lance IVF Index,” date unknown, 65 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL https://github.com/lancedb/lance/blob/main/rust/lance/src/index/vector/ivf.rs#L1210 >. [cited by applicant]
GitHub, “Lance IVF Index,” date unknown, 57 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL lance/rust/lance/src/index/vector/ivf.rs at 48543099ed8d31403e1aca6a4cff6bd3999dba0d · lancedb/lanc… [cited by applicant]
GitHub, “Lance IVF Index,” date unknown, 65 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet < URL lance/rust/lance/src/index/vector/ivf.rs at main · lancedb/lance · GitHub>. [cited by applicant]
GitHub, “Lance IVF Index Builder,” date unknown, 7 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL https://github.com/lancedb/lance/blob/68093581ef5b8ef5be614d3e9ba19a4202734058/rust/lance/sr… [cited by applicant]
GitHub, “Lance IVF Index Shuffler,” date unknown, 19 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL https://github.com/lancedb/lance/blob/68093581ef5b8ef5be614d3e9ba19a4202734058/rust/lance-… [cited by applicant]
GitHub, “Lance PQ Index,” date unknown 16 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL https://github.com/lancedb/lance/blob/main/rust/lance/src/index/vector/pq.rs#L336 >. [cited by applicant]
GitHub, “Lance Plain Encoding,” date unknown, 19 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet < URL https://github.com/lancedb/lance/blob/68093581ef5b8ef5be614d3e9ba19a4202734058/rust/lance-io/… [cited by applicant]
GitHub, “LanceDB Issue #1195,” date unknown, 8 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL: https://github.com/lancedb/lance/issues/1195#issuecomment-2228924616>. [cited by applicant]
GitHub, “Lance DB Repository,” date unknown, 7, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL: https://github.com/lancedb/lance>. [cited by applicant]
GitHub, “Nimble Repository,” date unknown, 4 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL: https://github.com/facebookincubator/nimble >. [cited by applicant]
JAX-ML, “JAX: Composable transformations of Python+NumPy programs,” date unknown, 9 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL https://github.com/jax-ml/jax >. [cited by applicant]
LanceDB, “A Primer on Lance,” date unknown, 3 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet < https://lancedb.github.io/lancedb/concepts/data_management/#a-primer-on-lance >. [cited by applicant]
LanceDB, “Lance Format,” date unknown, 23 pages [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL https://lancedb.github.io/lance/format.html >. [cited by applicant]
LanceDB, “Read and Write Documentation,” date unknown, 23 pages, [Online] [Retrieved on Apr. 10, 2025] Retrieved from the Internet <URL: https://lancedb.github.io/lance/read_and_write.html#filter-push-down >. [cited by applicant]
OpenXLA Project, “XLA,” date unknown, 2 pages, [Online] [Retrieved on May 7, 2025] Retrieved from the Internet <URL https://openxla.org/xla >. [cited by applicant]
United States Office Action, U.S. Appl. No. 19/041,916 dated Jan. 26, 2026, 17 pages. [cited by applicant]
Patent Cooperation Treaty, International Search Report and Written Opinion, PCT Application No. PCT/US2025/050159, dated Dec. 30, 2025, 17 pages. [cited by applicant]