DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claims 1-15 are pending in this application.
Priority
Receipt is acknowledged of certified copies of papers required by 37 CFR 1.55.
Information Disclosure Statement
The information disclosure statements (IDSs) submitted on 03/07/2025 and 01/19/2026 are in compliance with the provisions of 37 CFR 1.97. Accordingly, the information disclosure statements are being considered by the examiner.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
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-15 are rejected under 35 U.S.C. 103 as being unpatentable over Tiwari et al. (US 2025/0336522 A1), hereinafter Tiwari, in view of Ikeda et al. (US 2023/0185468 A1), hereinafter Ikeda.
As to claim 1, Tiwari discloses a management method, comprising:
storing, in a storage device, a first vector database in which a group of first information pieces each indicating one of a plurality of first vectors, is recorded, the plurality of first vectors corresponding to a plurality of nodes of a first directed graph, each first information piece included in the group of first information pieces including one of the plurality of first vectors and a second information piece that indicates a vector corresponding to a neighbor node (Figs. 2 and 5, #502, [0087]-[0089], [0123], Storing embedding data objects, i.e. information pieces, comprising vectors corresponding to nodes in a graph database. The embedding data objects also including node identifiers referencing other nodes in the graph database representing the relationships to those nodes, i.e. indicating neighboring vectors forming the graph.);
while generating a second directed graph that includes two or more nodes corresponding to two or more second vectors, generating, , a second vector database in which a group of third information pieces each indicating one of the two or more second vectors, is recorded, each third information piece included in the group of third information pieces including one of the two or more second vectors and a fourth information piece that indicates a vector corresponding to a neighbor node (Fig. 2; [0013], Nodes, and thus corresponding vectors, are regularly added; the nodes forming a second or more directed graph. These are combined which must require updating the node information of an affected embedding data objects.);
combining the first directed graph with the second directed graph by updating at least one information piece of the group of first information pieces and the group of third information pieces (Fig. 2; [0013], Nodes, and thus corresponding vectors, are regularly added; the nodes forming a second or more directed graph. These are combined which must require updating the node information of an affected embedding data objects.); and
storing the second vector database in the storage device ([0138]-[0139], The data is stored in a storage device.).
Tiwari does not disclose generating the second directed graph in a volatile memory.
However, Ikeda discloses generating a second directed graph in a volatile memory, and combining the second directed graph with a first directed graph stored in a storage device, and storing the graphs in the storage device (Figs. 3, 5, 6 #S105-S107; [0052]; [0062]-[0064], Graphs are stored in both volatile memory, e.g. DRAM, and non-volatile storage, e.g. SSD. The graphs are combined by linking them, and the structure of each written to SSD.).
Before the effective filing date of the claimed invention, it would have been obvious to a person having ordinary skill in the art to combine the teachings of Tiwari with the teachings of Ikeda by modifying Tiwari such that the new nodes and nearest neighbor graph nodes being updated are stored in volatile memory while the rest is in storage as part of the necessary steps of query and retrieving the data for updates, like in Ikeda (Fig. 6; [0019], [0027]) and combine and store them like in Ikeda. Said artisan would have been motivated to do so in order to utilize the higher speed of volatile memory to locate and update neighbor nodes of those being updated in Tiwari ([0113]) so as to improve performance (Ikeda, [0041]).
As to claim 6, Tiwari discloses a database device, comprising:
a storage device ([0138]-[0139]) that stores a first vector database in which a group of first information pieces each indicating one of a plurality of first vectors, is recorded, the plurality of first vectors corresponding to a plurality of nodes of a first directed graph, each first information piece included in the group of first information pieces including one of the plurality of first vectors and a second information piece that indicates a vector corresponding to a neighbor node (Figs. 2 and 5, #502, [0087]-[0089], [0123], Storing embedding data objects, i.e. information pieces, comprising vectors corresponding to nodes in a graph database. The embedding data objects also including node identifiers referencing other nodes in the graph database representing the relationships to those nodes, i.e. indicating neighboring vectors forming the graph.);
a volatile memory ([0138]-[0139]); and
a processor configured to execute the steps of ([0138]-[0139]):
while generating a second directed graph that includes two or more nodes corresponding to two or more second vectors, generating, , a second vector database in which a group of third information pieces each indicating one of the two or more second vectors, is recorded, each third information piece included in the group of third information pieces including one of the two or more second vectors and a fourth information piece that indicates a vector corresponding to a neighbor node (Fig. 2; [0013], Nodes, and thus corresponding vectors, are regularly added; the nodes forming a second or more directed graph. These are combined which must require updating the node information of an affected embedding data objects.);
combining the first directed graph with the second directed graph by updating at least one information piece of the group of first information pieces and the group of third information pieces (Fig. 2; [0013], Nodes, and thus corresponding vectors, are regularly added; the nodes forming a second or more directed graph. These are combined which must require updating the node information of an affected embedding data objects.); and
storing the second vector database in the storage device ([0138]-[0139], The data is stored in a storage device.).
Tiwari does not disclose generating the second directed graph in a volatile memory.
However, Ikeda discloses generating a second directed graph in a volatile memory, and combining the second directed graph with a first directed graph stored in a storage device, and storing the graphs in the storage device (Figs. 3, 5, 6 #S105-S107; [0052]; [0062]-[0064], Graphs are stored in both volatile memory, e.g. DRAM, and non-volatile storage, e.g. SSD. The graphs are combined by linking them, and the structure of each written to SSD.).
Before the effective filing date of the claimed invention, it would have been obvious to a person having ordinary skill in the art to combine the teachings of Tiwari with the teachings of Ikeda by modifying Tiwari such that the new nodes and nearest neighbor graph nodes being updated are stored in volatile memory while the rest is in storage as part of the necessary steps of query and retrieving the data for updates, like in Ikeda (Fig. 6; [0019], [0027]) and combine and store them like in Ikeda. Said artisan would have been motivated to do so in order to utilize the higher speed of volatile memory to locate and update neighbor nodes of those being updated in Tiwari ([0113]) so as to improve performance (Ikeda, [0041]).
As to claims 2 and 7, the claims are rejected for the same reasons as claims 1 and 6 above. In addition, Tiwari, as previously modified with Ikeda, discloses wherein the combining of the first directed graph with the second directed graph includes updating an information piece of the group of first information pieces and the group of third information pieces that corresponds to a node of two nodes neighboring each other across a border between the first directed graph and the second directed graph, whichever is on the upstream side (Tiwari, [0113], [0163]; Ikeda, Figs. 3, 5 and 6, [0046]; Combining graphs requires updating information across the graphs to connect the nodes.).
As to claims 3 and 8, the claims are rejected for the same reasons as claims 2 and 7 above. In addition, Tiwari, as previously modified with Ikeda, discloses wherein the generating of the second vector database includes combining the first directed graph with the second directed graph, and the method further comprises when a query is input while the second vector database is stored in the volatile memory, searching for a vector that is closest to the query based on the first vector database in the storage device and the second vector database in the volatile memory (Ikeda, [0027]-[0029], Nearest neighbor searches are performed across the volatile and non-volatile storage media.).
As to claims 4 and 9, the claims are rejected for the same reasons as claims 2 and 7 above. In addition, Tiwari, as previously modified with Ikeda, discloses when a query is input while the second vector database is stored in the volatile memory:
executing a search for a vector that is closest to the query using the first vector database in the storage device and a search for a vector that is closest to the query using the second vector database in the volatile memory (Ikeda, [0027]-[0029], Nearest neighbor searches are performed across the volatile and non-volatile storage media.); and
identifying a vector that is closest to the query based on a result of the search of the first vector database in the storage device and a result of the search of the second vector database in the volatile memory (Ikeda, [0027]-[0029], Nearest neighbor searches are performed across the volatile and non-volatile storage media.).
As to claims 5 and 10, the claims are rejected for the same reasons as claims 1 and 6 above. In addition, Tiwari, as previously modified with Ikeda, discloses wherein the storage device includes a plurality of unit storage areas, and each of the plurality of unit storage areas corresponds to a unit for data write and data read in the storage device, and wherein the storing of the first vector database in the storage device includes storing an integer number of first information pieces included in the group of first information pieces per one unit storage area of the plurality of unit storage areas, and the storing of the second vector database in the storage device includes storing an integer number of third information pieces included in the group of third information pieces per one unit storage area of the plurality of unit storage areas (Tiwari, [0148], Ikeda, Fig. 5, Any storage device being written to and read, such as the commonly used drives and memory of Tiwari and Ikeda includes unit storage areas for reading and writing. All data is written in an integer number at some level, whether blocks, bits, or something else. The claim does not define how big a storage unit area is, and as such, where the information pieces of Tiwari are stored are analogous to the claimed unit storage areas.).
As to claim 11, Tiwari discloses a method of updating a vector database that is stored in a non-volatile memory and is searched in response to a query, the vector database including a plurality of nodes, wherein each of the nodes contain vector information and neighboring node information (Figs. 2 and 5, #502, [0087]-[0089], [0123], Storing embedding data objects, i.e. information pieces, comprising vectors corresponding to nodes in a graph database. The embedding data objects also including node identifiers referencing other nodes in the graph database representing the relationships to those nodes, i.e. indicating neighboring vectors forming the graph.), said method comprising the steps of:
adding a new node to a partial database (Fig. 2; [0013], Nodes, and thus corresponding vectors, are regularly added; the nodes forming a second or more directed graph. These are combined which must require updating the node information of an affected embedding data objects.);
determining a location of the new node with respect to other nodes of the vector database and the partial database (Fig. 2; [0013], Nodes, and thus corresponding vectors, are regularly added; the nodes forming a second or more directed graph. These are combined which must require updating the node information of an affected embedding data objects.);
based on the location of the new node, updating neighboring node information of one of the nodes in the vector database and the partial database, neighboring node information of the new node, or both (Fig. 2; [0013], Nodes, and thus corresponding vectors, are regularly added; the nodes forming a second or more directed graph. These are combined which must require updating the node information of an affected embedding data objects.); and
storing the partial database in the non-volatile memory when the number of nodes in the partial database is greater than a threshold number that is at least 2 ([0138]-[0139], The data is stored in a storage device.).
Tiwari does not disclose generating the second directed graph in a volatile memory.
However, Ikeda discloses generating a second directed graph in a volatile memory, and combining the second directed graph with a first directed graph stored in a storage device, and storing the graphs in the storage device (Figs. 3, 5, 6 #S105-S107; [0052]; [0062]-[0064], Graphs are stored in both volatile memory, e.g. DRAM, and non-volatile storage, e.g. SSD. The graphs are combined by linking them, and the structure of each written to SSD.).
Before the effective filing date of the claimed invention, it would have been obvious to a person having ordinary skill in the art to combine the teachings of Tiwari with the teachings of Ikeda by modifying Tiwari such that the new nodes and nearest neighbor graph nodes being updated are stored in volatile memory while the rest is in storage as part of the necessary steps of query and retrieving the data for updates, like in Ikeda (Fig. 6; [0019], [0027]) and combine and store them like in Ikeda. Said artisan would have been motivated to do so in order to utilize the higher speed of volatile memory to locate and update neighbor nodes of those being updated in Tiwari ([0113]) so as to improve performance (Ikeda, [0041]).
As to claim 12, the claim is rejected for the same reasons as claim 11 above. In addition, Tiwari, as previously modified with Ikeda, discloses performing an approximate nearest neighbor search to locate one of the nodes in the vector database and the partial database that is nearest to the new node (Ikeda, [0027]-[0029], Nearest neighbor searches are performed across the volatile and non-volatile storage media.).
As to claim 13, the claim is rejected for the same reasons as claim 11 above. In addition, Tiwari, as previously modified with Ikeda, discloses wherein the non-volatile memory includes a plurality of unit storage areas, and each of the plurality of unit storage areas corresponds to a unit for data write and data read, and the updating of the neighboring node information of one of the nodes in the vector database includes writing to a new unit storage area of the non-volatile memory (Tiwari, [0148], Ikeda, Fig. 5, Any storage device being written to and read, such as the commonly used drives and memory of Tiwari and Ikeda includes unit storage areas for reading and writing. All data is written in an integer number at some level, whether blocks, bits, or something else. The claim does not define how big a storage unit area is, and as such, where the information pieces of Tiwari are stored are analogous to the claimed unit storage areas.).
As to claim 14, the claim is rejected for the same reasons as claim 13 above. In addition, Tiwari, as previously modified with Ikeda, discloses wherein the vector information and the neighboring node information of any one node of the vector database and the partial database is stored in no more than one unit storage area (Tiwari, [0148], Ikeda, Fig. 5, Any storage device being written to and read, such as the commonly used drives and memory of Tiwari and Ikeda includes unit storage areas for reading and writing. All data is written in an integer number at some level, whether blocks, bits, or something else. The claim does not define how big a storage unit area is, and as such, where the information pieces of Tiwari are stored are analogous to the claimed unit storage areas.).
As to claim 15, the claim is rejected for the same reasons as claim 11 above. In addition, Tiwari, as previously modified with Ikeda, discloses in response to a query, performing a search of the vector database and the partial database for a node that is nearest to the query (Ikeda, [0027]-[0029], Nearest neighbor searches are performed across the volatile and non-volatile storage media.).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Lecue (US 11,442,963 B1) discloses combining graphs of vectors.
Wu et al. (US 2025/0390517 A1) discloses querying a vector database or graph database, and joining entity graphs in the process ([0060], [0239]).
Matam et al. ("GraphSSD: Graph Semantics Aware SSD," 2019 ACM/IEEE 46th Annual International Symposium on Computer Architecture (ISCA), Phoenix, AZ, USA, 2019, pp. 116-128.) discloses performing graph analysis on SSDs.
Ren et al (HM-ANN: efficient billion-point nearest neighbor search on heterogeneous memory. 2020. In Proceedings of the 34th International Conference on Neural Information Processing Systems (NIPS '20). Curran Associates Inc., Red Hook, NY, USA, Article 895, 10672–10684.) discloses a graph-based similarity search for graphs using nearest neighbors utilizing heterogeneous memory, i.e. volatile and non-volatile.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JAMES E RICHARDSON whose telephone number is (571)270-1917. The examiner can normally be reached Mon-Fri 9:00-5:30.
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, Sherief Badawi can be reached at (571) 272-9782. 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.
/James E Richardson/ Primary Examiner, Art Unit 2169