Information processing device

WO2026176533A1PCT designated stage Publication Date: 2026-08-27NT T INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/JP2025/005485
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-02-18
Publication Date
2026-08-27

Smart Images

  • Figure JP2025005485_27082026_PF_FP_ABST
    Figure JP2025005485_27082026_PF_FP_ABST
Patent Text Reader

Abstract

When an information processing device (10) receives update data pertaining to an update request, the information processing device (10) uses the update data to update a first index used in an approximate nearest neighbor search. When the updating of the first index is completed, the information processing device (10) performs a process relating to the completion of the updating. Subsequently, the information processing device (10), asynchronously with the updating of the first index, updates a second index that is of a different type from the first index, and is used in the approximate nearest neighbor search, such that a plurality of pieces of update data pertaining to the update request are collectively reflected in the second index.
Need to check novelty before this filing date? Find Prior Art

Description

Information processing apparatus

[0001] The present invention relates to an information processing apparatus.

[0002] In recent years, with the development of machine learning technology, embedding that converts all kinds of information such as images and texts into vectors in a high-dimensional space has been generally used. The distance between embeddings represents the semantic proximity of information, and vector search (approximate nearest neighbor search) technology that extracts similar embeddings enables queries to unstructured data such as images and semantic searches. The application fields of vector search technology cover a wide range, such as recommendation and question answering. In addition, with the emergence of RAG (Retrieval-Augmented Generation) due to the rapid popularity of LLMs (Large Language Models) in recent years, the attention to vector search technology is increasing more and more.

[0003] Here, vector search means that for a dataset consisting of vector data, a query vector and the number of output K are given as inputs, and the top K vector data with a small distance from the query vector are extracted from the dataset. For the distance between vectors, for example, Euclidean distance, inner product, or cosine distance is used.

[0004] Also, one of the simplest methods to realize vector search is full scan. Full scan is the simplest method to realize vector search. It calculates the distance between all vector data in the database and the query vector, sorts them in ascending order by distance, and extracts the vector data with a small distance.

[0005] Also, in the search for high-dimensional vectors, an index is used to realize efficient search. Usually, for the sake of high speed, the search and distance calculation are approximated. Therefore, in addition to the search speed, the search accuracy is important as the search performance. Furthermore, for the search of the latest information, it is important that the index update performance and the deterioration of the search performance after index update are small with respect to data update.

[0006] Furthermore, there are two types of indexes used for vector searches: graph indexes and LSH (Locality-Sensitive Hashing) indexes. A graph index is an index of the structure of a graph, which consists of vertices and directed edges connecting those vertices. An LSH index, on the other hand, is an index composed of a hash function specifically designed for vector searches. In addition, LSH-APG, which combines LSH and graph indexes to improve index update speed while maintaining search performance, is also known.

[0007] Furthermore, with the expansion of vector search applications, the importance of technologies for searching for the latest information amidst increasing information sources and volumes is growing, in addition to searching static data. For example, chatbot system support, which could only respond according to conventional static manuals and existing Q&A, may fail to capture error information, leading to incorrect solutions or outdated operating procedures, potentially causing users to take incorrect actions. On the other hand, systems that can search for the latest data across a larger number of information sources and volumes can suppress inappropriate user responses by comprehensively capturing and outputting large amounts of the latest failure and error information collected from various devices.

[0008] Xi Zhao, Yao Tian, ​​Kai Huang, Bolong Zheng, and Xiaofang Zhou. "Towards Efficient Index Construction and Approximate Nearest Neighbor Search in High-Dimensional Spaces." Proceedings of the VLDB Endowment, Vol. 16, No. 8, pp. 1979-1991, 2023. [online], [Retrieved January 31, 2025], Internet <URL: https: / / www.vldb.org / pvldb / vol16 / p1979-zhao.pdf>

[0009] However, conventional technologies have faced the challenge of improving index update performance without sacrificing search performance. For example, conventional technologies struggle to balance index update performance and search performance in vector searches. Conventional full scans are fast because they do not update the index and have high search accuracy because they seek exact solutions, but the search speed can be slow when the amount of data in the dataset is large. LSH indexes have high update performance and search speed, but their search accuracy can be relatively low. Graph indexes have high search speed and search accuracy, but their index update performance can be poor.

