Method and apparatus for multiprocessing for vector database system

KR103003323B1Active Publication Date: 2026-08-11DINOTICIA CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
KR1020240066803
Authority / Receiving Office
KR · KR
Patent Type
Patents
Current Assignee / Owner
Filing Date
2024-05-23
Publication Date
2026-08-11
Estimated Expiration
2044-05-23

Smart Images

  • Figure 112024055640167-PAT00001_ABST
    Figure 112024055640167-PAT00001_ABST
Patent Text Reader

Abstract

A device for multiprocessing vector data comprises: a vector loading unit that loads each vector data into a computation memory from a database storing one or more vector data; and a parallel computation unit that calculates the similarity between the vector data loaded into the computation memory and the query vector data received through a query; wherein the parallel computation unit is characterized by simultaneously calculating the similarity of the loaded vector data as many times as the number of ways.
Need to check novelty before this filing date? Find Prior Art

Description

Technology Field

[0001] The present invention relates to a method and apparatus for supporting multiprocessing in a vector database system. Specifically, the present invention relates to a method for multiprocessing vector data (e.g., feature vectors, etc.) generated or intermediately generated by an artificial intelligence model. Background Technology

[0002] Over the past few years, Artificial Intelligence (AI) has been cited globally as the most promising technology and a core component of the Fourth Industrial Revolution. The biggest challenge facing this AI technology is computing performance. For AI technology to realize human learning, reasoning, perception, and natural language processing capabilities, rapidly processing large amounts of data is paramount.

[0003] Although the central processing unit (CPU) or graphics processing unit (GPU) of conventional computers was used for deep learning training and inference in early artificial intelligence, there are limitations to deep learning training and inference tasks that have high workloads, so neural processing units (NPUs) that are structurally specialized for deep learning tasks are gaining attention.

[0004] In this regard, Registered Patent Publication No. 10-1981109 serves as a prior art document. The problem to be solved

[0005] The object of the present invention is to provide a method and apparatus that support multiprocessing in a vector database system. means of solving the problem

[0006] To solve the above-mentioned problem, a vector data multiprocessing device according to embodiments may include: a vector loading unit that loads each vector data into a computation memory from a database storing one or more vector data; and a parallel computation unit that calculates the similarity between the vector data loaded into the computation memory and the query vector data received through a query; wherein the parallel computation unit may be characterized by simultaneously calculating the similarity of the loaded vector data as many times as the number of ways.

[0007] Furthermore, the vector loading unit according to the embodiments may be characterized by determining the number of ways based on the size of the dimension of the one or more vector data, and loading the one or more vector data in the number of ways determined from the one or more vector data.

[0008] Furthermore, the vector loading unit according to the embodiments may be characterized by determining the number of ways inversely proportional to the dimension size of the one or more vector data.

[0009] Additionally, the vector data multiprocessing device according to the embodiments may further include an address translation unit that translates a physical address indicating a channel in the computation memory to load the vector data and a location to be loaded within the channel based on an identifier of the vector data to be loaded; and the vector loading unit may be characterized by loading the vector data into the computation memory at the physical address translated by the address translation unit.

[0010] Additionally, the vector loading unit according to the embodiments can load each vector data into the channel where each vector data is loaded according to an interleaving operation, based on the physical address of each vector data to be loaded into the computation memory.

[0011] Meanwhile, according to the embodiments, if the number of channels is greater than the number of ways, the interleaving method allows each vector data to be divided and stored across multiple channels.

[0012] In addition, when the number of channels is greater than the number of ways, the parallel computing unit may be characterized by calculating the similarity between the data stored in each channel and the query vector data in parallel, and merging the results calculated for each channel to derive the similarity result for each way. Effects of the invention

[0013] A system for multi-processing vector data and sorting the results according to the embodiments (hereinafter referred to as the system according to the embodiments) has the effect of efficiently processing multiple vector data and maximizing the speed of comparison operations to provide the user with fast and accurate similarity calculation results.

[0014] The system according to the embodiments improves computational speed by multi-processing vector data, provides the effect of supporting fast similarity calculations even in large datasets, and is effective for real-time search systems and large-scale data analysis.

[0015] The system according to the embodiments can process various types of input data by converting unstructured data or some structured data into a vector format through a data embedding unit, making it universally applicable regardless of the data format, and in particular, allows various data types such as text, images, and voice to be vectorized and utilized for similarity calculations.

[0016] The system according to the embodiments analyzes the calculated similarity results in real time through the vector data alignment unit (203) and aligns the vector data according to the similarity results, thereby enabling the rapid provision of information required by the user. That is, it aligns the vector data according to the similarity criteria required by the user and supports intuitive verification of the results.

[0017] The system according to the embodiments maximizes the efficiency of memory usage and appropriately distributes and manages memory resources according to the dimensions of the vector data. Accordingly, it can resolve memory overload problems that may occur during the processing of high-dimensional vector data and ensure the stability of the system. Brief explanation of the drawing

