IP Library › Granted Patent US 12,591,551
Granted Patent B2
US 12,591,551 · App. 18/244,134 · Granted Mar 31, 2026

Generation method, search method, and generation device

Inventor: Kento Tatsuno (Kawasaki, JP)
Assignee: Kioxia Corporation
G06F16/1847G06F16/148G06N5/01
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,591,551
App. No.
18/244,134
Granted
Mar 31, 2026
Kind
B2
Abstract

According to an embodiment, a generation method includes: setting one of multiple first nodes as a second node; selecting (M−1) (M is an integer of two or more) fourth nodes from among one or more third nodes on the basis of a directed graph; and writing, to a first storage area, an information piece related to each of the second node and the (M−1) fourth nodes. The multiple first nodes are included in the directed graph and correspond to vectors in a search range. Each of the one or more third nodes is an out-neighbor node of the second node in the multiple first nodes. The information piece is an element related to one first node of the index information corresponding to the directed graph. The information piece includes a vector value of the one first node and IDs of all out-neighbor nodes of the one first node.

Claims (77)

1 . A generation method implemented by a computer including a processor, a first interface, and a second interface, the generation method comprising:

receiving, via the first interface, a directed graph;

setting one of multiple first nodes as a second node, the multiple first nodes being included in the directed graph and corresponding to vectors included in a search range;

selecting (M−1) fourth nodes (M is an integer of two or more) from among one or more third nodes on the basis of the directed graph, each of the third nodes being an out-neighbor node of the second node in the multiple first nodes;

writing, via the second interface, to a first storage area of a storage device, the storage device connected to the second interface, an information piece related to the second node and information pieces related to the (M−1) fourth nodes, the information piece related to the second node and the information pieces related to the (M−1) fourth nodes each being an index element related to one first node in index information corresponding to the directed graph, the index element including a vector value of the one first node and IDs of all out-neighbor nodes of the one first node, the first storage area being one of second storage areas of the storage device, the second storage areas being a unit of access to the storage device and having the same size; and

executing multiple times of first operations until the writing for index elements related to all the first nodes are completed, each of the multiple times of first operations including the setting, the selecting, and the writing, wherein

M information pieces written to any second storage area by the executing are able to be, when searching by a computer that comprises a cache memory, collectively acquired and stored into the cache memory, the information pieces stored in the cache memory are used in the searching by the computer.

2 . The generation method according to claim 1 ,

wherein the setting in a second operation being a first operation executed at second and subsequent times in the multiple times of first operations includes

setting the second node from among one or more fifth nodes and one or more out-neighbor nodes of the (M−1) fourth nodes of the multiple first nodes, the one or more fifth nodes being one or more remaining first nodes after the (M−1) fourth nodes of the one or more third nodes are selected in the selecting in any first operation executed before the second operation.

3 . The generation method according to claim 2 , further comprising, in each of the multiple times of first operations, writing the information piece related to each of the second node and the (M−1) fourth nodes to a different second storage area in the second storage areas.

4 . The generation method according to claim 1 , wherein the number of the third nodes is two or more, and the M is three or more, the selecting includes selecting the (M−1) fourth nodes on the basis of an angle between two of difference vectors, and each of the difference vectors is a difference vector between the second node and one of the two or more third nodes.

5 . The generation method according to claim 2 , wherein

the number of the third nodes is two or more, and

the M is three or more,

the selecting includes selecting the (M−1) fourth nodes on the basis of an angle between two of difference vectors, and

each of the difference vectors is a difference vector between the second node and one of the two or more third nodes.

6 . The generation method according to claim 3 , wherein

the number of the third nodes is two or more, and

the M is three or more,

the selecting includes selecting the (M−1) fourth nodes on the basis of an angle between two of difference vectors, and

each of the difference vectors is a difference vector between the second node and one of the two or more third nodes.

7 . The generation method according to claim 1 , further comprising:

generating sample queries;

searching for a first node closest to each of the sample queries on the basis of the directed graph;

acquiring a total number of times of passage in the searching for each of the one or more third nodes; and