[0010] Furthermore, existing LSH-APG technologies require graph index updates before returning a response indicating the completion of index updates in response to data updates, and therefore still do not fundamentally solve the update performance issue. As a result, it is difficult for users to apply vector search to areas that handle large amounts of up-to-date data.

[0011] The present invention has been made in view of the above, and aims to improve index update performance without sacrificing search performance.

[0012] To solve the above-mentioned problems and achieve the objective, the information processing device of the present invention is characterized by having: a first update unit that, upon receiving update data relating to an update request, updates a first index used for approximate nearest neighbor search using said update data; an update completion processing unit that performs processing related to the completion of the update when the update of the first index is completed by the first update unit; and a second update unit that, asynchronously with the update of the first index, updates a second index of a different type from the first index, which is used for approximate nearest neighbor search, by reflecting a plurality of update data relating to the update request all at once.

[0013] According to the present invention, it is possible to improve index update performance without sacrificing search performance.

[0014] Figure 1 is a block diagram illustrating an example of the system configuration according to this embodiment. Figure 2 is a block diagram illustrating the configuration of the information processing device according to this embodiment. Figure 3 is a diagram illustrating an example of data stored in the queue information storage unit. Figure 4 is a diagram illustrating a conventional graph index update process. Figure 5 is a diagram illustrating a graph index update process by the information processing device according to this embodiment. Figure 6 is a diagram illustrating the flow of the index update process by the information processing device according to this embodiment. Figure 7 is a diagram illustrating the timing of the update completion response by the information processing device according to this embodiment. Figure 8 is a diagram illustrating the timing of a conventional update completion response. Figure 9 is a diagram illustrating the timing of the update completion response by the information processing device according to this embodiment. Figure 10 is a diagram illustrating the timing of the update completion response by the information processing device according to this embodiment. Figure 11 is a diagram illustrating the flow of the search process by the information processing device according to this embodiment. Figure 12 is a flowchart illustrating an example of the index update process procedure by the information processing device according to this embodiment. Figure 13 is a diagram illustrating a computer that executes a program.

[0015] Embodiments of the information processing device according to the present application will be described in detail below with reference to the drawings. Furthermore, the present invention is not limited to the embodiments described below.

[0016] [System Configuration] The configuration of the system including the information processing device according to the embodiment will be described. Figure 1 is a block diagram showing an example of the system configuration according to the embodiment. As shown in Figure 1, the system has an information processing device 10, a plurality of clients 20, and terminal devices 30. Furthermore, the configuration shown in Figure 1 is merely an example, and the specific configuration and the number of each device are not particularly limited. Note that each device shown in Figure 1 may communicate via any communication network such as the Internet, LAN, or VPN (Virtual Private Network).

[0017] The information processing device 10 has a storage unit 13 that stores information for a first index used for approximate nearest neighbor search, and information for a second index of a different type from the first index, which is also used for approximate nearest neighbor search. In the following, the case in which the first index is an LSH index and the second index is a graph index will be explained as an example, but it is not limited to this, and other types of indexes may be used, for example, other index structures such as vector quantization techniques or tree structures.

[0018] When the information processing device 10 receives update data from the client 20 regarding an index update request, it updates the LSH index using the update data. Note that the update data here can be any type of data.

[0019] Then, when the LSH index update is complete, the information processing device 10 performs processing related to the completion of the update. For example, when the LSH index update is complete, the information processing device 10 sends an update completion response to the client 20 that made the update request. In this way, the information processing device 10 improves the speed of index updates by sending an update completion response quickly before the graph index update is completed.

[0020] Subsequently, the information processing device 10 performs an update on a graph index, which is of a different type from the LSH index, asynchronously with respect to the LSH index update, to reflect multiple update data related to the update request all at once.

[0021] In this way, the information processing device 10 updates the graph index in the background while achieving high index update throughput and latency equivalent to that of the LSH index by returning an update completion response at a timing after the LSH index update but before the graph index update. As a result, the information processing device 10 balances index update performance and search performance. Furthermore, since the graph index update occurs after the update completion response, the information processing device 10 utilizes the fact that not updating the graph index immediately in response to data updates does not affect the update completion response. By implementing a new algorithm that updates the graph index for multiple data points at once, it achieves further efficiency improvements in graph index updates, which were previously difficult.

[0022] Furthermore, when the information processing device 10 receives a search request from the terminal device 30, it performs a search using the LSH index and graph update, and transmits the search results to the terminal device 30 that made the search request. The search method is not particularly limited and any method may be used.