[0018] FIG. 1 is a diagram showing a device (or system) that multiprocesses vector data and sorts the results. FIG. 2 is a flowchart showing the operation process of a system according to embodiments. Figure 3 illustrates a process of multi-processing vector data according to embodiments. Figure 4 illustrates a process of multi-processing vector data according to embodiments. Figure 5 illustrates a process of multi-processing vector data according to embodiments. FIG. 6 illustrates a method for multi-processing vector data according to embodiments. FIG. 7 illustrates a method for aligning similarity information by vector data according to embodiments. FIG. 8 illustrates a method for aligning similarity information by vector data according to embodiments. FIG. 9 illustrates a method for aligning similarity information by vector data according to embodiments. FIG. 10 illustrates a method for aligning similarity information by vector data according to embodiments. FIG. 11 is an example of a configuration diagram of a system or server according to embodiments. Specific details for implementing the invention

[0019] The present invention is susceptible to various modifications and may have various embodiments; specific embodiments are illustrated in the drawings and described in detail in the detailed description. However, this is not intended to limit the invention to specific embodiments, and it should be understood that the invention includes all modifications, equivalents, and substitutions that fall within the spirit and scope of the invention. Similar reference numerals have been used for similar components in the description of each drawing.

[0020] Terms such as first, second, A, B, etc., may be used to describe various components, but the components should not be limited by these terms. The terms are used solely for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be named the second component, and similarly, the second component may be named the first component. The term "and / or" includes a combination of multiple related described items or any of the multiple related described items.

[0021] When it is stated that one component is "connected" or "connected" to another component, it should be understood that while it may be directly connected or connected to that other component, there may also be other components in between. On the other hand, when it is stated that one component is "directly connected" or "directly connected" to another component, it should be understood that there are no other components in between.

[0022] The terms used in this application are used merely to describe specific embodiments and are not intended to limit the invention. The singular expression includes the plural expression unless the context clearly indicates otherwise. In this application, terms such as "comprising" or "having" are intended to specify the presence of the features, numbers, steps, actions, components, parts, or combinations thereof described in the specification, and should be understood as not precluding the existence or addition of one or more other features, numbers, steps, actions, components, parts, or combinations thereof.

[0023] Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as generally understood by those skilled in the art to which the present invention pertains. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with their meaning in the context of the relevant technology, and should not be interpreted in an ideal or overly formal sense unless explicitly defined in this application.

[0024] The present invention relates to an apparatus or system for multi-processing vector data and sorting the results. Specifically, the present invention relates to a multi-processing system for extracting vector data most similar to a queried vector data from a plurality of vector data stored in a database or storage unit (memory, etc.), or for rapidly calculating the similarity between a plurality of vector data.

[0025] The present invention enables rapid operation between multiple vector data configured in multiple dimensions and promotes efficient memory usage and task execution by adaptively controlling memory usage according to the dimensions of the vector data.

[0026] Meanwhile, although the terms 'multi-processing' and 'multi-processing' have been used interchangeably in this specification, both meanings can be interpreted as having the same meaning.

[0027] FIG. 1 is a diagram showing a device (or system) that multiprocesses vector data and sorts the results.

[0028] FIG. 1 shows the configuration of a device (hereinafter referred to as ‘device according to embodiments’) (10) for multi-processing vector data and sorting the results. Referring to FIG. 1, the device (10) according to embodiments extracts the vector data most similar to the queried vector data from a plurality of vector data stored in a database or storage unit (memory, etc.) or quickly calculates the similarity with the plurality of vector data.

[0029] The device (10) according to the embodiments includes at least one of a database unit (100), a data input unit (101), a data embedding unit (102), a vector data multi-processing unit (103), a vector data alignment unit (104), and an output unit (105).

[0030] The database unit (100) stores vector data to perform comparison operations or similarity operations with the queried vector data. The database unit (100) can store multiple vector data in the form of a database. The database unit (100) may be in the form of a database or in the form of non-volatile memory.

[0031] The data input unit (101) can receive a query of a certain form or vector data to be queried from the user.

[0032] Meanwhile, the data input unit (101) may receive vector data from a user, but may also receive data of a different form (unstructured data or some structured data) that is not in the form of vector data. In this case, the data input unit (101) transmits this to the data embedding unit (102), and the data embedding unit (102) can embedding or convert the received data into vector data.

[0033] The vector data multiprocessing unit (103) can perform a comparison operation or a similarity operation with multiple vector data to be searched, using vector data received by the data input unit (101) or vector data embedded by the data embedding unit (102).

[0034] The vector data multiprocessing unit (103) can perform a similarity operation with each of the vector data (hereinafter referred to as 'candidate vector data') stored in the database unit (100) with the queried vector data. At this time, the vector data multiprocessing unit (103) can perform a similarity operation with each candidate vector data one by one, but can load multiple candidate vector data at once and perform a similarity operation with the queried vector data for each candidate vector data at once.

[0035] The vector data sorting unit (104) stores the similarity calculated by the vector data multiprocessing unit (103) and sorts the candidate vector data according to the stored similarity in a preset order. The output unit (105) outputs and presents the results sorted by the vector data sorting unit (104) to the user.

[0036] Meanwhile, the vector data multiprocessing unit (103) performs similarity calculations for a predetermined number of vector data (number of ways) at regular intervals. A way may represent the number of candidate vector data that are calculated simultaneously at once or per specific number of cycles (clocks) in the vector data multiprocessing unit (103).

[0037] For example, when the vector data multiprocessing unit (103) performs multiprocessing in a 4-way manner, it loads four candidate vector data from the database unit (100), performs a similarity operation with each of them and the queried vector data simultaneously, and then transmits the result to the vector data sorting unit (104). At this time, the vector data sorting unit (104) sorts the vector data in real time based on the similarity result received from the vector data multiprocessing unit (103).