selecting, as the (M−1) fourth nodes, high-order (M−1) third nodes with a large total number of times from among the one or more third nodes.

8 . The generation method according to claim 2 , further comprising:

generating sample queries;

searching for a first node closest to each of the sample queries on the basis of the directed graph;

acquiring a total number of times of passage in the searching for each of the one or more third nodes; and

selecting, as the (M−1) fourth nodes, high-order (M−1) third nodes with a large total number of times from among the one or more third nodes.

9 . The generation method according to claim 3 , further comprising:

generating sample queries;

searching for a first node closest to each of the sample queries on the basis of the directed graph;

acquiring a total number of times of passage in the searching for each of the one or more third nodes; and

selecting, as the (M−1) fourth nodes, high-order (M−1) third nodes with a large total number of times from among the one or more third nodes.

10 . The generation method according to claim 1 , further comprising:

specifying an in-degree for each of the one or more third nodes on the basis of the directed graph; and

selecting, as the (M−1) fourth nodes, high-order (M−1) third nodes with a larger number of the in-degrees from among the one or more third nodes.

11 . The generation method according to claim 2 , further comprising:

specifying an in-degree for each of the one or more third nodes on the basis of the directed graph; and

selecting, as the (M−1) fourth nodes, high-order (M−1) third nodes with a larger number of the in-degrees from among the one or more third nodes.

12 . The generation method according to claim 3 , further comprising:

specifying an in-degree for each of the one or more third nodes on the basis of the directed graph; and

selecting, as the (M−1) fourth nodes, high-order (M−1) third nodes with a larger number of the in-degrees from among the one or more third nodes.

13 . A search method implemented by a computer including a processor, a first memory, and a second memory configured to operate faster than the first memory, the search method comprising:

receiving a query;

setting a candidate of a first node closest to the received query along a directed graph, the directed graph including multiple first nodes corresponding to vectors in a search range, index information related to the directed graph being stored in the first memory before the receiving the query, the index information including first information pieces, each of the first information pieces including a vector value of one first node and IDs of all out-neighbor nodes of the one first node, the index information being configured such that a first information piece related to a second node being that is one of the multiple first nodes and a first information piece related to an out-neighbor node of the second node are stored in each of one or more second storage areas out of first storage areas, each of the first storage areas being a unit of access to the first memory and having the same size,

performing a first operation including:

in a case where a second information piece that is a first information piece related to a node being that is the first node as the candidate is stored in a cache area of the second memory, acquiring the second information piece from the cache area,

in a case where the second information piece is not stored in the cache area, acquiring third information pieces and storing the acquired third information pieces in the cache area, the third information pieces including the second information piece from a third storage area in which the second information piece is stored, the third storage area being part of the first storage areas,

extracting all neighbor nodes of the third node from the third information pieces, and

performing an approximate nearest neighbor search operation using information about the third node and the neighbor nodes, and

in a case where the nearest point candidate of the query is decided, outputting information on a node as the nearest point candidate of the query, the node being determined by the approximate nearest neighbor search operation, and in a case where the nearest point candidate of the query is not decided, setting a new first node as a new candidate based on the third information piece and performing the first operation again.

14 . A generation device comprising:

a first interface configured to receive a directed graph;

a second interface configured to be connectable to a storage device; and

a processor configured to execute processing of:

receiving, via the first interface, the directed graph,

setting one of multiple first nodes as a second node, the multiple first nodes being included in a directed graph and corresponding to vectors included in a search range,

selecting (M−1) fourth nodes (M is an integer of two or more) from among one or more third nodes on the basis of the directed graph, each of the third nodes being an out-neighbor node of the second node in the multiple first nodes,

writing, to a first storage area of the storage device, an information piece related to the second node and information pieces related to the (M−1) fourth nodes, the information piece related to the second node and the information pieces related to the (M−1) fourth nodes each being an index element related to one first node in index information corresponding to the directed graph, the index element including a vector value of the one first node and IDs of all out-neighbor nodes of the one first node, the first storage area being one of second storage areas of the storage device, the second storage areas being a unit of access to the storage device and having the same size, and