[0023] Client 20 is a device that submits an update request to the information processing device 10. Client 20 can be any device, such as a server, terminal, or sensor. The update data transmitted by client 20 can also be any type of data. Terminal device 30 is a device that submits a search request to the information processing device 10. Terminal device 30 can also be any type of device and is not limited to any specific device.

[0024] [Configuration of the Information Processing Device] Figure 2 is a block diagram illustrating the configuration of the information processing device of this embodiment. As illustrated in Figure 2, the information processing device 10 of this embodiment includes a communication processing unit 11, a control unit 12, and a storage unit 13.

[0025] The communication processing unit 11 is implemented using a NIC (Network Interface Card) or the like, and controls communication via telecommunication lines such as a LAN (Local Area Network) or the Internet.

[0026] The storage unit 13 stores data and programs necessary for various processes performed by the control unit 12. For example, the storage unit 13 may be a semiconductor memory element such as RAM (Random Access Memory) or flash memory, or a storage device such as a hard disk or optical disc. As illustrated in Figure 2, the storage unit 13 includes an LSH index storage unit 13a, a graph index storage unit 13b, and a queue information storage unit 13c.

[0027] The LSH index storage unit 13a stores information for the LSH index. The LSH index is an index composed of a hash function specialized for vector searching. In the LSH index, vector data is allocated to low-dimensional buckets by the LSH function, and data with small distances between them before transformation are probabilistically allocated to the same bucket. As a result, the information processing device 10 can quickly find vectors with small distances by simply performing calculations using the LSH function and examining the buckets.

[0028] The graph index storage unit 13b stores information about the graph index. The graph index is an index of the structure of a graph, which consists of vertices and directed edges connecting those vertices. In the graph index, vector data corresponds to vertices, and edges are connected between vertices that correspond to vectors that are close in distance. There is a limit to the number of edges that a vertex can connect in the graph index. In the graph index, the set of vertices that a vertex can connect to is called a neighborhood, and exploring vertices on the graph is called graph traversal. When data is updated in the graph index, not only the vertex corresponding to the updated data is updated, but also the edges in its neighborhood are added or deleted in order to maintain the constraint on the number of edges.

[0029] The queue information storage unit 13c stores queue data corresponding to each vertex of the graph index. The queue information storage unit 13c stores information about edges that each vertex may potentially connect to through updates as queue data corresponding to a vertex. For example, as illustrated in Figure 3, the queue information storage unit 13c stores information about edges that may potentially connect to a certain vertex. In the example in Figure 3, the data of a vertex that has edges that may potentially connect to a certain vertex "d 2 "d 1 For this, the "distance" to the vertex and the "update content" are associated and stored in memory.

[0030] The control unit 12 has an internal memory for storing programs that define various processing procedures and required data, and executes various processes using these. For example, the control unit 12 has a first update unit 12a, an update completion processing unit 12b, a second update unit 12c, and a search unit 12d. Here, the control unit 12 is an electronic circuit such as a CPU (Central Processing Unit) or MPU (Micro Processing Unit), or an integrated circuit such as an ASIC (Application Specific Integrated Circuit) or FPGA (Field Programmable Gate Array).

[0031] When the first update unit 12a receives update data relating to an update request, it uses the update data to update the first index used for approximate nearest neighbor search. For example, the first update unit 12a updates a hash index (e.g., an LSH index) as the first index. More specifically, when the first update unit 12a receives update data, it reads the LSH index from the LSH index storage unit 13a, updates the LSH index using the update data, and stores the updated LSH index in the LSH index storage unit 13a. The update method performed by the first update unit 12a can be any method and is not limited to any other method.

[0032] The update completion processing unit 12b performs update completion processing when the first update unit 12a has completed updating the first index. For example, as part of the update completion processing, if the LSH index update is completed, the update completion processing unit 12b sends an update completion response to the client 20 that made the update request. Note that the update completion processing is not limited to sending an update completion response to the client 20, but may be any processing.

[0033] The second update unit 12c performs an update asynchronously with respect to the first index, which is a different type of index from the first index and is used for approximate nearest neighbor search, by reflecting multiple update data related to the update request all at once. For example, the second update unit 12c updates a graph index as the second index. More specifically, when the second update unit 12c receives update data, it reads the graph index from the graph index storage unit 13b, updates the graph index using the update data, and stores the updated graph index in the graph index storage unit 13b. The second update unit 12c may also perform processing related to the completion of the update after updating the second index (for example, processing to indicate that the update of the second index is complete).

