DETAILED ACTION
Receipt of Applicant’s Amendment, filed April 13, 2026 is acknowledged.
Claims 1, 2, 8, 9 17, and 18 were amended.
Claims 1-22 are pending in this office action.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1, 5, 8, 12, 13, 17, and 21 are rejected under 35 U.S.C. 103 as being unpatentable over Gupta [11093497] in view of Lu [11106708]
With regard to claim 1 Gupta teaches A method for implementation of a vector database, the method comprising:
[[
[[
storing the [[ (Gupta, Column 3, lines 53-54 “the vector data for the collection is stored as vector data 104 in a database or other type of storage”) in the vector database as database (Id);
generating a vector index as the table 200 (Gupta, Column 5, lines 31-36 “a node (or mapping) table 200 includes at least one entry for each vector contained in a graph (index) 202 representing a collection of vectors and their connections. In one embodiment, an entry in the table includes fields including a read lock field, a write lock field, a vector identifier field, and a node pointer(s) field.”) corresponding to the plurality of vectors (Gupta, Column 3, lines 58-59 “creates a graph or index for the associated vector data”) based on a first indexing mechanism (Gupta, Column 2, lines 16-17 “the Hierarchical Navigable Small World (HNSW) algorithm”; Column 6, lines 37-39 “the graph is created using Dijkstra's algorithm and stored in a form that is usable by the HNSW algorithm”; Please note this claim limitation has been interpreted in light of Paragraph [0018] which recites “the first indexing mechanism is Hierarchical Navigable Small World (HNSW) indexing mechanism”), wherein the vector index comprises at least one cluster (Gupta, Column 2, line 59 “a container cluster 114”) of vectors with similar attributes (Gupta, Column 1, line 10 “A k-nearest neighbor search finds the k vectors that are the closest (or most similar) to a given vector”; Column 5, lines 58-59 “The node pointer field stores a pointer to a location of a neighboring node in the graph 202”); and
performing an index mapping as the mapping function that generates the table (Gupta, Column 5, lines 31-36 “a node (or mapping) table 200 includes at least one entry for each vector contained in a graph (index) 202 representing a collection of vectors and their connections. In one embodiment, an entry in the table includes fields including a read lock field, a write lock field, a vector identifier field, and a node pointer(s) field.”) to store the vector index (Grupta, Column 5, lines 20-30 “In embodiments that use the data structure 200 ( or "node table") described herein, the data structure 200 acts as an intermediary to handle a request to act on the graph. That is, instead of direct puts, reads, etc. to a given node in the graph, the request is first subjected to an analysis of the data structure 200 to determine whether the request may be fulfilled at that time. For example, if there is a write to a particular node, it would not be beneficial to read from that node at the same time. This data structure prevents acts like that. The data structure 200 allows for incremental (and not batch) accesses to the graph.”; Column 6, lines 37-39 “the graph is created using Dijkstra's algorithm and stored in a form that is usable by the HNSW algorithm”) into a relational database (Gupta, Column 14, lines 32-33 “The database servers may be relational”);
wherein the vector database (Gupta, Column 3, lines 53-54 “the vector data for the collection is stored as vector data 104 in a database or other type of storage”) comprises an index as the index for the collection (Gupta, Column 3, lines 54 – 61 “The nearest neighbor search service creates the collection, stores information about the collection in collection metadata 108 (including an identifier of the collection, a collection name, a created date, and so forth), creates a graph or index for the associated vector data (for example, using Djikstra's algorithm), and partitions the graph or index into a plurality of shards.”) for each tenant as the collection created for the user (Gupta, Column 3, lines 43-46 “As indicated above, a nearest neighbor search service enables users to create collections of searchable vectors, to add, update, and delete vectors from a collection, and to submit nearest neighbor search requests for a given vector.”) of a multi-tenant environment (Gupta, Column 3, lines 24-34 “To provide these and other computing resource services, provider networks 100 often rely upon virtualization techniques. For example, virtualization technologies may be used to provide users the ability to control or utilize compute instances (e.g., a VM using a guest operating system (0/S) that operates using a hypervisor that may or may not further operate on top of an underlying host 0/S, a container that may or may not operate in a VM, an instance that can execute on "bare metal" hardware without an underlying hypervisor), where one or multiple compute instances can be implemented using a single electronic device.”), and where each of the plurality of vectors (Gupta, Column 4, lines 23-24 “The vector data 104 includes the vectors of the collection, and in some embodiments, an address of the vector.”; Column 4, lines 30-34 “the streaming service 130 includes a separate data stream for each shard of a collection and the vector index router 106 forwards the update information to the data stream associated with the shard containing a graph node representing the identified vector”) corresponds to a tenant ID as an account ID associated with the collection (Gupta, Column 4, lines 10-13 “The collection metadata 108 may include information for each collection including an account identifier associated with the collection, a name for the collection, an identifier of the collection”) for a tenant as the user who created the collection (Gupta, Column 3, lines 11-14 “The users ( or "customers") of provider networks 100 may utilize one or more user accounts that are associated with a customer account”; Column 3, lines 43-46 “As indicated above, a nearest neighbor search service enables users to create collections of searchable vectors, to add, update, and delete vectors from a collection, and to submit nearest neighbor search requests for a given vector.”) in the multi-tenant environment (Gupta, Column 3, lines 24-34).
Gupta does not explicitly teach obtaining a plurality of unstructured data; performing vector embedding on each unstructured data from amongst the plurality of unstructured data to generate a plurality of vectors, wherein each vector from amongst the plurality of vectors is indicative of attributes of the unstructured data from amongst the plurality of unstructured data; storing the plurality of unstructured data.
Lu teaches obtaining a plurality of unstructured data (Lu, Column 1, lines 20-24 “unstructured multimedia data objects, including for example image data, video data, audio data, text data and other sophisticated digital objects, that is stored in digital information repositories such as online Internet and cloud-based databases is growing dramatically”);
performing vector embedding on each unstructured data from amongst the plurality of unstructured data to generate a plurality of vectors (Lu, Column 8, lines 15-18 “FIG. 4 shows a pseudo-code representation of an algorithm for generating hash value matrix E of compact feature vectors K1 to Kn.”), wherein each vector from amongst the plurality of vectors is indicative of attributes as features (Lu, Column 7, line 21-5 “feature extraction process 210 during which information is extracted from the unstructured data objects 208 that are included in database 206 to produce a corresponding raw feature vector V; for each one of then data objects 208”) of the unstructured data as a first unstructured data object (Id) from amongst the plurality of unstructured data as the unstructured data objects 208 (Id);
storing the plurality of unstructured data (Lu, Column 7, lines 20-22 “the raw feature vectors V 1 to Vn (for a total of n data objects) are stored in a main table 250. In main table 250,”).
It would have been obvious to one of ordinary skill to which said subject matter pertains at the time the invention was filed to have generated the features vectors taught by Gupta using the feature vector generation techniques taught by Lu as yields the predictable results of addressing the cure of dimensionality while generating feature vectors (Lu, Column 1, lines 53- Column 2, line 7).
With regard to claim 5 the proposed combination further teaches the method further comprises [[ of the relational database (Gupta, Column 14, lines 32-33 “The database servers may be relational”) for a plurality of tenants as the users creating collections (Gupta, Column 3, lines 43-44 “As indicated above, a nearest neighbor search service enables users to create collections of searchable vectors”).
Gupta does not explicitly teach sharding.
Lu teaches sharding (Lu, Column 6, lines 60-64 “In examples, the sub-index structures are stored as independently searchable structures enabling the sub-index structures to be searched concurrently with each other.”) of the [[ (Lu, Column 6, lines 61-64 “object database 206 may be a distributed database that includes complex data objects 208 stored across multiple digital repositories that are hosted on different real or virtual machines at one or more locations”) for a plurality of tenants as partitioned groups (Lu, Column 3, lines 51-53 “partitioning the compact feature vectors into respective partition groups that correspond to the sub-index IDs assigned to the compact feature vectors.”).
It would have been obvious to one of ordinary skill to which said subject matter pertains at the time the invention was filed to have implemented used the partitioning method taught by Lu to separate the collections taught by Gupta into the distributed database (Lu, Column 6, line 60-64) as taught by Lu using the index portioning (Lu, Column 10, lines 29-56) techniques taught by Lu as it yields the predictable results of enabling concurrent searching (Lu, Column 3, lines 65-67 “examples, the sub-index structures are stored as independently searchable structures enabling the sub-index structures to be searched concurrently with each other.”)
Please note within the proposed combination one of ordinary skill in the art would identify it logical to partition the data (as taught by Lu) based upon the collections generated within the device taught by Gupta.
With regard to claim 8 Gupta teaches An Index Mapping System (IMS) for a vector database, the IMS comprising:
at least one processor (Gupta, Column 12, line 5-10 “processor 1210”) and at least one memory storing instructions (Gupta, Column 12, lines 9-10 “any suitable processors capable of executing instructions”) that, when executed by the at least one processor, cause the IMS at least to:
[[
[[
store the [[ (Gupta, Column 3, lines 53-54 “the vector data for the collection is stored as vector data 104 in a database or other type of storage”) in the vector database as database (Id);
generate a vector index as the table 200 (Gupta, Column 5, lines 31-36 “a node (or mapping) table 200 includes at least one entry for each vector contained in a graph (index) 202 representing a collection of vectors and their connections. In one embodiment, an entry in the table includes fields including a read lock field, a write lock field, a vector identifier field, and a node pointer(s) field.”) corresponding to the plurality of vectors (Gupta, Column 3, lines 58-59 “creates a graph or index for the associated vector data”) based on a first indexing mechanism (Gupta, Column 2, lines 16-17 “the Hierarchical Navigable Small World (HNSW) algorithm”; Column 6, lines 37-39 “the graph is created using Dijkstra's algorithm and stored in a form that is usable by the HNSW algorithm”; Please note this claim limitation has been interpreted in light of Paragraph [0018] which recites “the first indexing mechanism is Hierarchical Navigable Small World (HNSW) indexing mechanism”), wherein the vector index comprises at least one cluster (Gupta, Column 2, line 59 “a container cluster 114”) of vectors with similar attributes (Gupta, Column 1, line 10 “A k-nearest neighbor search finds the k vectors that are the closest (or most similar) to a given vector”; Column 5, lines 58-59 “The node pointer field stores a pointer to a location of a neighboring node in the graph 202”); and
perform an index mapping as the mapping function that generates the table (Gupta, Column 5, lines 31-36 “a node (or mapping) table 200 includes at least one entry for each vector contained in a graph (index) 202 representing a collection of vectors and their connections. In one embodiment, an entry in the table includes fields including a read lock field, a write lock field, a vector identifier field, and a node pointer(s) field.”) to store the vector index (Grupta, Column 5, lines 20-30 “In embodiments that use the data structure 200 ( or "node table") described herein, the data structure 200 acts as an intermediary to handle a request to act on the graph. That is, instead of direct puts, reads, etc. to a given node in the graph, the request is first subjected to an analysis of the data structure 200 to determine whether the request may be fulfilled at that time. For example, if there is a write to a particular node, it would not be beneficial to read from that node at the same time. This data structure prevents acts like that. The data structure 200 allows for incremental (and not batch) accesses to the graph.”; Column 6, lines 37-39 “the graph is created using Dijkstra's algorithm and stored in a form that is usable by the HNSW algorithm”) into a relational database (Gupta, Column 14, lines 32-33 “The database servers may be relational”);
wherein the vector database (Gupta, Column 3, lines 53-54 “the vector data for the collection is stored as vector data 104 in a database or other type of storage”) comprises an index as the index for the collection (Gupta, Column 3, lines 54 – 61 “The nearest neighbor search service creates the collection, stores information about the collection in collection metadata 108 (including an identifier of the collection, a collection name, a created date, and so forth), creates a graph or index for the associated vector data (for example, using Djikstra's algorithm), and partitions the graph or index into a plurality of shards.”) for each tenant as the collection created for the user (Gupta, Column 3, lines 43-46 “As indicated above, a nearest neighbor search service enables users to create collections of searchable vectors, to add, update, and delete vectors from a collection, and to submit nearest neighbor search requests for a given vector.”) of a multi-tenant environment (Gupta, Column 3, lines 24-34 “To provide these and other computing resource services, provider networks 100 often rely upon virtualization techniques. For example, virtualization technologies may be used to provide users the ability to control or utilize compute instances (e.g., a VM using a guest operating system (0/S) that operates using a hypervisor that may or may not further operate on top of an underlying host 0/S, a container that may or may not operate in a VM, an instance that can execute on "bare metal" hardware without an underlying hypervisor), where one or multiple compute instances can be implemented using a single electronic device.”), and where each of the plurality of vectors (Gupta, Column 4, lines 23-24 “The vector data 104 includes the vectors of the collection, and in some embodiments, an address of the vector.”; Column 4, lines 30-34 “the streaming service 130 includes a separate data stream for each shard of a collection and the vector index router 106 forwards the update information to the data stream associated with the shard containing a graph node representing the identified vector”) corresponds to a tenant ID as an account ID associated with the collection (Gupta, Column 4, lines 10-13 “The collection metadata 108 may include information for each collection including an account identifier associated with the collection, a name for the collection, an identifier of the collection”) for a tenant as the user who created the collection (Gupta, Column 3, lines 11-14 “The users ( or "customers") of provider networks 100 may utilize one or more user accounts that are associated with a customer account”; Column 3, lines 43-46 “As indicated above, a nearest neighbor search service enables users to create collections of searchable vectors, to add, update, and delete vectors from a collection, and to submit nearest neighbor search requests for a given vector.”) in the multi-tenant environment (Gupta, Column 3, lines 24-34).
Gupta does not explicitly teach obtain a plurality of unstructured data; perform vector embedding on each unstructured data from amongst the plurality of unstructured data to generate a plurality of vectors, wherein each vector from amongst the plurality of vectors is indicative of attributes of the unstructured data from amongst the plurality of unstructured data; store the plurality of unstructured data.
Lu teaches obtain a plurality of unstructured data (Lu, Column 1, lines 20-24 “unstructured multimedia data objects, including for example image data, video data, audio data, text data and other sophisticated digital objects, that is stored in digital information repositories such as online Internet and cloud-based databases is growing dramatically”);
perform vector embedding on each unstructured data from amongst the plurality of unstructured data to generate a plurality of vectors (lu, Column 8, lines 15-18 “FIG. 4 shows a pseudo-code representation of an algorithm for generating hash value matrix E of compact feature vectors K1 to Kn.”), wherein each vector from amongst the plurality of vectors is indicative of attributes as features (Lu, Column 7, line 21-5 “feature extraction process 210 during which information is extracted from the unstructured data objects 208 that are included in database 206 to produce a corresponding raw feature vector V; for each one of then data objects 208”) of the unstructured data as a first unstructured data object (Id) from amongst the plurality of unstructured data as the unstructured data objects 208 (Id);
store the plurality of unstructured data (Lu, Column 7, lines 20-22 “the raw feature vectors V 1 to Vn (for a total of n data objects) are stored in a main table 250. In main table 250,”).
It would have been obvious to one of ordinary skill to which said subject matter pertains at the time the invention was filed to have generated the features vectors taught by Gupta using the feature vector generation techniques taught by Lu as yields the predictable results of addressing the cure of dimensionality while generating feature vectors (Lu, Column 1, lines 53- Column 2, line 7).
With regard to claim 12 the proposed combination further teaches wherein the first indexing mechanism is Hierarchical Navigable Small World (HNSW) indexing mechanism (Gupta, Column 2, lines 16-17 “the Hierarchical Navigable Small World (HNSW) algorithm”).
With regard to claims 13 and 21 the proposed combination further teaches wherein the at least one processor causes the IMS to further access at least one unstructured data from the plurality of unstructured data, and wherein to access the at least one unstructured data, the IMS:
receives a query vector (Gupta, Column 8, lines 43-46 “the service receives a request to perform a kNN search for a vector in a graph. In some embodiments, the request includes an identifier of the vector for which the search is to be performed.”);
searches the vector index stored on the relational database using the query vector to identify a nearest neighbour vector corresponding to the query vector (Gupta, Column 8, lines 50-53 “the service performs the kNN search in the graph using for the node identified by the node table using the identifier of the vector and returns the result of the kNN search to the requestor”); and
identifies the unstructured data (Lu, Column 1, lines 20-24 “unstructured multimedia data objects, including for example image data, video data, audio data, text data and other sophisticated digital objects, that is stored in digital information repositories such as online Internet and cloud-based databases is growing dramatically”; Column 52-56 “hence compact feature vectors K1 and K3 are returned as candidate nearest neighbors, where ideally compact feature vectors Kl and K2 55 should be returned as the nearest neighbors to compact query feature vectors q.”) using the nearest neighbour vector (Gupta, Column 8, lines 53 “returns the result of the kNN search to the requestor”).
Claim 2-7, 9-11, 14-16, 18-20 and 22 are rejected under 35 U.S.C. 103 as being unpatentable over Gutpa in view of Lu and Pinecone [Hierarchical Navigable Small Worlds].
With regard to claims 2, 9 and 18 the proposed combination further teaches wherein performing the index mapping comprises creating a first table structure as a separate entry of the node table (Gupta, Column 5, lines 20-21 “that use the data structure 200 ( or "node table") described herein”; Column 5, lines 60-67) comprising the plurality of vectors and metadata corresponding to the plurality of vectors, and the metadata corresponding to each of the plurality of vectors comprises at least one of a vector ID as the vector identification field (Gupta, Column 5, lines 31-36 “a node (or mapping) table 200 includes at least one entry for each vector contained in a graph (index) 202 representing a collection of vectors and their connections. In one embodiment, an entry in the table includes fields including a read lock field, a write lock field, 35 a vector identifier field, and a node pointer(s) field.”), the tenant ID as an account ID associated with the collection (Gupta, Column 4, lines 10-13 “The collection metadata 108 may include information for each collection including an account identifier associated with the collection, a name for the collection, an identifier of the collection”), an index name (Gupta, Column 4, lines 12-13 “a name for the collection,”), and an [[ (Gupta, Column 6, line 39 “the HNSW algorithm.”).
Gupta does not explicitly teach identifier of a maximum layer at which each of the plurality of vectors is found.
Pinecone teaches identifier of a maximum layer at which each of the plurality of vectors is found (Pinecone, Page 8, “Here we have the number of levels in our graph, 0 → 4 described by max_level”).
It would have been obvious to one of ordinary skill to which said subject matter pertains at the time the invention was filed to have implemented the HNSW taught by the proposed combination using the techniques for implementing a HNSW as taught by Pinecone as one of ordinary skill in the art would recognize this as a means of building a scalable performant search (Pinecone, Page 1 see Note). The proposed combination is merely relying upon Pinecone to explain the functionality one of ordinary skill in the art would understand the HNSW taught by Gupta to perform.
With regard to claims 3, 10 and 19 the proposed combination further teaches wherein performing the index mapping comprises creating a second table structure comprising metadata corresponding to a first vector from amongst the plurality of vectors and a list of neighbour vectors (Gupta, Column 5, line 58-59 “The node pointer field stores a pointer to a location of a neighboring node in the graph 202”) corresponding to the first vector, and the metadata corresponding to the first vector comprises at least one of a first vector ID as the vector identification field (Gupta, Column 5, lines 31-36 “a node (or mapping) table 200 includes at least one entry for each vector contained in a graph (index) 202 representing a collection of vectors and their connections. In one embodiment, an entry in the table includes fields including a read lock field, a write lock field, 35 a vector identifier field, and a node pointer(s) field.”), a first tenant ID (Gupta, Column 4, line 13 “an identifier of the collection”), a first index name (Gupta, Column 4, lines 12-13 “a name for the collection,”), and a first identifier of a layer comprising the first vector (Gupta, Column 14, lines 32-33 “The database servers may be relational”).
Gupta does not explicitly teach a first identifier of a layer comprising the first vector.
Pinecone teaches a first identifier of a layer comprising the first vector (Pinecone, Page 8, “Here we have the number of levels in our graph, 0 → 4 described by max_level”).
It would have been obvious to one of ordinary skill to which said subject matter pertains at the time the invention was filed to have implemented the HNSW taught by the proposed combination using the techniques for implementing a HNSW as taught by Pinecone as one of ordinary skill in the art would recognize this as a means of building a scalable performant search (Pinecone, Page 1 see Note). The proposed combination is merely relying upon Pinecone to explain the functionality one of ordinary skill in the art would understand the HNSW taught by Gupta to perform.
With regard to claims 4 and 11 the proposed combination further teaches wherein performing the index mapping comprises creating a third table structure comprising at least one entry point (Pinecone Page 4 “the top layer is our entry point”) to the vector index and metadata corresponding to the first vector(Gupta, Column 5, lines 31-36 “a node (or mapping) table 200 includes at least one entry for each vector contained in a graph (index) 202 representing a collection of vectors and their connections. In one embodiment, an entry in the table includes fields including a read lock field, a write lock field, 35 a vector identifier field, and a node pointer(s) field.”), wherein the entry point [corresponds / corresponding] to a top layer of the vector index (Pinecone Page 4 “the top layer is our entry point”) and the metadata corresponding to the first vector comprises at least one of the first tenant ID (Gupta, Column 4, line 13 “an identifier of the collection”), the first index name (Gupta, Column 4, lines 12-13 “a name for the collection,”), and default and construction parameters corresponding to the first vector (Lu, Column 8, lines 65-67 “Table 1 below provides a summary of parameters relevant to RDF index structure generation process 218.”; Column 18, lines 20- 23 “partitioning method… can be easily controlled by a single parameter, M, where M is the number of bits used for partitioning into partition groups”).
It would have been obvious to one of ordinary skill to which said subject matter pertains at the time the invention was filed to have implemented used the partitioning method taught by Lu to separate the collections taught by Gupta into the distributed database (Lu, Column 6, line 60-64) as taught by Lu using the index portioning (Lu, Column 10, lines 29-56 techniques taught by Lu as it yields the predictable results of enabling concurrent searching (Lu, Column 3, lines 65-67 “examples, the sub-index structures are stored as independently searchable structures enabling the sub-index structures to be searched concurrently with each other.”)
With regard to claim 6 the proposed combination further teaches wherein the method further comprises accessing at least one unstructured data from the plurality of unstructured data, wherein the accessing comprises:
receiving a query vector (Gupta, Column 8, lines 43-46 “the service receives a request to perform a kNN search for a vector in a graph. In some embodiments, the request includes an identifier of the vector for which the search is to be performed.”);
searching the vector index stored on the relational database using the query vector to identify a nearest neighbour vector corresponding to the query vector (Gupta, Column 8, lines 50-53 “the service performs the kNN search in the graph using for the node identified by the node table using the identifier of the vector and returns the result of the kNN search to the requestor”); and
identifying the unstructured data (Lu, Column 1, lines 20-24 “unstructured multimedia data objects, including for example image data, video data, audio data, text data and other sophisticated digital objects, that is stored in digital information repositories such as online Internet and cloud-based databases is growing dramatically”; Column 52-56 “hence compact feature vectors K1 and K3 are returned as candidate nearest neighbors, where ideally compact feature vectors Kl and K2 55 should be returned as the nearest neighbors to compact query feature vectors q.”) using the nearest neighbour vector (Gupta, Column 8, lines 53 “returns the result of the kNN search to the requestor”).
With regard to claim 7 the proposed combination further teaches wherein identifying the nearest neighbour vector corresponding to the query vector comprises:
retrieving the at least one entry point for the vector index (Pinecone, Page 4 “entry point”);
utilizing the at least one entry point for searching the top layer (Pinecone, Page 4 “the top layer is our entry point and contains only the longest links”) to identify a nearest neighbour vector corresponding to the query vector (Gupta, Column 5, line 58-59 “The node pointer field stores a pointer to a location of a neighboring node in the graph 202”) in the top layer as the local minimum of the top layer(Pinecone, Page 4 “the top layer is our entry point … We traverse edges in each layer just as we did for NSW, greedily moving to the nearest vertex until we find a local minimum”);
updating the nearest neighbour vector as an entry point to a second layer next to the top layer as shifting the current vertex (Pinecone, Page 4 “at this point we shift to the current vertex in the lower layer and begin searching gain. We repeat this process until finding the local minimum of our bottom layer”);
for each layer starting from the layer next to the top layer to a last layer in the vector index as repeat until finding the local minimum in the bottom layer (Id):
searching a current layer with the query vector to identify the nearest neighbour vector corresponding to the query vector in the current layer as searching for the local minimum at each layer for the search (Id);
updating the nearest neighbour vector as an entry point to a layer subsequent to the current layer as shifting the current vertex at each layer (Id); and
finding nearest neighbour vectors to the query vector as finding the local minimums, e.g. nearest neighbors (Pinecone Page 4; Gupta, Column 1, line 10 “A k-nearest neighbor search finds the k vectors that are the closest (or most similar) to a given vector”; Column 5, lines 58-59 “The node pointer field stores a pointer to a location of a neighboring node in the graph 202”); and
returning the nearest neighbour vectors (Gupta, Column 8, lines 53 “returns the result of the kNN search to the requestor”)to the query vector (Gupta, Column 8, lines 43-46 “the service receives a request to perform a kNN search for a vector in a graph. In some embodiments, the request includes an identifier of the vector for which the search is to be performed.”).
With regard to claim 14 the proposed combination further teaches wherein the at least one processor causes the IMS to further insert a new vector in the vector database (Gupta, Column 6, line 56-57 “in response to receiving a request to add or update a vector according to some embodiments”), and wherein to insert the new vector (Gupta, Column 7, lines 1-3 “if the service determines that the vector does not exist in the collection, at block 406, the service adds the vector to the graph”), the IMS is to:
retrieve the at least one entry point (Pinecone Page 4 “the top layer is our entry point”) from the third table structure (Gupta, Column 5, line 60-61 “a data structure 200 includes a separate entry for each neighbor relationship in the graph 202”);
assign a new maximum layer to the new vector (Pinecone, Page 8, “Here we have the number of levels in our graph, 0 → 4 described by max_level”);
for each layer from the top layer to the new maximum layer, update an entry point corresponding to each layer by searching each layer (Pinecone, Page 4 “We traverse edges in each layer just as we did for NSW, greedily moving to the nearest vertex until we find a local minimum. Unlike NSW, at this point, we shift to the current vertex in the lower layer and begin searching gain. We repeat this process until finding the local minimum of our bottom layer”) with the new vector (Gupta, Column 7, lines 3-6 “In some embodiments, adding the vector to the graph includes adding a new node to the graph having the vector value and recalculating edges between nodes impacted by the addition.”) based on the at least one entry point (Gupta, Column 5, line 60-61 “a data structure 200 includes a separate entry for each neighbor relationship in the graph 202”);
search for neighbour vectors (Gupta, Column 7, lines 8-9 “the edge recalculation is performed using Dijkstra's algorithm.”) for each layer from the new maximum layer to a last layer of the vector index (Pinecone, Page 4 “at this point we shift to the current vertex in the lower layer and begin searching gain. We repeat this process until finding the local minimum of our bottom layer”), wherein the IMS is to:
search each layer (Pinecone, Page 4 “at this point we shift to the current vertex in the lower layer and begin searching gain. We repeat this process until finding the local minimum of our bottom layer”) with the new vector as the newly added node (Gupta, Column 7, lines 1-3)and the entry point corresponding to each layer (Gupta, Column 5, line 60-61 “a data structure 200 includes a separate entry for each neighbor relationship in the graph 202”) to identify a plurality of nearest neighbour vectors (Gupta, Column 5, line 58-59 “The node pointer field stores a pointer to a location of a neighboring node in the graph 202”) corresponding to the new vector as the newly added node (Gupta, Column 7, lines 1-3); and
identify a predetermined number as k-nearest (Gupta, Column 8, line 39-40 “perform a k-nearest neighbor (kNN) search”) of nearest neighbour vectors from amongst the plurality of nearest neighbour vectors (Gupta, Column 5, line 58-59 “The node pointer field stores a pointer to a location of a neighboring node in the graph 202”) corresponding to the new vector as the newly added node (Gupta, Column 7, lines 1-3);
create an edge between the new vector and each vector from amongst the predetermined number of nearest vectors (Gupta, Column 7, lines 4-5 “a new node to the graph having the vector value and recalculating edges between nodes impacted by the addition.”);
set the entry points to newly identified vectors (Gupta, Column 7, lines 9-11 “the service adds an entry to the node table corresponding to the vector including adding a new node pointer value.”);
update the entry point to be the new vector(Gupta, Column 7, lines 9-11 “the service adds an entry to the node table corresponding to the vector including adding a new node pointer value.”), if the new maximum layer is greater than the top layer; and increment the top layer count as when the system determines the top layer is the ‘chosen insertion layer’ (Pinecone, Page 5 “Graph construction starts at the top layer. After entering the graph the algorithm greedily traverses across edges, finding the ef nearest neighbors to our inserted vector q at this point ef =1. After finding the local minimum, it moves down to the next layer (just as is done during search). This process is repeated until reaching our chosen insertion layer. Here begins phase two of construction”).
With regard to claim 15 the proposed combination further teaches wherein the IMS is to:
determine that the new maximum layer is greater than the top layer; and
set the new maximum layer to one level higher than top layer as when the system determines the top layer is the ‘chosen insertion layer’ (Pinecone, Page 5 “Graph construction starts at the top layer. After entering the graph the algorithm greedily traverses across edges, finding the ef nearest neighbors to our inserted vector q at this point ef =1. After finding the local minimum, it moves down to the next layer (just as is done during search). This process is repeated until reaching our chosen insertion layer. Here begins phase two of construction”).
With regard to claim 16 the proposed combination further teaches wherein the IMS is to:
determine that a list of neighbour vectors comprising the plurality of nearest neighbour vectors exceeds a maximum length (M) (Pineconde, Page 5 “M_max, which defines the maximum number of links a vertex can have”); and
delete at least one existing edge (Gupta, Column 8, lines 29-32 “When there is not a lock, the service deletes the node associated with the vector from the graph at block 606. In some embodiments, edges between nodes impacted by the deletion are recalculated.”).
With regard to claim 17 Gupta teaches A non-transitory computer-readable medium comprising instructions (Gupta, Column 12, lines 5-10) for implementation of a vector database (Gupta, Column 14, lines 32-33 “The database servers may be relational”), the instructions being executable by a processing resource to:
[[
[[
store the [[ (Gupta, Column 3, lines 53-54 “the vector data for the collection is stored as vector data 104 in a database or other type of storage”) in the vector database as database (Id);
generate a vector index as the table 200 (Gupta, Column 5, lines 31-36 “a node (or mapping) table 200 includes at least one entry for each vector contained in a graph (index) 202 representing a collection of vectors and their connections. In one embodiment, an entry in the table includes fields including a read lock field, a write lock field, a vector identifier field, and a node pointer(s) field.”) corresponding to the plurality of vectors (Gupta, Column 3, lines 58-59 “creates a graph or index for the associated vector data”) based on a first indexing mechanism (Gupta, Column 2, lines 16-17 “the Hierarchical Navigable Small World (HNSW) algorithm”; Column 6, lines 37-39 “the graph is created using Dijkstra's algorithm and stored in a form that is usable by the HNSW algorithm”; Please note this claim limitation has been interpreted in light of Paragraph [0018] which recites “the first indexing mechanism is Hierarchical Navigable Small World (HNSW) indexing mechanism”), wherein the vector index comprises at least one cluster (Gupta, Column 2, line 59 “a container cluster 114”) of vectors with similar attributes (Gupta, Column 1, line 10 “A k-nearest neighbor search finds the k vectors that are the closest (or most similar) to a given vector”; Column 5, lines 58-59 “The node pointer field stores a pointer to a location of a neighboring node in the graph 202”); and
perform an index mapping as the mapping function that generates the table (Gupta, Column 5, lines 31-36 “a node (or mapping) table 200 includes at least one entry for each vector contained in a graph (index) 202 representing a collection of vectors and their connections. In one embodiment, an entry in the table includes fields including a read lock field, a write lock field, a vector identifier field, and a node pointer(s) field.”) to store the vector index (Grupta, Column 5, lines 20-30 “In embodiments that use the data structure 200 ( or "node table") described herein, the data structure 200 acts as an intermediary to handle a request to act on the graph. That is, instead of direct puts, reads, etc. to a given node in the graph, the request is first subjected to an analysis of the data structure 200 to determine whether the request may be fulfilled at that time. For example, if there is a write to a particular node, it would not be beneficial to read from that node at the same time. This data structure prevents acts like that. The data structure 200 allows for incremental (and not batch) accesses to the graph.”; Column 6, lines 37-39 “the graph is created using Dijkstra's algorithm and stored in a form that is usable by the HNSW algorithm”) into a relational database (Gupta, Column 14, lines 32-33 “The database servers may be relational”);
wherein the vector database (Gupta, Column 3, lines 53-54 “the vector data for the collection is stored as vector data 104 in a database or other type of storage”) comprises an index as the index for the collection (Gupta, Column 3, lines 54 – 61 “The nearest neighbor search service creates the collection, stores information about the collection in collection metadata 108 (including an identifier of the collection, a collection name, a created date, and so forth), creates a graph or index for the associated vector data (for example, using Djikstra's algorithm), and partitions the graph or index into a plurality of shards.”) for each tenant as the collection created for the user (Gupta, Column 3, lines 43-46 “As indicated above, a nearest neighbor search service enables users to create collections of searchable vectors, to add, update, and delete vectors from a collection, and to submit nearest neighbor search requests for a given vector.”) of a multi-tenant environment (Gupta, Column 3, lines 24-34 “To provide these and other computing resource services, provider networks 100 often rely upon virtualization techniques. For example, virtualization technologies may be used to provide users the ability to control or utilize compute instances (e.g., a VM using a guest operating system (0/S) that operates using a hypervisor that may or may not further operate on top of an underlying host 0/S, a container that may or may not operate in a VM, an instance that can execute on "bare metal" hardware without an underlying hypervisor), where one or multiple compute instances can be implemented using a single electronic device.”), and where each of the plurality of vectors (Gupta, Column 4, lines 23-24 “The vector data 104 includes the vectors of the collection, and in some embodiments, an address of the vector.”; Column 4, lines 30-34 “the streaming service 130 includes a separate data stream for each shard of a collection and the vector index router 106 forwards the update information to the data stream associated with the shard containing a graph node representing the identified vector”) corresponds to a tenant ID as an account ID associated with the collection (Gupta, Column 4, lines 10-13 “The collection metadata 108 may include information for each collection including an account identifier associated with the collection, a name for the collection, an identifier of the collection”) for a tenant as the user who created the collection (Gupta, Column 3, lines 11-14 “The users ( or "customers") of provider networks 100 may utilize one or more user accounts that are associated with a customer account”; Column 3, lines 43-46 “As indicated above, a nearest neighbor search service enables users to create collections of searchable vectors, to add, update, and delete vectors from a collection, and to submit nearest neighbor search requests for a given vector.”) in the multi-tenant environment (Gupta, Column 3, lines 24-34).
Gupta does not explicitly teach obtain a plurality of unstructured data; perform vector embedding on each unstructured data from amongst the plurality of unstructured data to generate a plurality of vectors, wherein each vector from amongst the plurality of vectors is indicative of attributes of the unstructured data from amongst the plurality of unstructured data; store the plurality of unstructured data.
Lu teaches obtain a plurality of unstructured data (Lu, Column 1, lines 20-24 “unstructured multimedia data objects, including for example image data, video data, audio data, text data and other sophisticated digital objects, that is stored in digital information repositories such as online Internet and cloud-based databases is growing dramatically”);
perform vector embedding on each unstructured data from amongst the plurality of unstructured data to generate a plurality of vectors (Lu, Column 8, lines 15-18 “FIG. 4 shows a pseudo-code representation of an algorithm for generating hash value matrix E of compact feature vectors K1 to Kn.”), wherein each vector from amongst the plurality of vectors is indicative of attributes as features (Lu, Column 7, line 21-5 “feature extraction process 210 during which information is extracted from the unstructured data objects 208 that are included in database 206 to produce a corresponding raw feature vector V; for each one of then data objects 208”) of the unstructured data as a first unstructured data object (Id) from amongst the plurality of unstructured data as the unstructured data objects 208 (Id);
store the plurality of unstructured data (Lu, Column 7, lines 20-22 “the raw feature vectors V 1 to Vn (for a total of n data objects) are stored in a main table 250. In main table 250,”).
It would have been obvious to one of ordinary skill to which said subject matter pertains at the time the invention was filed to have generated the features vectors taught by Gupta using the feature vector generation techniques taught by Lu as yields the predictable results of addressing the cure of dimensionality while generating feature vectors (Lu, Column 1, lines 53- Column 2, line 7).
With regard to claim 20 the proposed combination further teaches wherein
performing the index mapping comprises creating a third table structure comprising an entry point (Pinecone Page 4 “the top layer is our entry point”) for a query vector corresponding to the first vector and metadata corresponding to the first vector (Gupta, Column 5, lines 31-36 “a node (or mapping) table 200 includes at least one entry for each vector contained in a graph (index) 202 representing a collection of vectors and their connections. In one embodiment, an entry in the table includes fields including a read lock field, a write lock field, 35 a vector identifier field, and a node pointer(s) field.”) wherein the entry point corresponding to a top layer of the vector index (Pinecone Page 4 “the top layer is our entry point”); and
the metadata corresponding to the first vector comprises at least one of the first tenant ID (Gupta, Column 4, line 13 “an identifier of the collection”), the first index name (Gupta, Column 4, lines 12-13 “a name for the collection”), and default and construction parameters corresponding to the first vector (Lu, Column 8, lines 65-67 “Table 1 below provides a summary of parameters relevant to RDF index structure generation process 218.”; Column 18, lines 20- 23 “partitioning method… can be easily controlled by a single parameter, M, where M is the number of bits used for partitioning into partition groups”).
It would have been obvious to one of ordinary skill to which said subject matter pertains at the time the invention was filed to have implemented used the partitioning method taught by Lu to separate the collections taught by Gupta into the distributed database (Lu, Column 6, line 60-64) as taught by Lu using the index portioning (Lu, Column 10, lines 29-56 techniques taught by Lu as it yields the predictable results of enabling concurrent searching (Lu, Column 3, lines 65-67 “examples, the sub-index structures are stored as independently searchable structures enabling the sub-index structures to be searched concurrently with each other.”)
With regard to claim 22 the proposed combination further teaches wherein the medium further comprises deleting an existing vector from the vector database, wherein the deleting comprises:
identifying a plurality of neighbour vectors corresponding to the existing vector (Gupta, Column 5, line 58-59 “The node pointer field stores a pointer to a location of a neighboring node in the graph 202”) on each layer from the top layer to a last layer of the vector index (Pinecone, Page 4 “We traverse edges in each layer just as we did for NSW, greedily moving to the nearest vertex until we find a local minimum. Unlike NSW, at this point, we shift to the current vertex in the lower layer and begin searching gain. We repeat this process until finding the local minimum of our bottom layer”); and
updating a list of neighbour vectors for each neighbour vector from amongst the plurality of neighbour vectors (Gupta, Column 7, lines 4-11 “adding the vector to the graph includes adding a new node to the graph having the vector value and recalculating edges between nodes impacted by the addition. Impacted nodes at least include nodes that share an edge with the updated node. In some embodiments, the edge recalculation is performed using Dijkstra's algorithm. At block 408, the service adds an entry to the node table corresponding to the vector including adding a new node pointer value.”) on each layer from the top layer to the last layer to remove reference to the existing vector as traversing through the graph to update the edges impacted (Gupta, Id; Pinecone, “Graph construction starts at the top layer… it moves down to the next layer (just as is done during search)”).
Response to Arguments
Applicant's arguments filed April 13, 2026 have been fully considered but they are not persuasive. All the arguments regarding the newly added limitations are addressed in the above rejections.
With regard to claim 1, applicant argues that the prior art does not teach “performing an index mapping to store the vector index into a relational database”. Specifically applicant argues that Gupta does not state that “index mapping” is performed to generate the table, nor that the vector index is being stored in the table.
In response, the claim limitation of what the index mapping is used to do is a recitation of intended use of the claimed element (e.g. the performing an index mapping). As long as the prior art performs the claimed function (e.g. performing index mapping), the prior art reads on the claim language.
Gupta explicitly used the word “mapping” when discussing the node table (See Column 5, line 31). This node (or mapping) table 200 maps each vector to their connections. Each entry includes fields including the “vector identifier field” which identifies the vector contained in the graph (index) 202. The system uses the mapping table to handle requests to act on the graph (e.g. perform write/storage operations) See Column 5, lines 20-30). This means that the ‘map’ is being used to facilitate storage of the vector index (e.g. the identified by the vector identifier field) in the relational database ( e.g. the data structure stored in the relational database.
Applicant’s arguments suggest that applicant has an intended meaning that is not required by the claim language. It is suggested that the claim be amended to further clarify the claimed device.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to AMANDA WILLIS whose telephone number is (571)270-7691. The examiner can normally be reached Monday-Friday 8am-2pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Ajay Bhatia can be reached at 571-272-3906. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/AMANDA L WILLIS/Primary Examiner, Art Unit 2156