executing multiple times of first operations until the writing for index elements related to all the first nodes are completed, each of the multiple times of first operations including the setting, the selecting, and the writing, wherein

M information pieces written to any second storage area by the executing is able to be, when searching by a computer that comprises a cache memory, collectively acquired and stored into the cache memory, the information pieces stored in the cache memory is used in the searching by the computer.

15 . The generation device according to claim 14 , wherein

the setting in a second operation being a first operation executed second and subsequent times in the multiple times of first operations includes

setting the second node from among one or more fifth nodes and one or more out-neighbor nodes of the (M−1) fourth nodes of the multiple first nodes, the one or more fifth nodes being one or more remaining first nodes after the (M−1) fourth nodes of the one or more third nodes are selected in the selecting in any first operation executed before the second operation.

16 . The generation device according to claim 15 , wherein the processor is configured to, in each of the multiple times of first operations, execute processing of writing the information piece related to each of the second node and the (M−1) fourth nodes to a different second storage area in the second storage areas.

17 . The generation device according to claim 14 , wherein the number of the third nodes is two or more, and the M is three or more, the selecting includes selecting the (M−1) fourth nodes on the basis of an angle between two of difference vectors, and each of the difference vectors is a difference vector between the second node and one of the two or more third nodes.

18 . The generation device according to claim 14 , wherein the processor is configured to further execute processing of:

generating sample queries; searching for a first node closest to each of the sample queries on the basis of the directed graph;

acquiring a total number of times of passage in the searching for each of the one or more third nodes; and

selecting, as the (M−1) fourth nodes, high-order (M−1) third nodes with a large total number of times from among the one or more third nodes.

19 . The generation device according to claim 14 , wherein the processor is configured to further execute processing of:

specifying an in-degree for each of the one or more third nodes on the basis of the directed graph; and

selecting, as the (M−1) fourth nodes, high-order (M−1) third nodes with a larger number of the in-degrees from among the one or more third nodes.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2023
From: TATSUNO, KENTO
To: KIOXIA CORPORATION
Reel/Frame 065249/0262 →
Priority Claims (1)
JP 2022-210037 · Dec 27, 2022 · national
Continuity (1)
Related Publication 20240211447A1 · Jun 27, 2024
References Cited (17)
US 12189631B2 · Cella · 2025 [cited by examiner]
US 20040139067A1 · Houle · 2004 [cited by examiner]
US 20040162834A1 · Aono · 2004 [cited by examiner]
US 20170161271A1 · Barel · 2017 [cited by examiner]
US 20210248181A1 · Zhang · 2021 [cited by examiner]
US 20210406312A1 · Iwasaki · 2021 [cited by examiner]
US 20220342934A1 · Guan · 2022 [cited by examiner]
US 20230334093A1 · Garduno Hernandez · 2023 [cited by examiner]
JP 5436346B2 · 2014 [cited by applicant]
JP 2014074959A · 2014 [cited by applicant]
JP 2021131783A · 2021 [cited by applicant]
Malkov et al. “Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs”, 2018 (Year: 2018). [cited by examiner]
Malkov et al. “Efficient and Robust Approximate Nearest Neighbor Searching Using Hierarchical Navigable Small World Graphs”, 2018, IEEE transactions on pattern analysis and machine intelligence (Year: 2018). [cited by examiner]
Sharma, “What Happens when RPA and Blockchain Work Together?”, Blockchain Council, Jun. 12, 2020, URL: https://www.blockchain-council.org/blockchain/what-happens-when-rpa-and-blockchain-work-together/ (Year: 2020). [cited by examiner]
Li, et al. “Approximate Nearest Neighbor Search on High Dimensional Data—Experiments, Analyses, and Improvement (v1.0).” IEEE Transactions on Knowledge and Data Engineering 32.8 (2019): 1475-1488. [cited by applicant]
Suhas Jayaram Subramanya et al. “DiskANN: Fast Accurate Billionpoint Nearest Neighbor Search on a Single Node”. [cited by applicant]
Shengwen Liang et al. “Cognitive SSD: A Deep Learning Engine for In-Storage Data Retrieval”. [cited by applicant]