[0034] Here, the second update unit 12c improves the efficiency of graph updates by reflecting multiple data updates together in the second index. For this reason, the second update unit 12c performs efficient graph updates by managing graph structure updates using a queue and an algorithm that reduces the number of graph update procedures using the queue.

[0035] Here, using Figures 4 and 5, we will explain the conventional graph index update process and the graph index update process by the information processing device of this embodiment. Figure 4 is a diagram illustrating the conventional graph index update process. Figure 5 is a diagram illustrating the graph index update process by the information processing device of this embodiment. As illustrated in Figure 4, the conventional algorithm uses data d 1 d immediately after 2 When it is inserted, delete the part of the graph structure immediately after it is added.

[0036] As illustrated in Figure 5, the information processing device 10 of this embodiment reduces inefficient update processing that involves repeated additions and deletions by reflecting multiple data updates in the graph at once. For example, the information processing device 10 of this embodiment manages the addition and deletion of edges using data from a queue corresponding to each vertex of the graph index. First, when multiple data updates occur and the corresponding graph index structure has not yet been created, the information processing device 10 stores information about edges that a certain vertex may connect to in the queue corresponding to that vertex.

[0037] Then, due to the constraints on the number of edges, the information processing device 10 adds updates to edges that are not currently connected but should eventually be connected, and deletes edges that are currently connected but should not ultimately exist, in order to bring the graph to the state in which the edges should ultimately be connected. In other words, to avoid operations that add and then delete, the information processing device 10 directly compares the current graph structure with the graph structure that should exist when multiple data are reflected, using a queue, and adds or deletes only the minimum number of edges necessary.

[0038] The detailed processing by the second update unit 12c is described below. Note that the update method described later is just one example, and the update method performed by the second update unit 12c may be any method and is not limited to it. First, the second update unit 12c performs updates (for example, adding or deleting vertices) corresponding to the vertices corresponding to the updated data. Then, the second update unit 12c uses the LSH index, the current graph index, and the data in the queue to identify the edges that need to be changed by the updated data, and updates the edges connected to the vertices of the updated data without adding them to the queue.

[0039] Next, the second update unit 12c enqueues data to add or delete an edge to the queue corresponding to the vertex to which the edge that needs to be changed is connected (in the case of adding data, the queue corresponding to the vertex in the vicinity of the vertex to be added). Then, the second update unit 12c checks each queue one by one at any given time and reflects the information of adding or deleting an edge in the queue to the graph index for each queue using the following procedure.

[0040] Here, we will explain the procedure for reflecting the queue information by the second update unit 12c in the graph index. Here, we will explain using the case where only data is added as an example. The second update unit 12c sorts the edges included in the queue in ascending order by distance. For example, using the example in Figure 3, the second update unit 12c sorts the data of the vertex with the shortest distance from the vertex, the edge with a distance of "5", into the graph index. 2 Next, the data for vertices with edges that are short in distance from the vertex, with a distance of "8" is "d 1Sort them in ascending order of distance, such as ",,,, ". Subsequently, the second update unit 12c adds edges to the graph by dequeuing edges until the number of edges of the vertex reaches the upper limit.

[0041] Then, the second update unit 12c compares with the maximum value of the distances of the edges of the vertex. If it is smaller, it deletes the edge with the maximum distance, dequeues one edge from the queue, and adds it to the graph. Also, if the second update unit 12c is larger than the maximum value of the distances of the edges of the vertex, it deletes all the elements in the queue. Note that the above process is repeated until all the elements in the queue become empty.

[0042] Also, the order and method of checking the queues one by one at any timing can be any method, for example, the following methods can be mentioned. - Random or an order based on an arbitrary value such as the number assigned to the vertex - In descending or ascending order of the size of the queue (= the number of elements enqueued in the queue) - In the order in which the vertices are added or in the reverse order - In ascending or descending order of the number of edges connected by the vertex - In ascending or descending order of a value related to distance, such as the minimum value / maximum value / average value of the distance between the vertex and its neighborhood - A method of simultaneously checking multiple queues by means of multi-threading, etc. - A method of checking based on a threshold - A method of checking a queue when its size reaches a certain level or more - A method of checking a queue for which a certain time has elapsed since it was enqueued at the beginning or end, etc. - Other methods that utilize known scheduling techniques (for example, FIFO (First-In First-Out), LIFO (Last In First Out), etc.) - A method of checking by considering these factors in a combined manner