[0038] At this time, the vector data multiprocessing unit (103) includes a vector loading unit (103a), an address conversion unit (103b), and a parallel calculation unit (103c).

[0039] The vector loading unit (103a) loads candidate vector data from the database unit (100) in a predetermined number (e.g., the number of ways). At this time, the vector loading unit (103a) can determine the number of ways based on the number of dimensions of the candidate vector data or the queried vector data (or embedded vector data) or the size of the data.

[0040] The vector loading unit (103a) of the vector data multiprocessing unit (103) loads one or more candidate vector data into an operation memory (not shown). Since the size of the operation memory is fixed, the more ways there are, the smaller the size of the vector data that can be loaded per way. Conversely, the fewer ways there are, the larger the size of the vector data that can be loaded per way. Therefore, the vector loading unit (103a) can determine the number of ways to be inversely small as the dimension of the candidate vector data increases, and conversely, the number of ways to be inversely large as the dimension of the candidate vector data decreases.

[0041] At this time, the address translation unit (103b) can calculate the address of the location where candidate vector data will be loaded within the computation memory. If the vector loading unit (103a) loads four candidate vector data into the computation memory in four ways, it can determine the physical address to be located within the computation memory for each of the four candidate vector data beforehand.

[0042] The parallel computation unit (103c) can perform a similarity calculation for each of the one or more vector data loaded into the computation memory by performing a computation with the queried vector data.

[0043] Meanwhile, the computational memory includes multiple channels, and each channel represents a unit of the memory area where similarity calculation operations are performed. In other words, the computational memory area consists of multiple channels, but similarity calculations are performed on a channel-by-channel basis.

[0044] Accordingly, vector data loaded in one way may be loaded into one channel (performing 16-way multiprocessing in a computation memory equipped with 16 channels), or it may be loaded across multiple channels (performing 8-way multiprocessing in a computation memory equipped with 16 channels). In the former case, similarity calculations can be performed for each channel, and the results can be transmitted to the vector data alignment unit (104). However, in the latter case, since one candidate vector data is distributed across two channels and the data is divided into two parts and similarity calculations are performed only on each divided part, the two calculated results can be merged using an adder or a merger, and the merged result can be transmitted to the vector data alignment unit (104).

[0045] The specific operation of the specific vector data multi-processing unit (103) and the vector data alignment unit (104) will be explained in FIGS. 2 to 10.

[0046] The device according to the embodiments can perform operations between multiple vector data quickly and simultaneously with this configuration, and promotes efficient memory usage and task execution by adaptively controlling memory usage according to the dimensions of the vector data.

[0047] FIG. 2 is a flowchart showing the operation process of a system according to embodiments.

[0048] Specifically, FIG. 2 is a diagram showing the operation flow of a device that multi-processes vector data and sorts the results, that is, a device according to embodiments.

[0049] Referring to FIG. 2, the device according to the embodiments includes a data embedding unit (201), a vector data multiprocessing unit (202), a database unit (202a), and a vector data alignment unit (203).

[0050] Referring to FIG. 2, the data embedding unit (201) according to the embodiments receives raw data and converts it into query vector data. For example, the data embedding unit (201) can embed unstructured data in a vector format and convert it into a form suitable for comparing similarity of data.

[0051] Referring to FIG. 2, the vector data multiprocessing unit (202) according to the embodiments receives a converted query vector from the data embedding unit (201) and performs a comparison operation with a plurality of candidate vector data stored in the database unit (202a). The vector data multiprocessing unit (202) calculates the similarity between the input query vector and each of the candidate vector data in the database unit (202a), and the result of this similarity calculation is stored in the result data (202b).

[0052] Referring to FIG. 2, the database unit (202a) according to the embodiments stores a plurality of vector data and provides vector data to be used for comparison operations in the vector data multiprocessing unit (202). The vector data sorting unit (203) receives a similarity result (202b) calculated by the vector data multiprocessing unit (202) and sorts the vector data (or similarity information) according to a preset standard. The vector data sorting unit (203) provides the results so that the user can easily understand the sorted similarity information or vector data information.

[0053] In summary, the device according to the embodiments may operate as follows. First, the data embedding unit (201) receives raw data. The data embedding unit (201) converts the input raw data into a vector format and converts it into a query vector. The converted query vector is transmitted to the vector data multiprocessing unit (202). The vector data multiprocessing unit (202) retrieves candidate vector data from the database unit (202a) and calculates the similarity with the query vector. The calculated similarity result is stored in the result data (202b). The vector data sorting unit (203) receives the result data (202b) and sorts the information according to the similarity value. The sorted information is finally provided to the user.

[0054] Figure 3 is a diagram showing the internal components and data flow of a vector data multiprocessing device.

[0055] Specifically, FIG. 3 shows the internal configuration and data flow of a device for multi-processing vector data. Referring to FIG. 3, the device according to the embodiments includes an address translation unit (301), a vector loading unit (302), an arithmetic memory (303), calculation modules (304), and a switch unit (305).