[0043] Also, the structure of the queue can be any structure, for example, the following structures can be mentioned. - Set an upper limit on the size of the queue - Dynamically change the upper limit of the size of the queue (for example, if the number of edges of the vertex is less than the upper limit, reduce the queue size upper limit, and if the number of edges is the same as the upper limit, increase the queue size upper limit) Also, the number of queues and the destination to which the queues are linked are arbitrary. For example, the queues may be linked for each graph instead of for each vertex.

[0044] Here, the process flow of index update by the information processing apparatus 10 of the present embodiment will be described using FIG. 6. FIG. 6 is a diagram for explaining the process flow of index update by the information processing apparatus of the present embodiment. As illustrated in FIG. 6, when the first update unit 12a of the information processing apparatus 10 receives update data related to an index update request from the client 20 (see (1) in FIG. 6), it updates the LSH index stored in the LSH index storage unit 13a using the update data (see (2) in FIG. 6).

[0045] Then, when the update of the LSH index is completed, the update completion processing unit 12b sends a response indicating the completion of the update to the client 20 (see (3) in FIG. 6). Thereafter, the second update unit 12c updates the graph index stored in the graph index storage unit 13b asynchronously with the update of the LSH index using the update data (see (4) in FIG. 6).

[0046] Therefore, as illustrated in FIG. 7, the information processing apparatus 10 of the present embodiment sends a response indicating the completion of the update after the LSH index using the update data is completed. In contrast, as illustrated in FIG. 8, conventionally, a response indicating the completion of the update was sent after both the LSH index and the graph index were updated. FIG. 7 is a diagram for explaining the timing of the response indicating the completion of the update by the information processing apparatus of the present embodiment. FIG. 8 is a diagram for explaining the timing of the conventional response indicating the completion of the update.

[0047] As described above, the information processing apparatus 10 of the present embodiment separates the LSH index and the graph index and updates them independently, thereby improving the index update performance without sacrificing the search performance. That is, the information processing apparatus 10 returns a response indicating the completion of the update at a timing after the update of the LSH index and before the update of the graph index, thereby realizing a high index update throughput and latency equivalent to that of the LSH index, and updating the graph index in the background. As a result, the information processing apparatus 10 achieves both the index update performance and the search performance. Further, the information processing apparatus 10 can improve the efficiency of updating the graph index by updating the graph index using an efficient algorithm that updates a plurality of data together for the update of the graph index.

[0048] Furthermore, although the information processing device 10 of this embodiment has been described using the case of updating the LSH index and graph index as an example, it is not limited to this. For example, as illustrated in Figure 9, when a data update occurs, the information processing device 10 updates one or more arbitrary indexes A to D for each data and returns an update completion response. Subsequently, the information processing device 10 updates one or more arbitrary indexes E to H at any timing. In this way, if indexing technologies with higher update performance or indexing technologies with higher search performance become available in the future, the information processing device 10 can replace the indexing technologies and realize higher performance indexes that utilize the performance of those technologies. Figure 9 is a diagram illustrating the timing of the update completion response by the information processing device of this embodiment.

[0049] Furthermore, as illustrated in Figure 10, for example, the information processing device 10 may change the timing of the update completion response or the architecture of the index itself even while the index is being used. In the example in Figure 10, index A is a full scan, index B is an LSH index, and index C is a graph index. For example, as illustrated in Figure 10, the information processing device 10 can switch to the upper architecture in Figure 10 when the amount of update data is small, and to the lower architecture in Figure 10 when the amount of update data is large. In this case, the information processing device 10 can perform high-speed, high-precision searches using the graph index for data that has been updated up to the graph index, and for data that has not been updated up to the graph index, it can obtain an exact solution quickly using a full scan when the amount of update data is small, and can perform high-speed searches with a certain degree of accuracy using the LSH index when the amount of update data is large. Figure 10 is a diagram illustrating the timing of the update completion response by the information processing device of this embodiment.

[0050] When the search unit 12d receives a search request, it performs a search using the first index updated by the first update unit 12a, and then performs a search using the results of that search and the second index updated by the second update unit 12c. For example, when the search unit 12d receives a search request, it performs a search using the LSH index updated by the first update unit 12a, and then performs a search using the results of that search and the graph index updated by the second update unit 12c. The search method performed by the search unit 12d may be any method, and is not limited to that method.

[0051] Here, the search process flow of the information processing device 10 of this embodiment will be explained using Figure 11. Figure 11 is a diagram illustrating the search process flow of the information processing device of this embodiment. As illustrated in Figure 11, when the search unit 12d of the information processing device 10 receives a search request from the terminal device 30 (see Figure 11(1)), it uses the search request to perform a search on the LSH index stored in the LSH index storage unit 13a (see Figure 11(2)) and obtains the search results (see Figure 11(3)).

[0052] Next, the search unit 12d uses the search request and the acquired search results to perform a search on the graph index stored in the graph index storage unit 13b (see Figure 11 (4)) and acquire the search results (see Figure 11 (5)). Then, the search unit 12d notifies the terminal device 30 of the acquired search results (see Figure 11 (6)).

[0053] Furthermore, the information processing device 10 can utilize the present invention more efficiently by dynamically changing the allocation of computing resources for searching and updating, and the allocation of computing resources for updating arbitrary indexes, depending on the amount of data updates. Similarly, processing methods that utilize the allocation of computing resources, such as parallel processing, can be applied to this embodiment. For example, when there are many data updates, the information processing device 10 can maintain a high update throughput by increasing the allocation of computing resources to indexes processed for each data item, and when there are few data updates, it can quickly reflect unupdated data in the index by increasing the allocation of computing resources to indexes that are updated at arbitrary timings.

[0054] [Processing Procedure of Information Processing Device 10] Next, an example of the processing procedure for the index update process performed by the information processing device 10 will be described using Figure 12. Figure 12 is a flowchart showing an example of the index update process procedure by the information processing device of this embodiment.

[0055] As illustrated in Figure 12, when the first update unit 12a of the information processing device 10 receives an index update request from the client 20 (step S101 affirmative), it updates the LSH index stored in the LSH index storage unit 13a using the update data (step S102).

[0056] Next, once the update completion processing unit 12b has finished updating the LSH index, it sends a response to the client 20 indicating that the update is complete (step S103). Then, the second update unit 12c uses the update data to update multiple data points at once in the graph index stored in the graph index storage unit 13b, asynchronously with respect to the LSH index update (step S104).

[0057] [Effects of the Embodiment] As described above, when the information processing device 10 according to the embodiment receives update data relating to an update request, it updates the first index used for approximate nearest neighbor search using the update data. When the update of the first index is completed, the information processing device 10 performs processing related to the completion of the update. Subsequently, asynchronously with the update of the first index, the information processing device 10 performs an update to a second index, which is of a different type from the first index and is used for approximate nearest neighbor search, by reflecting multiple update data relating to the update request all at once.

[0058] This allows the information processing device 10 to improve index update performance without sacrificing search performance. For example, the information processing device 10 can achieve both high index update performance and high search performance in vector searches. In addition, the information processing device 10 can absorb the time-dependent increase and decrease in the amount of data updated. Furthermore, for example, the information processing device 10 can achieve index update performance equivalent to that of an LSH index, and after some time has passed, search performance equivalent to that of a graph index. In this way, the information processing device 10 enables users to search a larger amount of up-to-date data, handles the increase in data volume accompanying the expansion of AI technology use, and enables application to new use case areas.

[0059] In other words, the information processing device 10 updates the graph index in the background while achieving high index update throughput and latency equivalent to that of the LSH index by returning an update completion response at a timing after the LSH index update but before the graph index update. This allows the information processing device 10 to balance index update performance and search performance. Furthermore, since the graph index update occurs after the update completion response, the information processing device 10 utilizes the fact that not updating the graph index immediately in response to data updates does not affect the update completion response. By implementing a new algorithm that updates the graph index for multiple data points at once, it achieves further efficiency improvements in graph index updates, which were previously difficult.

[0060] [System Configuration, etc.] Each component of the illustrated device according to the above embodiment is a functional concept and does not necessarily have to be physically configured as shown. In other words, the specific form of distribution and integration of each device is not limited to that shown, and all or part of it can be functionally or physically distributed and integrated in any unit according to various loads and usage conditions. Furthermore, each processing function performed by each device can be implemented in whole or in any part by a CPU and a program that is analyzed and executed by the CPU, or by hardware using wired logic.