[0056] Referring to FIG. 3, the address conversion unit (301) according to the embodiments may correspond to the address conversion unit (103b) described in FIG. 1. The address conversion unit (301) according to the embodiments calculates and generates the physical address of candidate vector data to be loaded from the database. That is, the address conversion unit (301) according to the embodiments converts the address (i.e., physical address) where the candidate vector data is located in the computation memory (303) based on the identifier information (ID) of the candidate vector data in the database.

[0057] Referring to FIG. 3, the vector loading unit (302) according to the embodiments loads candidate vector data from a database to the location (i.e., physical address) received from the address translation unit (301). The vector loading unit (302) loads the loaded vector data into the computation memory (303).

[0058] Referring to FIG. 3, the computation memory (303) according to the embodiments is composed of a plurality of channels (in FIG. 3, it is composed of a first channel, a second channel, a third channel, and a fourth channel, but is not limited thereto), and each channel represents a memory area that performs similarity calculations in parallel. The computation memory (303) distributes and stores loaded vector data to each channel.

[0059] FIG. 3 illustrates a 2-way multiprocessing method in which two candidate vector data (300a, 300b) are loaded into the computation memory and the two candidate vector data (300a, 300b) are computed simultaneously. The address translation unit (301) translates the address to be located in the computation memory (303) for each of the two candidate vector data (300a, 300b). At this time, since the computation memory (303) includes four channels, the address translation unit divides the two candidate vectors into four data pieces and determines which physical address the four piece data is loaded into within each channel of the computation memory (i.e., the physical address to be loaded for each of the four piece data).

[0060] At this time, the vector load unit (302) or the address conversion unit (302) can determine the number of ways by considering the dimension size and data size of the candidate vector data (300a, 300b). The vector load unit (302) or the address conversion unit (302) can determine the number of channels to occupy per candidate vector data based on the determined number of ways.

[0061] Subsequently, the calculation modules (304) according to the embodiments perform a similarity calculation between the vector data stored in the calculation memory (303) and the query vector data. Each calculation module calculates the similarity in parallel using the vector data of the corresponding channel and transmits the result to the switch unit (305). Referring to FIG. 3, the switch unit (305) according to the embodiments integrates the similarity calculation results received from each calculation module (304) to generate a final result. The switch unit (305) transmits the similarity calculation results to the vector data alignment unit (203 in FIG. 2) so that they can be aligned and output.

[0062] Figure 4 illustrates a process of multi-processing vector data according to embodiments.

[0063] Specifically, FIG. 4 illustrates the internal configuration and operation flow of a device that processes vector data multiple times and calculates the results, and stores the calculated results. Referring to FIG. 4, the device according to the embodiments includes a vector data multiple processing unit (401) and a similarity result unit (402) that stores the similarity calculated results.

[0064] Referring to FIG. 4, a vector data multiprocessing unit (401) according to embodiments can perform parallel processing of multiple vector data (such as similarity calculations with queried vector data). The vector data multiprocessing unit (401) includes multiple operation modules, and FIG. 4 illustrates an embodiment in which each module processes 8-dimensional vector data in parallel.

[0065] The vector data multiprocessing unit (401) according to the embodiments receives and processes the queried vector data (401a). The vector data multiprocessing unit (401) loads the vector data (401a) and performs a comparison operation with a plurality of candidate vector data (401b) stored in the computation memory. Referring to FIG. 4, the vector data multiprocessing unit (401) loads each candidate vector data (401b) simultaneously and performs a similarity operation in parallel. Each computation module processes the 8-dimensional elements of the corresponding vector data in parallel and generates a similarity operation result. The calculated similarity result is stored in the similarity result unit (402).

[0066] FIG. 4 illustrates the process of storing four similarity result vectors (Vector [0], Vector [1], Vector [2], Vector [3]) in the similarity result unit (402). Each vector data is processed through a plurality of operation modules, and the similarity operation results are stored in the similarity result unit (402) in real time. The similarity result unit (402) according to the embodiments stores the similarity results generated by each operation module and provides final similarity information based thereon. The similarity result unit (402) includes values ​​representing the similarity of each vector data, and these values ​​are subsequently transmitted to the vector data alignment unit (e.g., 203 in FIG. 2) for alignment and output.

[0067] To summarize, the device according to the embodiments first receives the queried vector data (401a) from the vector data multiprocessing unit (401). The vector data multiprocessing unit (401) loads the input vector data into a computation memory and performs a similarity calculation in parallel with a plurality of candidate vector data (401b). The result of the similarity calculation is stored in the similarity result unit (402). The similarity result unit (402) stores the similarity results generated from each computation module and provides final similarity information based thereon. This similarity information is transmitted to the vector data alignment unit (203 in FIG. 2), and based on this, the vector data is aligned and output.

[0068] Figure 5 illustrates a process of multi-processing vector data according to embodiments.

[0069] Specifically, FIG. 5 illustrates the burst cycle and channel configuration of the similarity calculator (500), the data width, and the data access and processing methods in various way methods (1 way, 2 way, 4 way).

[0070] Referring to FIG. 5, a similarity calculator (500) according to embodiments processes vector data in parallel through a plurality of channels (501). The similarity calculator (500) reads and writes data during a plurality of burst cycles, and each burst cycle is a unit that transmits data during several consecutive clock cycles.