[0061] Furthermore, among the processes described in the above embodiments, all or part of the processes described as being performed automatically can be performed manually, or all or part of the processes described as being performed manually can be performed automatically by known methods. In addition, the processing procedures, control procedures, specific names, and information including various data and parameters shown in the above documents and drawings can be arbitrarily changed unless otherwise specified.

[0062] [Program] Alternatively, a program can be created that describes the processing performed by the information processing device described in the above embodiment in a language that can be executed by a computer. In this case, the same effects as in the above embodiment can be obtained by the computer executing the program. Furthermore, the same processing as in the above embodiment may be realized by recording such a program on a computer-readable recording medium and having the computer read and execute the program recorded on this recording medium.

[0063] Figure 13 shows a computer running a program. As illustrated in Figure 13, the computer 1000 includes, for example, memory 1010, CPU 1020, hard disk drive interface 1030, disk drive interface 1040, serial port interface 1050, video adapter 1060, and network interface 1070, all of which are connected by a bus 1080.

[0064] The memory 1010 includes a ROM (Read Only Memory) 1011 and a RAM 1012, as illustrated in Figure 13. The ROM 1011 stores, for example, a boot program such as a BIOS (Basic Input Output System). The hard disk drive interface 1030 is connected to the hard disk drive 1031, as illustrated in Figure 13. The disk drive interface 1040 is connected to the disk drive 1041, as illustrated in Figure 13. For example, a removable storage medium such as a magnetic disk or an optical disk is inserted into the disk drive 1041. The serial port interface 1050 is connected to, for example, a mouse 1051 and a keyboard 1052, as illustrated in Figure 13. The video adapter 1060 is connected to, for example, a display 1061, as illustrated in Figure 13.

[0065] Here, as illustrated in Figure 13, the hard disk drive 1031 stores, for example, the OS 1091, the application program 1092, the program module 1093, and the program data 1094. That is, the above program is stored in the hard disk drive 1031 as a program module in which instructions to be executed by the computer 1000 are described.

[0066] Furthermore, the various data described in the above embodiment are stored as program data in, for example, memory 1010 or hard disk drive 1031. The CPU 1020 then reads the program module 1093 and program data 1094 stored in memory 1010 or hard disk drive 1031 into RAM 1012 as needed and executes various processing procedures.

[0067] Furthermore, the program module 1093 and program data 1094 related to the program are not limited to being stored on the hard disk drive 1031, but may also be stored on a removable storage medium and read by the CPU 1020 via a disk drive or the like. Alternatively, the program module 1093 and program data 1094 related to the program may be stored on another computer connected via a network (LAN (Local Area Network), WAN (Wide Area Network), etc.) and read by the CPU 1020 via the network interface 1070.

[0068] Although embodiments applying the invention made by the present inventors have been described above, the present invention is not limited by the descriptions and drawings that constitute part of the disclosure of the present invention in this embodiment. That is, all other embodiments, examples, and operational techniques made by those skilled in the art based on this embodiment are included in the scope of the present invention.

[0069] 10 Information processing device 11 Communication processing unit 12 Control unit 12a First update unit 12b Update completion processing unit 12c Second update unit 12d Search unit 13 Storage unit 13a LSH index storage unit 13b Graph index storage unit 13c Queue information storage unit 20 Client 30 Terminal device

Claims

1. An information processing device comprising: a first update unit that, upon receiving update data relating to an update request, updates a first index used for approximate nearest neighbor search using said update data; an update completion processing unit that performs processing related to the completion of the update when the update of the first index is completed by the first update unit; and a second update unit that, asynchronously with the update of the first index, updates a second index of a different type from the first index, which is used for approximate nearest neighbor search, by reflecting a plurality of update data relating to the update request in a single batch.

2. The information processing apparatus according to claim 1, characterized in that the first update unit updates a hash index as the first index, and the second update unit updates a graph index as the second index.

3. The information processing apparatus according to claim 1, wherein the update completion processing unit, as a process related to the completion of the update, provides an update completion response to the device that made the update request when the update of the first index is completed.

4. The information processing apparatus according to claim 1, further comprising a search unit that, upon receiving a search request, performs a search using the first index updated by the first update unit, and performs a search using the results of the search and the second index updated by the second update unit.