[0071] Referring to FIG. 5, the similarity calculator (500) includes a plurality of channels (501). Each channel can independently perform data transmission and computation, and the computation speed is maximized by processing data in parallel through the plurality of channels. The channel configuration (501) is defined by the number of channels per memory chip (# Channels / Chip) and the data width per channel (Data Width). Each channel (501) has a physical data width (502), which represents the amount of data that can be transmitted in each channel. The data width is determined by the number of DIMMs per channel (# DIMMs / Channel), and the data width of the entire memory chip is defined as the product of the number of channels and the data width of each channel.

[0072] Figure 5 illustrates a 1-way (503a), 2-way (503b), and 4-way (503c) multiprocessing method. This method represents a parallel processing method of data based on the dimensions of the vector data and the number of channels of the computation memory.

[0073] For example, the 1-way (503a) method is a method that uses a single channel to process the entire dimension of the data sequentially. Although this method has low memory bandwidth and a limited amount of data that can be processed per cycle, it can perform operations efficiently when the dimension of the vector data is high or the size is large.

[0074] For example, the 2-way method (503b) is a method that uses two channels to process half of the data in parallel. Each channel processes half the dimension of one vector data, and the results of the two channels are merged to derive the final similarity result. This method is faster than the 1-way method (503a) and has high memory bandwidth utilization, but the number of dimensions available for computation may be somewhat limited.

[0075] For example, the 4-way (503c) method uses four channels to process one-quarter of the data in parallel. Each channel processes one-quarter of the dimension of the vector data, and the results of the four channels are merged to derive the final similarity result. This method has the highest multi-processing efficiency and is suitable for large-scale data operations, but the number of dimensions available for operations may be more limited.

[0076] A similarity calculator (500) according to embodiments may operate as follows. First, the similarity calculator (500) processes data in parallel through a plurality of channels (501). Each channel independently performs data transmission and computation, and transmits data according to the physical data width (502). According to the 1-way, 2-way, and 4-way methods, the similarity calculator (500) divides the dimensions of the data and processes them in parallel, and merges the results computed in each channel to generate a final similarity result.

[0077] In this way, the device according to the embodiments supports efficient processing of vector data and similarity calculation processes by utilizing a memory access method and a multiprocessing method for similarity calculation as described above.

[0078] FIG. 6 illustrates a method for multi-processing vector data according to embodiments.

[0079] Specifically, FIG. 6 is a flowchart illustrating the operation of a method for multi-processing vector data according to embodiments. Some or all of the operations shown in FIG. 6 may be performed by an apparatus according to embodiments.

[0080] The method according to the embodiments can determine (601) the number of ways to perform multiprocessing based on the size of the dimension of one or more vector data. Subsequently, the method according to the embodiments can convert (602) a physical address indicating a channel in the computation memory to load the vector data and a location to load within the channel based on an identifier of the vector data to be loaded (e.g., identifier (ID) information of candidate vector data stored in a database). At this time, the method according to the embodiments can load the vector data into the computation memory using the physical address converted by the address conversion unit.

[0081] Subsequently, the method according to the embodiments can load each vector data into the computation memory (603) according to the number of ways determined as above. Subsequently, the method according to the embodiments calculates (604) the similarity between the vector data loaded into the computation memory and the query vector data received. In step 604, the similarity of the loaded vector data is calculated simultaneously according to the number of ways.

[0082] At this time, the method according to the embodiments determines the number of ways based on the size of the dimension of one or more vector data, and can load the one or more vector data in the number of ways determined from the one or more vector data. Furthermore, the method according to the embodiments can determine the number of ways inversely proportional to the size of the dimension of one or more vector data.

[0083] Furthermore, the method according to the embodiments can load each vector data into the channel where it is loaded according to an interleaving operation, based on the physical address of each vector data to be loaded into the computation memory. Here, if the number of channels is greater than the number of ways, the interleaving method may divide each vector data and store it across multiple channels. In this case, the method according to the embodiments can calculate the similarity between the data stored in each channel and the query vector data in parallel, and merge the results calculated for each channel to derive the similarity result for each way.

[0084] A system for multi-processing vector data and sorting the results according to the embodiments (hereinafter referred to as the system according to the embodiments) has the effect of efficiently processing multiple vector data and maximizing the speed of comparison operations to provide the user with fast and accurate similarity calculation results.

[0085] The system according to the embodiments improves computational speed by multi-processing vector data, provides the effect of supporting fast similarity calculations even in large datasets, and is effective for real-time search systems and large-scale data analysis.

[0086] The system according to the embodiments can process various types of input data by converting unstructured data or some structured data into a vector format through a data embedding unit, making it universally applicable regardless of the data format, and in particular, allows various data types such as text, images, and voice to be vectorized and utilized for similarity calculations.

[0087] The system according to the embodiments enables the rapid provision of information required by the user by aligning vector data in real time based on calculated similarity results through the vector data alignment unit (203). That is, it supports aligning vector data according to the similarity criteria required by the user and allowing the result to be intuitively verified.

[0088] The system according to the embodiments maximizes the efficiency of memory usage and appropriately distributes and manages memory resources according to the dimensions of the vector data. Accordingly, it can resolve memory overload problems that may occur during the processing of high-dimensional vector data and ensure the stability of the system.

[0089] Figures 7 to 10 below illustrate a method of aligning candidate vector data by a vector data alignment unit (104) based on similarity values ​​for candidate vector data derived by a vector data multi-processing unit (103).

[0090] When it is necessary to output candidate vector data similar to the query vector data queried by the user, the device according to the embodiments needs to derive a priority or sorting order of the vector data based on similarity values ​​derived for similar candidate vector data.

[0091] Below, the operation of the vector data alignment unit (104) shown in FIG. 1 and the vector data alignment unit (203) shown in FIG. 2 will be explained in detail.

[0092] FIG. 7 illustrates a method for aligning vector data based on similarity information for each vector data according to embodiments.

[0093] Referring to FIG. 7, the vector data alignment unit according to the embodiments searches from the initial position of the memory buffer and inserts the values ​​at the appropriate position whenever similarity values ​​for candidate vector data are derived by the vector data multiprocessing unit (103).

[0094] Specifically, the vector data alignment unit according to the embodiments can be performed in the order of FIGS. 7(A) to FIGS. 7(C). First, referring to FIGS. 7(A), when the vector data alignment unit according to the embodiments receives a first similarity value for the first candidate vector data, it searches sequentially starting from the first position of the memory buffer (in FIG. 7, the position occupied by ID=7 and a similarity value of 0.5). Referring to FIG. 7(B), the vector data alignment unit according to the embodiments searches sequentially until a first similarity value to be inserted is found that is greater than the similarity value to be searched. Referring to FIG. 7(B), since the first similarity value to be inserted is 0.7, it searches sequentially until a similarity value (0.9) greater than 0.7 is confirmed. Then, referring to FIG. 7(C), the vector data alignment unit according to the embodiments, when it finds a similarity value greater than the first similarity value, moves all data stored after the similarity value one position at a time, and after all are moved, stores the first similarity value and the ID value of the corresponding candidate vector data together in the last searched position.

[0095] In this case, if the size of the memory buffer is fixed or a storage range is pre-set, data can be stored only up to the boundary corresponding to the fixed or pre-set range, and data exceeding the boundary can be discarded.

[0096] The device according to the embodiments can sort similarity values ​​and candidate vector data according to the method shown in FIG. 7. However, the method shown in FIG. 7 has a problem in that, in the worst case during the sorting process, all data must be shifted one step at a time, resulting in a time complexity proportional to the square of the data size. Accordingly, the present specification proposes the embodiments shown in FIG. 8 and FIG. 9.

[0097] FIG. 8 illustrates a method for aligning similarity information by vector data according to embodiments.

[0098] FIG. 8 is a diagram illustrating a method in which a vector data alignment unit (103) of a device according to embodiments efficiently aligns vector data based on similarity values. Specifically, FIG. 8 illustrates an operation (801) in which a vector data alignment unit (103) of a device according to embodiments converts or defines a similarity value (e.g., a distance value) into a memory address to store data.

[0099] Referring to FIG. 8, the vector data alignment unit according to Embodiment 1 converts similarity values ​​into memory addresses and stores them, thereby enabling the determination of the relative order of vector data and efficient alignment without complex alignment operations such as separate movement operations as in FIG. 7.

[0100] Referring to FIG. 8, the vector data alignment unit according to Embodiment 1 can check (800) the similarity values ​​calculated and derived simultaneously and the IDs of the corresponding candidate vector data, and map the similarity values ​​to physical addresses in the buffer memory (801). At this time, if the similarity value is an integer, it is converted to a physical address, but if it is not an integer, it can be converted to a physical address by performing regularization or mapping (hashing, etc.) to an integer. At this time, if there is an ID of another vector data at the corresponding physical address, it can be stored (801a) in the next row of the column corresponding to the physical address.

[0101] Referring to FIG. 8, first, 7 as a new similarity value (or, normalized / mapped similarity value) and the ID (14) of the corresponding vector data are input. Then, the vector data alignment unit according to the embodiments converts the input similarity value into a memory address. In FIG. 8, the address corresponding to the similarity value (0.7) is converted to

[07] . Then, the vector data alignment unit stores the similarity value and the ID at the converted address location (

[07] ). In this process, if data with the same similarity value already exists, a new ID with the same value is stored in the next row of the corresponding address space.

[0102] The buffer memory space according to the embodiments is managed in two dimensions, and there may be a limit on the maximum number of storage units. For example, in the case of an INT8 system, a space capable of storing 256 similarity values ​​may be provided. This requires 256 x 2^k storage spaces, and data having the same similarity value is sequentially stored in the next address space.

[0103] In this way, the operation of the vector data alignment unit according to the embodiments shown in FIG. 8 can perform efficient alignment of vector data by compensating for the disadvantages of the method as in FIG. 7. Through this, the overall computation speed can be improved, and efficient alignment can be performed even on large datasets.

[0104] FIG. 9 illustrates a method for aligning vector data based on similarity information for each vector data according to embodiments.

[0105] FIG. 9 illustrates a method in which a vector data alignment unit according to embodiments aligns vector data based on similarity information for each vector data. Specifically, FIG. 9 illustrates a method in which a vector data alignment unit (103) of a device according to embodiments stores data by converting a similarity value (e.g., a distance value) into a memory address when the similarity value is a real number.

[0106] Referring to FIG. 9, the vector data alignment unit according to the embodiments generates a memory address using the mantissa and exponent parts of the real number when the similarity value is a real number. Through this, the relative order of vector data can be automatically aligned based on the similarity value.

[0107] Referring to FIG. 9, the vector data alignment unit according to the embodiments receives a similarity value of 0.7 and the ID 14 of the corresponding vector data. The vector data alignment unit according to the embodiments separates the input similarity value into a mantissa and an exponent through a real number normalization process (901).

[0108] In the real number normalization process (901), the similarity value 8.58… is divided into an exponent part and a mantissa part. Afterwards, the vector data alignment unit generates memory addresses by assigning the mantissa part to the first axis of memory (e.g., row axis) and the exponent part to the second axis of memory (e.g., column axis). In FIG. 9, the mantissa part is converted and stored at a location corresponding to the first axis of memory (horizontal axis in FIG. 9).

[0109] Referring to FIG. 9, the corresponding similarity value and ID are stored at the converted address location. In this process, if data with the same similarity value already exists, it may be stored in the next address row to avoid conflict with the existing data.

[0110] The buffer memory space according to the embodiments is managed in two dimensions, and there may be a limit on the maximum number of storage units. For example, in the case of an INT8 system, a space capable of storing 256 similarity values ​​may be provided. This requires 256 x 2^k storage spaces, and data having the same similarity value is sequentially stored in the next address space.

[0111] Figure 9 illustrates a case where vector data is sorted based on real similarity values ​​in a memory buffer, and shows a method of generating a memory address by dividing a real value into a mantissa part and an exponent part.

[0112] The operation of the vector data alignment unit according to the embodiments shown in FIG. 9 can efficiently align real similarity values ​​by compensating for the disadvantages of the method as in FIG. 7. Since the data is automatically aligned according to similarity values ​​through a data writing operation, no additional alignment work is required. Through this, the overall operation speed is improved, and efficient alignment can be performed even on large datasets.

[0113] FIG. 10 illustrates a method for aligning vector data based on similarity information for each vector data according to embodiments.

[0114] Some or all of the operations shown in FIG. 10 may be performed by the device (10) according to the embodiments of FIG. 1, particularly by the vector data alignment unit (104) of FIG. 1. Also, some or all of the operations shown in FIG. 10 may be performed by the vector data alignment unit (203) of FIG. 2.

[0115] Referring to FIG. 10, the device (or vector data alignment unit (104)) according to the embodiments can calculate the similarity between the vector data queried by the user and each of the candidate vector data to derive similarity values ​​(1001) for each candidate vector data. Subsequently, the device (or vector data alignment unit (104)) according to the embodiments can align the candidate vector data (1002) based on the derived similarity values.

[0116] At this time, in step 1002, the device according to the embodiments may generate a physical address to store identification information of the candidate vector data in a buffer memory based on the similarity value of each candidate vector data, and may store the identification information of the candidate vector data at the generated physical address in the buffer memory. Furthermore, in step 1002, if the similarity values ​​of the candidate vector data are all integers, the device according to the embodiments may determine the similarity value as the physical address of the buffer memory.

[0117] In addition, in step 1002, the device according to the embodiments may store the identification information of the second candidate vector data in a second area adjacent to the first area if the identification information of the second candidate vector data exists in a first area of ​​the first physical address of the buffer memory for the first candidate vector data. In addition, in step 1002, if the similarity values ​​of the candidate vector data are all real numbers rather than integers, the device according to the embodiments may store the identification information of the candidate vector data by assigning the mantissa part of the similarity value to the first physical address axis and the exponent part of the similarity value to the second physical address axis.

[0118] Meanwhile, in step 1002, the device according to the embodiments determines a location in the buffer memory where a similarity value for the candidate vector data is to be inserted, and the vector data alignment unit can store the similarity value and the identifier of the candidate vector data at the said location without moving the previously stored candidate vector data. Furthermore, in step 1002, the device according to the embodiments can normalize the similarity value for the candidate vector data and map it within a predefined range before generating a physical address to store identification information for the candidate vector data.

[0119] Additionally, the device according to the embodiments further includes, in step 1002, a parallel computing unit that calculates the similarity between the candidate vector data and the queried query vector data based on a multiprocessing method; and the parallel computing unit can simultaneously calculate the similarity of the loaded candidate vector data as many times as the number of ways. Furthermore, the device according to the embodiments further includes, in step 1002, a step of determining the number of ways based on the size of the dimension of the candidate vector data; and the loading step can load the one or more vector data as many times as the number of ways determined.

[0120] A system for multi-processing vector data and sorting the results according to the embodiments (hereinafter referred to as the system according to the embodiments) has the effect of efficiently processing multiple vector data and maximizing the speed of comparison operations to provide the user with fast and accurate similarity calculation results.

[0121] The system according to the embodiments improves computational speed by multi-processing vector data, provides the effect of supporting fast similarity calculations even in large datasets, and is effective for real-time search systems and large-scale data analysis.

[0122] The system according to the embodiments can process various types of input data by converting unstructured data or some structured data into a vector format through a data embedding unit, making it universally applicable regardless of the data format, and in particular, allows various data types such as text, images, and voice to be vectorized and utilized for similarity calculations.

[0123] The system according to the embodiments analyzes the calculated similarity results in real time through the vector data alignment unit (203) and aligns the vector data according to the similarity results, thereby enabling the rapid provision of information required by the user. That is, it aligns the vector data according to the similarity criteria required by the user and supports intuitive verification of the results.

[0124] The system according to the embodiments maximizes the efficiency of memory usage and appropriately distributes and manages memory resources according to the dimensions of the vector data. Accordingly, it can resolve memory overload problems that may occur during the processing of high-dimensional vector data and ensure the stability of the system.

[0125] FIG. 11 is an example of a configuration diagram of a system or server according to embodiments.

[0126] Referring to FIG. 11, the server (1100) includes an input unit (1110), an output unit (1120), a control unit (1130), a storage unit (1140), and a communication unit (1150).

[0127] The input unit (1110) receives commands or information from the manager. The input unit (1110) may include one or more of a microphone and a key input unit for receiving audio signals.

[0128] The output unit (1120) outputs command processing results or various information to the administrator. For example, the output unit (1120) outputs information generated by a system that multi-processes vector data and sorts the results. To this end, the output unit (1120) may include a display, a speaker, a haptic output unit (1120), and a light output unit (1120), although these are not shown in the drawings. The display may be provided in a flat panel display, a flexible display, an opaque display, a transparent display, electronic paper (E-paper), or any form well known in the technical field to which the present invention belongs. A touch pad may be laminated on the display to form a touch screen, and a touch key may be implemented through such a touch screen. In addition to the display and the speaker, the output unit (1120) may be configured to include any form of output means well known in the technical field to which the present invention belongs.

[0129] The control unit (1130) connects and controls the components within the server (1100). For example, it controls each component so that information generated from a system that multiprocesses vector data and sorts the results can be output through the output unit (1120). For another example, when judgment information is input by a manager, the control unit (1130) generates a response signal containing the judgment information. The control unit (330) may be configured to include a CPU (Central Processing Unit), MPU (Micro Processor Unit), MCU (Micro Controller Unit), GPU (Graphic Processing Unit), or any type of processor well known in the art of the present invention.

[0130] The storage unit (1140) stores data, programs, and applications necessary for the server (1100) to operate. This storage unit (1140) may include non-volatile memory, volatile memory, a hard disk, an optical disk, a magneto-optical disk, or any type of computer-readable recording medium well known in the art to which the present invention belongs.

[0131] The communication unit (1150) communicates with a system or other system that processes vector data multiple times and sorts the results through a wired or wireless network.

[0132] The embodiments of the present invention disclosed in this specification and drawings are provided merely as specific examples to facilitate the explanation of the technical content of the present invention and to aid in understanding the present invention, and are not intended to limit the scope of the present invention. It is obvious to those skilled in the art that other variations based on the technical concept of the present invention are possible in addition to the embodiments disclosed herein.

[0133] Although the present invention has been described above with reference to preferred embodiments, those skilled in the art will understand that various modifications and changes can be made to the invention without departing from the spirit and scope of the invention as described in the following claims.

Claims

Claim 1 A vector data multiprocessing device comprising: a vector loading unit that loads each vector data into a computation memory from a database storing one or more vector data; and a parallel computing unit that calculates the similarity between the vector data loaded into the computation memory and the query vector data received; wherein the parallel computing unit simultaneously calculates the similarity of the loaded vector data by the number of ways, and the vector loading unit determines the number of ways based on the size of the dimension of the one or more vector data, and loads the one or more vector data by the number of ways determined from the one or more vector data. Claim 2 delete Claim 3 A vector data multiprocessing device according to claim 1, wherein the vector load unit determines the number of ways inversely proportional to the dimension size of the one or more vector data. Claim 4 The vector data multiprocessing device according to claim 1 further comprises an address translation unit that translates a physical address indicating a channel in the computation memory to load the vector data and a location to be loaded within the channel, based on an identifier of the vector data to be loaded; and the vector loading unit loads the vector data into the computation memory using the physical address translated by the address translation unit. Claim 5 In paragraph 4, the vector data multiprocessing device, wherein the vector load unit loads each vector data into the channel where each vector data is loaded according to an interleaving operation based on the physical address of each vector data to be loaded into the computation memory. Claim 6 A vector data multiprocessing device according to claim 5, wherein when the number of channels is greater than the number of ways, the interleaving method is characterized in that each vector data is divided and stored across multiple channels. Claim 7 A vector data multiprocessing device according to claim 6, wherein when the number of channels is greater than the number of ways, the parallel calculation unit calculates the similarity between the data stored in each channel and the query vector data in parallel, and merges the results calculated for each channel to derive the similarity result for each way. Claim 8 The vector data multiprocessing device according to claim 1 further comprises a vector data alignment unit that aligns the vector data based on the derived similarity; wherein the vector data alignment unit generates a physical address to store identification information of the vector data in a buffer memory based on the similarity of each vector data, and stores the identification information of the vector data at the generated physical address in the buffer memory. Claim 9 A vector data multiprocessing device according to claim 8, wherein the vector data alignment unit determines the similarity as the physical address of the buffer memory when the similarity values ​​of the vector data are all integers. Claim 10 A method for multiprocessing vector data, comprising: a step of loading each of one or more vector data within a database into a computation memory; and a step of calculating the similarity between the vector data loaded into the computation memory and the query vector data received; wherein the step of loading into the computation memory comprises: a step of determining the number of ways based on the size of the dimension of the one or more vector data; and a step of loading the one or more vector data in the number of ways determined from the one or more vector data; and wherein the calculating step is characterized by simultaneously calculating the similarity of the vector data loaded in the number of ways.