CN113254511B - Distributed vector retrieval system and method - Google Patents

Distributed vector retrieval system and method Download PDF

Info

Publication number
CN113254511B
CN113254511B CN202110803050.3A CN202110803050A CN113254511B CN 113254511 B CN113254511 B CN 113254511B CN 202110803050 A CN202110803050 A CN 202110803050A CN 113254511 B CN113254511 B CN 113254511B
Authority
CN
China
Prior art keywords
node
vector
index
data
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110803050.3A
Other languages
Chinese (zh)
Other versions
CN113254511A (en
Inventor
张险全
薛延波
赵鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Hanlan Wolf Technology Co ltd
Original Assignee
Beijing Huapin Borui Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Huapin Borui Network Technology Co Ltd filed Critical Beijing Huapin Borui Network Technology Co Ltd
Priority to CN202110803050.3A priority Critical patent/CN113254511B/en
Publication of CN113254511A publication Critical patent/CN113254511A/en
Application granted granted Critical
Publication of CN113254511B publication Critical patent/CN113254511B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The embodiment of the invention discloses a distributed vector retrieval system, which comprises: the master node group comprises a plurality of master nodes, one master node is a leader node, the leader node distributes the index table fragments to the designated vector node group, and the leader node synchronizes the data thereof to other master nodes; a plurality of vector node groups, each vector node group comprising a plurality of vector nodes, each vector node storing vector data and index table fragments, each vector node responding to a request from a routing node and retrieving data or synchronization data; the routing node group comprises a plurality of routing nodes, and each routing node sends the request to the corresponding vector node group and merges and returns the retrieval result; and the index data maintenance tool writes the index vector data into the index message queue according to the request and calls the routing node according to the message type. The embodiment of the invention also discloses a distributed vector retrieval method. The invention can ensure the consistent updating of off-line and on-line index data under the condition of high concurrent access.

Description

Distributed vector retrieval system and method
Technical Field
The invention relates to the technical field of computers, in particular to a distributed vector retrieval system and a distributed vector retrieval method.
Background
In the prior art, when high-concurrency access is performed, the response time is slow, or a downtime condition exists, the online real-time index vector data and the offline batch index vector data cannot be updated consistently, so that the index vector data are inconsistent, and the reliability of the retrieval system is affected.
Disclosure of Invention
In order to solve the above problems, an object of the present invention is to provide a distributed vector search system and method, which can ensure consistent update of offline and online index vector data under high concurrent access conditions.
The embodiment of the invention provides a distributed vector retrieval system, which comprises:
the master node group comprises a plurality of master nodes, wherein one master node is used as a leader node, the leader node distributes the index table fragments of the vector data to each vector node of the designated vector node group, and the leader node synchronizes the node data thereof to other master nodes;
the method comprises the steps that a plurality of vector node groups are arranged, each vector node group comprises a plurality of vector nodes, each vector node stores vector data and an index table fragment corresponding to the vector data, each vector node in the vector node groups responds to a retrieval request or an index creation request from a routing node, and retrieves data according to the retrieval request or synchronizes the data according to the index creation request, wherein the synchronized data comprises an index creation table or an index update table;
each routing node sends a retrieval request or an index creation request sent by a client to a corresponding vector node group, merges retrieval results of each vector node in the vector node group and returns the merged retrieval results to the client;
the index data maintenance tool writes index vector data into an index message queue according to an index creating request of a client, and calls a routing node according to the type of the index message, so that the routing node sends the index creating request to a corresponding vector node group to achieve consistent updating of online vector data and offline vector data, wherein the index vector data comprises the online vector data and the offline vector data.
As a further improvement of the present invention, the invoking a routing node according to the type of the index message to enable the routing node to send the index creation request to a corresponding vector node group, so as to implement consistent update of online vector data and offline vector data includes:
when the index data maintenance tool receives a real-time index message, analyzing the real-time index message from the index message queue, and calling the routing node to send the real-time index message to a corresponding vector node group so that the corresponding vector node group creates an index table or updates the index table according to the real-time index message;
when the index data maintenance tool receives an offline index message, an index table offline naming space is obtained from the leader node, historical version data is emptied, the routing node is called to send the offline index message to a corresponding vector node group, so that the corresponding vector node group creates an index table or updates the index table according to the offline index message, and after the creation or the update of the index table is completed, the leader node is called to enable the leader node to switch the offline naming space into an online naming space.
As a further improvement of the invention, the online namespace and the offline namespace each represent a data set comprising a vector node group, an index table name, a minimum number of nodes in the vector node group, a number of shards, a number of replica shards, a similarity calculation method and an index field,
wherein the index table name has an alias such that the client can access the online namespace or the offline namespace according to the alias.
As a further improvement of the invention, the index table shards stored on each vector node comprise a master shard and a replica shard,
the vector node periodically sends a heartbeat signal to the leader node so that the leader node determines the state of the vector node according to the heartbeat signal of the vector node,
when one vector node is down, the leader node upgrades the copy fragments corresponding to the main fragments on the down vector node into main fragments, and distributes the copy fragments on the down vector node to other vector nodes.
As a further improvement of the invention, the index table shards stored on each vector node comprise a master shard and a replica shard,
one vector node in the vector node group completes synchronous data according to the index creating request and stores the synchronous data into a main fragment of the vector node group,
and after the copy fragment synchronization data of the other vector nodes are finished, each vector node in the vector node group sends a heartbeat signal to the leader node.
As a further improvement of the present invention, each master node stores metadata of index table fragments to determine corresponding vector node groups according to the metadata of the index table fragments,
when each vector node in the vector node group synchronizes data, the metadata of the copy fragment of each vector node is fed back to the leader node through a heartbeat signal,
and each routing node acquires metadata of the index table fragments from the leader node to update the metadata, the routing nodes write the metadata of the copy fragments of a plurality of vector nodes in a vector node group at the same time, and when the number of the copy fragments of the plurality of vector nodes is insufficient, the routing nodes fail to update the metadata until the synchronization data of the copy fragments of the plurality of vector nodes is finished, and the routing nodes continue to write the metadata of the copy fragments of the plurality of vector nodes.
As a further improvement of the present invention, the main node group includes at least three main nodes, so that the number of nodes of the main node group after the downtime of the leader node is not less than two,
and when the leader node is down, reselecting one main node from the main node group as a new leader node, and synchronizing the node data of the new leader node to other main nodes.
The embodiment of the invention also provides a distributed vector retrieval method, which comprises the following steps:
the leader node distributes the index table fragments of the vector data to each vector node of the designated vector node group;
when a routing node receives a retrieval request or an index creation request sent by a client, the routing node sends the retrieval request or the index creation request to a corresponding vector node group;
each vector node in the vector node group responds to the retrieval request or the index creating request from the routing node, and retrieves data according to the retrieval request or synchronizes data according to the index creating request;
the routing node combines the retrieval results of all vector nodes in the vector node group and returns the combined retrieval results to the client;
and the index data maintenance tool writes index vector data into an index message queue according to the index creating request, and calls the routing node according to the type of the index message, so that the routing node sends the index creating request to a corresponding vector node group to realize the consistent updating of online vector data and offline vector data, wherein the index vector data comprises the online vector data and the offline vector data.
As a further improvement of the present invention, the invoking a routing node according to the type of the index message to enable the routing node to send the index creation request to a corresponding vector node group, so as to implement consistent update of online vector data and offline vector data includes:
when the index data maintenance tool receives a real-time index message, analyzing the real-time index message from the index message queue, and calling the routing node to send the real-time index message to a corresponding vector node group so that the corresponding vector node group creates an index table or updates the index table according to the real-time index message;
when the index data maintenance tool receives an offline index message, an index table offline naming space is obtained from the leader node, historical version data is emptied, the routing node is called to send the offline index message to a corresponding vector node group, so that the corresponding vector node group creates an index table or updates the index table according to the offline index message, and after the creation or the update of the index table is completed, the leader node is called to enable the leader node to switch the offline naming space into an online naming space.
As a further improvement of the invention, the online namespace and the offline namespace each represent a data set comprising a vector node group, an index table name, a minimum number of nodes in the vector node group, a number of shards, a number of replica shards, a similarity calculation method and an index field,
wherein the index table name has an alias such that the client can access the online namespace or the offline namespace according to the alias.
As a further improvement of the present invention, the index table fragments stored on each vector node include a main fragment and a replica fragment, and the method further includes:
the vector node sends a heartbeat signal to the leader node periodically, and the leader node determines the state of the vector node according to the heartbeat signal of the vector node;
when one vector node is down, the leader node upgrades the copy fragments corresponding to the main fragments on the down vector node into main fragments, and distributes the copy fragments on the down vector node to other vector nodes.
As a further improvement of the present invention, the index table fragments stored on each vector node include a main fragment and a replica fragment, and the method further includes:
one vector node in the vector node group completes synchronous data according to the index creating request and stores the synchronous data into a main fragment of the vector node group,
and after the copy fragment synchronization data of the other vector nodes are finished, each vector node in the vector node group sends a heartbeat signal to the leader node.
As a further improvement of the present invention, each master node stores metadata of an index table fragment thereon, and the method further includes:
when each vector node in the vector node group synchronizes data, the metadata of the copy fragment of each vector node is fed back to the leader node through a heartbeat signal,
and each routing node acquires metadata of the index table fragments from the leader node to update the metadata, the routing nodes write the metadata of the copy fragments of a plurality of vector nodes in a vector node group at the same time, and when the number of the copy fragments of the plurality of vector nodes is insufficient, the routing nodes fail to update the metadata until the synchronization data of the copy fragments of the plurality of vector nodes is finished, and the routing nodes continue to write the metadata of the copy fragments of the plurality of vector nodes.
As a further improvement of the present invention, the master node group includes at least three master nodes, and the method further includes:
and when the leader node is down, reselecting one main node from the main node group as a new leader node, and synchronizing the node data of the new leader node to other main nodes.
Embodiments of the present invention also provide an electronic device, which includes a memory and a processor, where the memory is configured to store one or more computer instructions, and the one or more computer instructions are executed by the processor to implement the method.
Embodiments of the present invention also provide a computer-readable storage medium, on which a computer program is stored, the computer program being executed by a processor to implement the method.
The invention has the beneficial effects that: in the case of high concurrent access, an index can be created or updated online, and consistent updating of offline and online index vector data is ensured. The vector node groups can carry out multi-vector synchronous retrieval, and meanwhile, data isolation is achieved. The data of each node is kept consistent, and the unreliable system caused by single-point faults is effectively avoided.
Drawings
In order to more clearly illustrate the embodiments of the present invention or the technical solutions in the prior art, the drawings used in the description of the embodiments or the prior art will be briefly described below. It is obvious that the drawings in the following description are only some embodiments of the invention, and that for a person skilled in the art, other drawings can be derived from them without inventive effort.
FIG. 1 is a schematic diagram of a distributed vector retrieval system according to an exemplary embodiment of the present invention;
fig. 2 is a schematic diagram of a master node group, a routing node group, and a vector node group in a distributed vector retrieval system according to an exemplary embodiment of the present invention.
Detailed Description
The technical solutions in the embodiments of the present invention will be clearly and completely described below with reference to the drawings in the embodiments of the present invention, and it is obvious that the described embodiments are only a part of the embodiments of the present invention, and not all of the embodiments. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present invention.
It should be noted that, if directional indications (such as up, down, left, right, front, and back … …) are involved in the embodiment of the present invention, the directional indications are only used to explain the relative positional relationship between the components, the movement situation, and the like in a specific posture (as shown in the drawing), and if the specific posture is changed, the directional indications are changed accordingly.
In addition, in the description of the present invention, the terms used are for illustrative purposes only and are not intended to limit the scope of the present invention. The terms "comprises" and/or "comprising" are used to specify the presence of stated elements, steps, operations, and/or components, but do not preclude the presence or addition of one or more other elements, steps, operations, and/or components. The terms "first," "second," and the like may be used to describe various elements, not necessarily order, and not necessarily limit the elements. In addition, in the description of the present invention, "a plurality" means two or more unless otherwise specified. These terms are only used to distinguish one element from another. These and/or other aspects will become apparent to those of ordinary skill in the art in view of the following drawings, and the description of the embodiments of the present invention will be more readily understood by those of ordinary skill in the art. The drawings are only for purposes of illustrating the described embodiments of the invention. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated in the present application may be employed without departing from the principles described in the present application.
The embodiment of the invention provides a distributed vector retrieval system, which comprises:
the master node group comprises a plurality of master nodes, wherein one master node is used as a leader node, the leader node distributes the index table fragments of the vector data to each vector node of the designated vector node group, and the leader node synchronizes the node data thereof to other master nodes;
the method comprises the steps that a plurality of vector node groups are arranged, each vector node group comprises a plurality of vector nodes, each vector node stores vector data and an index table fragment corresponding to the vector data, each vector node in the vector node groups responds to a retrieval request or an index creation request from a routing node, and retrieves data according to the retrieval request or synchronizes the data according to the index creation request, wherein the synchronized data comprises an index creation table or an index update table;
each routing node sends a retrieval request or an index creation request sent by a client to a corresponding vector node group, merges retrieval results of each vector node in the vector node group and returns the merged retrieval results to the client;
the index data maintenance tool writes index vector data into an index message queue according to an index creating request of a client, and calls a routing node according to the type of the index message, so that the routing node sends the index creating request to a corresponding vector node group to achieve consistent updating of online vector data and offline vector data, wherein the index vector data comprises the online vector data and the offline vector data.
Existing vector retrieval systems utilize neural networks to convert queries and data into a joint vector space where similar matches can be found using nearest neighbor search methods. However, when millions of parallel users use the vector retrieval system, the response time is slow or there is a downtime situation, so that the offline data and the online data are easily updated inconsistently under the high concurrent access situation. The system of the invention has four roles: master nodes, routing nodes, vector nodes, and index data maintenance tools. The system can allow new vector data to be input at any time, and through the routing nodes and the index data maintenance tool, an index can be created or updated online under the condition of high concurrent access, and the consistent update of offline and online index vector data is ensured.
Unstructured data (such as voice, pictures, video, words, behaviors and the like) are abstracted through an artificial intelligence algorithm and can be changed into multidimensional vectors containing information. Vector data retrieval is retrieval of common unstructured data such as voice, pictures, and video. For example, taking picture retrieval as an example, firstly, machine learning analysis is performed on all historical pictures in an offline manner, each picture (or people segmented from the pictures) is abstracted into multi-dimensional vector features, then all the features are constructed into an efficient vector index, when a new picture comes, the new picture is analyzed by the same machine learning method and a characterization vector is generated, and then the most similar result is found out in the index table segment constructed previously by using the vector, so that the picture-based vector retrieval is completed. It should be noted that the vector data of the present invention may include one or more of voice, picture, video, text, and behavior data. The retrieval request sent by the client may be a retrieval including one or more of the above.
As shown in fig. 1, the master node may be configured with an election module, a PRC interface, a fragment distribution and management module, an event subscription notification module, a metadata management module, a vector node cluster management module, and a metadata synchronization module, where the election module is configured to execute an election algorithm to elect a leader node; the PRC interface is a remote calling interface, and realizes the retrieval of metadata from the leader node by the routing node and the transmission of heartbeat signals from the vector node to the leader node; the fragment distribution and management module is used for realizing the distribution and management of the leader node on the index table fragments of the vector nodes of the vector node group; the event subscription notification module is used for realizing notification after execution of each task; the vector node cluster management module is used for realizing the management of the leader node on the vector nodes of the vector node group; the metadata synchronization module is used for synchronizing the metadata of the vector node synchronization data; and the metadata management module is used for realizing the management of the metadata of the main node.
The vector node can be provided with a PRC interface, a heartbeat maintenance module, a vector search engine, a storage module and a data synchronization module, wherein the PRC interface is a remote calling interface and is used for realizing a retrieval request and an index creation request which are sent to the vector node by a routing node; the heartbeat maintenance module is used for sending heartbeat signals of the vector nodes to the main node; the vector search engine is used for the vector node to execute the retrieval task according to the retrieval request; the data synchronization module is used for the vector node to execute synchronous data according to the index creating request; the storage module is used for storing the vector data and the index table fragments corresponding to the vector data.
The routing node can be provided with an interface service module, a metadata updating module, a vector node connecting module and an inquiry merging module, wherein the interface service module is used for realizing a retrieval request and an index creating request sent by a client to the routing node; the vector node connection module is used for realizing the connection between the routing nodes and the vector nodes so as to send the retrieval request or the index creation request to the corresponding vector node group; the query merging module is used for merging the retrieval results of each vector node in the vector node group; and the metadata updating module is used for updating the node metadata of the routing node according to the metadata acquired from the leader node.
The index data maintenance tool can be provided with a real-time index maintenance module and a full index construction module, wherein the real-time index maintenance module is used for consuming real-time index messages from the message queue and calling routing nodes; the full index building module is used for consuming offline index messages from the message queue, calling routing nodes and calling leader nodes to switch namespaces.
The system of the present invention uses vector retrieval and extends to clusters, which can process hundreds of thousands of simultaneous queries per second. One vector Node (Worker Node) belongs to one service group, namely a vector Node group, and each vector Node is registered to a Master Node (Master Node) when the system is started. When creating the index table, the vector data will be specified on which service group, i.e. the vector node group, to store. And the leader Node distributes the index table fragments to the Worker Node of the appointed service group. The service group in which the index table fragments are stored can be determined according to different service requirements, and the data of the multi-service table can be isolated in a grouping mode without mutual influence, so that the performance of the system is improved.
When a client calls an interface of a routing Node (Router Node) to send a retrieval request, the routing Node acquires a vector Node group distributed by index fragments from a leader Node, then sends the retrieval request to a corresponding vector Node group as a target vector Node group, and after the retrieval of all vector nodes in the target vector Node group is finished, the routing Node combines retrieval results of all vector nodes in the target vector Node group and returns the retrieval results to the client. The above described schematic process for sending a search request and returning a search result for one routing node is described, and a plurality of routing nodes in the system may execute the above described process simultaneously.
It can be understood that one routing node may be connected to a plurality of vector nodes in one vector node group, or may be connected to a plurality of vector nodes in a plurality of vector node groups, so as to avoid that the search response time is slow due to excessively large fragment data of the index table of a single vector node group, and improve the search efficiency. And the leader node performs index table fragmentation distribution on each vector node, and carries out load balancing on data, so that the condition that a certain vector node bears overlarge data volume is avoided. It will also be appreciated that the vector data that each vector node can store can be dynamically configured as required.
As shown in fig. 2, the system of the present invention includes a routing node group (Router), a Master node group (Master), and a vectoring node group (bussinessjgroup). The routing node group (Router) may include n nodes: route Node 1 (Router Node 1), route Node 2 (Router Node 2), route Node 3 (Router Node 3), … …, route Node n (Router Node n). A Master node group (Master) may for example comprise n nodes: master Node 1 (Master Node 1), Master Node 2 (Master Node 2), … …, Master Node n (Master Node n). The vector node group (bussiness _ group) may include, for example, n node groups: vector node group1 (busy _ group 1), vector node group2 (busy _ group 2), … …, and vector node group n (busy _ group _ n), wherein vector node group1 (busy _ group 1) may include n nodes: vector Node 1 (Worker Node 1), vector Node 2 (Worker Node 2), vector Node 3 (Worker Node 3), vector Node 4 (Worker Node 4), … …, vector Node n (Worker Node n), vector Node group2 (burden _ group 2) may include, for example, n nodes: vector Node 1 (Worker Node 1), vector Node 2 (Worker Node 2), vector Node 3 (Worker Node 3), vector Node 4 (Worker Node 4), … …, vector Node n (Worker Node n), … …, vector Node group n (burden _ group _ n) may include, for example, n nodes: vector Node 1 (Worker Node 1), vector Node 2 (Worker Node 2), vector Node 3 (Worker Node 3), vector Node 4 (Worker Node 4), … …, and vector Node n (Worker Node n). The number n of nodes in the routing node group, the number n of nodes in the master node group, the number n of vector node groups, and the number n of nodes in each vector node group are schematic examples, and it should be noted that each n may be a different number.
For example, the Master Node 1 is used as a leader Node, it is determined that an index table corresponding to a retrieval request sent by a client is partitioned on the busy _ group1, the Router Node 1 sends the retrieval request of the client to the busy _ group1, the Worker Node 1, the Worker Node 2, the Worker Node … … and the Worker Node n in the busy _ group1 execute retrieval tasks, and after the retrieval of each Worker Node is finished, the Router Node 1 merges retrieval results and returns the retrieval results to the client.
It should also be noted that the access rights of the client should not exceed the rights required by its function, and the access rights of the routing node group, the vector node group, and the master node group should also not exceed the rights required by its function. When one client operates the system and has problems, the operation of other clients is not influenced.
In an optional embodiment, the invoking, by the routing node, a routing node according to a type of an index message, so that the routing node sends the create index request to a corresponding vector node group, and implements consistent update of online vector data and offline vector data includes:
when the index data maintenance tool receives a real-time index message, analyzing the real-time index message from the index message queue, and calling the routing node to send the real-time index message to a corresponding vector node group so that the corresponding vector node group creates an index table or updates the index table according to the real-time index message;
when the index data maintenance tool receives an offline index message, an index table offline naming space is obtained from the leader node, historical version data is emptied, the routing node is called to send the offline index message to a corresponding vector node group, so that the corresponding vector node group creates an index table or updates the index table according to the offline index message, and after the creation or the update of the index table is completed, the leader node is called to enable the leader node to switch the offline naming space into an online naming space.
It can be understood that the index data maintenance tool is mainly responsible for index vector data sent by a client (external application), including online vector data and offline vector data (offline bulk vector data), and for coordinating the switching of updating of the internal index table, so that the online vector data and the offline vector data can protect the full amount of data, and the consistency of the online data and the offline data is ensured.
When the consistency maintenance of the index vector data is carried out, the index vector data is written into a Message Queue (MQ) through a client, wherein the index vector data comprises a vector, an index table name, a sending batch number message type (a real-time index message or an offline index message), a state identification (batch sending start, batch sending end and real-time message continuous sending). And the index data maintenance tool (hamal) consumes the real-time index information from the consumption queue, analyzes the index information, directly calls the Router Node, and routes the request to the corresponding Worker Node to create or update the index table. hamal consumes off-line index information from a consumption queue, immediately stops the real-time updating of an index table after receiving off-line vector data in a batch sending starting state, acquires an off-line name space of the index table from a Master Node, empties old version data, calls the Router Node, routes the request to a corresponding Worker Node to establish or update the index table, does not influence the online query of the vector Node at the moment, calls a Master Node interface after the establishment or the updating of the index table is finished, switches the off-line name space (offline name space) into an online name space (online name space), changes the original online name space into the offline name space, completes the alias switching of the index table, and then continues to consume the real-time index information.
In an alternative embodiment, the online namespace and the offline namespace each represent a dataset that includes a vector node group, an index table name, a minimum number of nodes in the vector node group, a number of fragments, a number of replica fragments, a similarity calculation method, and an index field, wherein the index table name has an alias so that a client can access the online namespace or the offline namespace according to the alias.
The main organizational unit in the system of the present invention is a namespace, where the namespace represents a particular data set, and where the namespace includes both online and offline namespaces. The namespace includes several components: vector node group (i.e. service packet bussiness _ group), index table name (i.e. service table name), minimum node number, fragment number, copy fragment number, similarity calculation mode (including inner product and cosine similarity), index field (service field) and other information. A field is a joint collection of vectors (i.e., key-value stores) of the same format and size. The vector is the smallest unit of storage, represented as a dense vector of IEEE-754 single-precision values or semi-precision values. The index table externally adopts an alias mechanism, and aliases are mapped in the bottom layer to form two namespaces: online namespace and offline namespace, the client can access the underlying two namespaces through aliases. Aliases may act as pipes connecting multiple physical namespaces.
In an alternative embodiment, the index table shards stored on each vector node include a master shard and a replica shard,
the vector node periodically sends a heartbeat signal to the leader node so that the leader node determines the state of the vector node according to the heartbeat signal of the vector node,
when one vector node is down, the leader node upgrades the copy fragments corresponding to the main fragments on the down vector node into main fragments, and distributes the copy fragments on the down vector node to other vector nodes.
The vector nodes are used for storing vector data, a fault tolerance mechanism is established through a replication mechanism, indexes are generated on locally available data fragments, the vector data stored in the nodes are retrieved through the indexes, and a retrieval request received from a routing node is responded. The vector nodes periodically send heartbeat signals and status reports to the leader node to signal its health to the leader node. Whether the vector node is active or not is judged between the vector node and the main node through heartbeat maintenance, and the main node can also prevent the situation that a plurality of main fragments appear in the same fragment through heartbeat signals. When a vector node goes down, the copy fragments on the node are lost, and after the leader node detects that the copy fragments are insufficient, the copy fragments corresponding to the main fragments on the vector node going down are upgraded into the main fragments, and the sub-fragments on the vector node going down are redistributed on other active vector nodes, so that the data are not lost when the vector node goes down, and the consistency and reliability of the data are ensured.
In an alternative embodiment, the index table shards stored on each vector node include a master shard and a replica shard,
one vector node in the vector node group completes synchronous data according to the index creating request and stores the synchronous data into a main fragment of the vector node group,
and after the copy fragment synchronization data of the other vector nodes are finished, each vector node in the vector node group sends a heartbeat signal to the leader node.
As described above, the vector nodes report states to the leader node through the heartbeat signal, and simultaneously acquire tasks (tasks corresponding to the search request or tasks corresponding to the index creation request) to be executed from the routing nodes, when receiving the tasks corresponding to the search request, after the vector nodes complete the search, the search results of each vector node in the vector node group are merged and returned to the client, when receiving the tasks corresponding to the index creation request, each vector node in the vector node group synchronizes data from the vector node corresponding to the main slice in the node group, and after completing the data synchronization, the leader node is notified, so that the data between each vector node in the vector node group has consistency.
In an alternative embodiment, each master node stores metadata of index table fragments to determine corresponding vector node groups according to the metadata of the index table fragments,
when each vector node in the vector node group synchronizes data, the metadata of the copy fragment of each vector node is fed back to the leader node through a heartbeat signal,
and each routing node acquires metadata of the index table fragments from the leader node to update the metadata, the routing nodes write the metadata of the copy fragments of a plurality of vector nodes in a vector node group at the same time, and when the number of the copy fragments of the plurality of vector nodes is insufficient, the routing nodes fail to update the metadata until the synchronization data of the copy fragments of the plurality of vector nodes is finished, and the routing nodes continue to write the metadata of the copy fragments of the plurality of vector nodes.
As mentioned before, the routing node is the provider of the client (external application), and the APP application and retrieval request caller of the client submit the retrieval request only to the routing node, so the routing node is responsible for vector node connection management, query distribution and integration. The routing node is a plurality of copy fragments simultaneously written into a plurality of vector nodes in the vector node group, when the copy fragments of one or a plurality of vector nodes are insufficient, the routing node directly returns failure until the copy fragment data of all the vector nodes in the vector node group are synchronously completed, and after all the vector nodes recover the copy fragments, the routing node continues to write into the plurality of copy fragments in the vector node group so as to realize the consistent writing of all the copy fragments in the vector node group and ensure the consistency of the routing node data.
In an optional embodiment, the master node group includes at least three master nodes, so that the number of nodes of the master node group after the downtime of the leader node is not less than two,
and when the leader node is down, reselecting one main node from the main node group as a new leader node, and synchronizing the node data of the new leader node to other main nodes.
As previously described, the master Node is responsible for electing Leader nodes (Leader nodes), maintaining up-to-date information of the current data structure of the nodes, Node management and resource allocation of the vector Node group (including vector Node replica shard inspection, index table shard allocation, index table shard management, index table creation/update task distribution), coordinated recovery, index table metadata storage, and metadata synchronization with other master nodes. One of the master nodes is selected as the leader node, all vector nodes in the system always direct requests to the leader node, the leader node immediately synchronizes the modification of its internal data structure (metadata) to the other master nodes, and by monitoring the heartbeat signals and requests from the vector nodes, the leader node can track the behavior of all vector nodes in the system. The leader node maintains the index table metadata and the mapping relationship between the index table fragments and the vector nodes.
The master node elects a leader node through, for example, a distributed consistency algorithm Raft, the leader node manages all vector nodes in the system, and when the leader node loses heartbeat, a new leader node is reselected through an election algorithm to ensure the consistency of the index metadata. The number of the main nodes is set to be at least 3, when the leader node is down, the number of the main nodes is not less than two, brain split can be prevented from occurring when the main nodes are elected, and the availability of the main nodes is improved. The main nodes can ensure the consistency of data among all the main nodes through the replication of the raft protocol binlog.
The embodiment of the invention discloses a distributed vector retrieval method, which comprises the following steps:
the leader node distributes the index table fragments of the vector data to each vector node of the designated vector node group;
when a routing node receives a retrieval request or an index creation request sent by a client, the routing node sends the retrieval request or the index creation request to a corresponding vector node group;
each vector node in the vector node group responds to the retrieval request or the index creating request from the routing node, and retrieves data according to the retrieval request or synchronizes data according to the index creating request;
the routing node combines the retrieval results of all vector nodes in the vector node group and returns the combined retrieval results to the client;
and the index data maintenance tool writes index vector data into an index message queue according to the index creating request, and calls the routing node according to the type of the index message, so that the routing node sends the index creating request to a corresponding vector node group to realize the consistent updating of online vector data and offline vector data, wherein the index vector data comprises the online vector data and the offline vector data.
In an optional embodiment, the invoking, by the routing node, a routing node according to a type of an index message, so that the routing node sends the create index request to a corresponding vector node group, and implements consistent update of online vector data and offline vector data includes:
when the index data maintenance tool receives a real-time index message, analyzing the real-time index message from the index message queue, and calling the routing node to send the real-time index message to a corresponding vector node group so that the corresponding vector node group creates an index table or updates the index table according to the real-time index message;
when the index data maintenance tool receives an offline index message, an index table offline naming space is obtained from the leader node, historical version data is emptied, the routing node is called to send the offline index message to a corresponding vector node group, so that the corresponding vector node group creates an index table or updates the index table according to the offline index message, and after the creation or the update of the index table is completed, the leader node is called to enable the leader node to switch the offline naming space into an online naming space.
In an alternative embodiment, the online namespace and the offline namespace each represent a data set comprising a vector node group, an index table name, a minimum number of nodes in the vector node group, a number of fragments, a number of replica fragments, a similarity calculation method, and an index field,
wherein the index table name has an alias such that the client can access the online namespace or the offline namespace according to the alias.
In an optional embodiment, the index table fragments stored on each vector node include a primary fragment and a replica fragment, and the method further includes:
the vector node sends a heartbeat signal to the leader node periodically, and the leader node determines the state of the vector node according to the heartbeat signal of the vector node;
when one vector node is down, the leader node upgrades the copy fragments corresponding to the main fragments on the down vector node into main fragments, and distributes the copy fragments on the down vector node to other vector nodes.
In an optional embodiment, the index table fragments stored on each vector node include a primary fragment and a replica fragment, and the method further includes:
one vector node in the vector node group completes synchronous data according to the index creating request and stores the synchronous data into a main fragment of the vector node group,
and after the copy fragment synchronization data of the other vector nodes are finished, each vector node in the vector node group sends a heartbeat signal to the leader node.
In an optional embodiment, each host node stores metadata of an index table fragment, and the method further includes:
when each vector node in the vector node group synchronizes data, the metadata of the copy fragment of each vector node is fed back to the leader node through a heartbeat signal,
and each routing node acquires metadata of the index table fragments from the leader node to update the metadata, the routing nodes write the metadata of the copy fragments of a plurality of vector nodes in a vector node group at the same time, and when the number of the copy fragments of the plurality of vector nodes is insufficient, the routing nodes fail to update the metadata until the synchronization data of the copy fragments of the plurality of vector nodes is finished, and the routing nodes continue to write the metadata of the copy fragments of the plurality of vector nodes.
In an optional embodiment, the master node group includes at least three master nodes, and the method further includes:
and when the leader node is down, reselecting one main node from the main node group as a new leader node, and synchronizing the node data of the new leader node to other main nodes.
The disclosure also relates to an electronic device comprising a server, a terminal and the like. The electronic device includes: at least one processor; a memory communicatively coupled to the at least one processor; and a communication component communicatively coupled to the storage medium, the communication component receiving and transmitting data under control of the processor; wherein the memory stores instructions executable by the at least one processor to implement the method of the above embodiments.
In an alternative embodiment, the memory is used as a non-volatile computer-readable storage medium for storing non-volatile software programs, non-volatile computer-executable programs, and modules. The processor executes various functional applications of the device and data processing, i.e., implements the method, by executing nonvolatile software programs, instructions, and modules stored in the memory.
The memory may include a storage program area and a storage data area, wherein the storage program area may store an operating system, an application program required for at least one function; the storage data area may store a list of options, etc. Further, the memory may include high speed random access memory, and may also include non-volatile memory, such as at least one magnetic disk storage device, flash memory device, or other non-volatile solid state storage device. In some embodiments, the memory optionally includes memory located remotely from the processor, and such remote memory may be connected to the external device via a network. Examples of such networks include, but are not limited to, the internet, intranets, local area networks, mobile communication networks, and combinations thereof.
One or more modules are stored in the memory and, when executed by the one or more processors, perform the methods of any of the method embodiments described above.
The product can execute the method provided by the embodiment of the application, has corresponding functional modules and beneficial effects of the execution method, and can refer to the method provided by the embodiment of the application without detailed technical details in the embodiment.
The present disclosure also relates to a computer-readable storage medium for storing a computer-readable program for causing a computer to perform some or all of the above-described method embodiments.
That is, as can be understood by those skilled in the art, all or part of the steps in the method for implementing the embodiments described above may be implemented by a program instructing related hardware, where the program is stored in a storage medium and includes several instructions to enable a device (which may be a single chip, a chip, or the like) or a processor (processor) to execute all or part of the steps of the method described in the embodiments of the present application. And the aforementioned storage medium includes: a U-disk, a removable hard disk, a Read-Only Memory (ROM), a Random Access Memory (RAM), a magnetic disk or an optical disk, and other various media capable of storing program codes.
In the description provided herein, numerous specific details are set forth. It is understood, however, that embodiments of the invention may be practiced without these specific details. In some instances, well-known methods, structures and techniques have not been shown in detail in order not to obscure an understanding of this description.
Furthermore, those of ordinary skill in the art will appreciate that while some embodiments described herein include some features included in other embodiments, rather than other features, combinations of features of different embodiments are meant to be within the scope of the invention and form different embodiments. For example, in the claims, any of the claimed embodiments may be used in any combination.
It will be understood by those skilled in the art that while the present invention has been described with reference to exemplary embodiments, various changes may be made and equivalents may be substituted for elements thereof without departing from the scope of the invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the invention without departing from the essential scope thereof. Therefore, it is intended that the invention not be limited to the particular embodiment disclosed, but that the invention will include all embodiments falling within the scope of the appended claims.

Claims (16)

1. A distributed vector retrieval system, the system comprising:
the master node group comprises a plurality of master nodes, wherein one master node is used as a leader node, the leader node distributes the index table fragments of the vector data to each vector node of the designated vector node group, and the leader node synchronizes the node data thereof to other master nodes;
the method comprises the steps that a plurality of vector node groups are arranged, each vector node group comprises a plurality of vector nodes, each vector node stores vector data and an index table fragment corresponding to the vector data, each vector node in the vector node groups responds to a retrieval request or an index creation request from a routing node, and retrieves data according to the retrieval request or synchronizes the data according to the index creation request, wherein the synchronized data comprises an index creation table or an index update table;
each routing node sends a retrieval request or an index creation request sent by a client to a corresponding vector node group, merges retrieval results of each vector node in the vector node group and returns the merged retrieval results to the client;
the index data maintenance tool writes index vector data into an index message queue according to an index creating request of a client, and calls a routing node according to the type of the index message, so that the routing node sends the index creating request to a corresponding vector node group to achieve consistent updating of online vector data and offline vector data, wherein the index vector data comprises the online vector data and the offline vector data.
2. The system of claim 1, wherein the invoking of the routing node according to the type of the index message to cause the routing node to send the create index request to the corresponding vector node group to achieve consistent update of the online vector data and the offline vector data comprises:
when the index data maintenance tool receives a real-time index message, analyzing the real-time index message from the index message queue, and calling the routing node to send the real-time index message to a corresponding vector node group so that the corresponding vector node group creates an index table or updates the index table according to the real-time index message;
when the index data maintenance tool receives an offline index message, an index table offline naming space is obtained from the leader node, historical version data is emptied, the routing node is called to send the offline index message to a corresponding vector node group, so that the corresponding vector node group creates an index table or updates the index table according to the offline index message, and after the creation or the update of the index table is completed, the leader node is called to enable the leader node to switch the offline naming space into an online naming space.
3. The system of claim 2, wherein the online namespace and the offline namespace each represent a data set comprising a vector node group, an index table name, a minimum number of nodes in a vector node group, a number of splits, a number of replica splits, a similarity calculation method, and an index field,
wherein the index table name has an alias such that the client can access the online namespace or the offline namespace according to the alias.
4. The system of claim 1, wherein the index table shards stored on each vector node comprise a master shard and a replica shard,
the vector node periodically sends a heartbeat signal to the leader node so that the leader node determines the state of the vector node according to the heartbeat signal of the vector node,
when one vector node is down, the leader node upgrades the copy fragments corresponding to the main fragments on the down vector node into main fragments, and distributes the copy fragments on the down vector node to other vector nodes.
5. The system of claim 1, wherein the index table shards stored on each vector node comprise a master shard and a replica shard,
one vector node in the vector node group completes synchronous data according to the index creating request and stores the synchronous data into a main fragment of the vector node group,
and after the copy fragment synchronization data of the other vector nodes are finished, each vector node in the vector node group sends a heartbeat signal to the leader node.
6. The system of claim 1, wherein each master node has stored thereon metadata for an index table shard to determine a corresponding vector node group based on the metadata for the index table shard,
when each vector node in the vector node group synchronizes data, the metadata of the copy fragment of each vector node is fed back to the leader node through a heartbeat signal,
and each routing node acquires metadata of the index table fragments from the leader node to update the metadata, the routing nodes write the metadata of the copy fragments of a plurality of vector nodes in a vector node group at the same time, and when the number of the copy fragments of the plurality of vector nodes is insufficient, the routing nodes fail to update the metadata until the synchronization data of the copy fragments of the plurality of vector nodes is finished, and the routing nodes continue to write the metadata of the copy fragments of the plurality of vector nodes.
7. The system of claim 1, wherein the group of master nodes includes at least three master nodes such that the leader node has no fewer than two nodes in the group after downtime,
and when the leader node is down, reselecting one main node from the main node group as a new leader node, and synchronizing the node data of the new leader node to other main nodes.
8. A method for distributed vector retrieval, the method comprising:
the leader node distributes the index table fragments of the vector data to each vector node of the designated vector node group;
when a routing node receives a retrieval request or an index creation request sent by a client, the routing node sends the retrieval request or the index creation request to a corresponding vector node group;
each vector node in the vector node group responds to the retrieval request or the index creating request from the routing node, and retrieves data according to the retrieval request or synchronizes data according to the index creating request;
the routing node combines the retrieval results of all vector nodes in the vector node group and returns the combined retrieval results to the client;
and the index data maintenance tool writes index vector data into an index message queue according to the index creating request, and calls the routing node according to the type of the index message, so that the routing node sends the index creating request to a corresponding vector node group to realize the consistent updating of online vector data and offline vector data, wherein the index vector data comprises the online vector data and the offline vector data.
9. The method of claim 8, wherein the invoking of the routing node according to the type of the index message to cause the routing node to send the create index request to the corresponding vector node group to achieve consistent update of online vector data and offline vector data comprises:
when the index data maintenance tool receives a real-time index message, analyzing the real-time index message from the index message queue, and calling the routing node to send the real-time index message to a corresponding vector node group so that the corresponding vector node group creates an index table or updates the index table according to the real-time index message;
when the index data maintenance tool receives an offline index message, an index table offline naming space is obtained from the leader node, historical version data is emptied, the routing node is called to send the offline index message to a corresponding vector node group, so that the corresponding vector node group creates an index table or updates the index table according to the offline index message, and after the creation or the update of the index table is completed, the leader node is called to enable the leader node to switch the offline naming space into an online naming space.
10. The method of claim 9, wherein the online namespace and the offline namespace each represent a data set comprising a vector node group, an index table name, a minimum number of nodes in a vector node group, a number of splits, a number of replica splits, a similarity calculation method, and an index field,
wherein the index table name has an alias such that the client can access the online namespace or the offline namespace according to the alias.
11. The method of claim 8, wherein the index table shards stored on each vector node comprise a master shard and a replica shard, the method further comprising:
the vector node sends a heartbeat signal to the leader node periodically, and the leader node determines the state of the vector node according to the heartbeat signal of the vector node;
when one vector node is down, the leader node upgrades the copy fragments corresponding to the main fragments on the down vector node into main fragments, and distributes the copy fragments on the down vector node to other vector nodes.
12. The method of claim 8, wherein the index table shards stored on each vector node comprise a master shard and a replica shard, the method further comprising:
one vector node in the vector node group completes synchronous data according to the index creating request and stores the synchronous data into a main fragment of the vector node group,
and after the copy fragment synchronization data of the other vector nodes are finished, each vector node in the vector node group sends a heartbeat signal to the leader node.
13. The method of claim 8, wherein each master node has stored thereon metadata for an index table shard, the method further comprising:
when each vector node in the vector node group synchronizes data, the metadata of the copy fragment of each vector node is fed back to the leader node through a heartbeat signal,
and each routing node acquires metadata of the index table fragments from the leader node to update the metadata, the routing nodes write the metadata of the copy fragments of a plurality of vector nodes in a vector node group at the same time, and when the number of the copy fragments of the plurality of vector nodes is insufficient, the routing nodes fail to update the metadata until the synchronization data of the copy fragments of the plurality of vector nodes is finished, and the routing nodes continue to write the metadata of the copy fragments of the plurality of vector nodes.
14. The method of claim 8, wherein the master node group includes at least three master nodes, the method further comprising:
and when the leader node is down, reselecting one main node from the main node group as a new leader node, and synchronizing the node data of the new leader node to other main nodes.
15. An electronic device comprising a memory and a processor, wherein the memory is configured to store one or more computer instructions, wherein the one or more computer instructions are executed by the processor to implement the method of any one of claims 8-14.
16. A computer-readable storage medium, on which a computer program is stored, the computer program being executable by a processor for implementing the method according to any of the claims 8-14.
CN202110803050.3A 2021-07-15 2021-07-15 Distributed vector retrieval system and method Active CN113254511B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110803050.3A CN113254511B (en) 2021-07-15 2021-07-15 Distributed vector retrieval system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110803050.3A CN113254511B (en) 2021-07-15 2021-07-15 Distributed vector retrieval system and method

Publications (2)

Publication Number Publication Date
CN113254511A CN113254511A (en) 2021-08-13
CN113254511B true CN113254511B (en) 2021-10-12

Family

ID=77180473

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110803050.3A Active CN113254511B (en) 2021-07-15 2021-07-15 Distributed vector retrieval system and method

Country Status (1)

Country Link
CN (1) CN113254511B (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490095B (en) * 2022-04-19 2022-06-21 北京闪马智建科技有限公司 Request result determination method and device, storage medium and electronic device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063486A (en) * 2010-12-28 2011-05-18 东北大学 Multi-dimensional data management-oriented cloud computing query processing method
CN111966684A (en) * 2017-02-13 2020-11-20 赛思研究所 Distributed dataset indexing

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7778984B2 (en) * 2004-11-19 2010-08-17 Microsoft Corporation System and method for a distributed object store

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063486A (en) * 2010-12-28 2011-05-18 东北大学 Multi-dimensional data management-oriented cloud computing query processing method
CN111966684A (en) * 2017-02-13 2020-11-20 赛思研究所 Distributed dataset indexing

Also Published As

Publication number Publication date
CN113254511A (en) 2021-08-13

Similar Documents

Publication Publication Date Title
AU2019236685B2 (en) Distributed file system using consensus nodes
US11853263B2 (en) Geographically-distributed file system using coordinated namespace replication over a wide area network
US9495381B2 (en) Geographically-distributed file system using coordinated namespace replication over a wide area network
EP3340053A1 (en) Organizing execution of distributed operating systems for network devices
CN106936899B (en) Configuration method of distributed statistical analysis system and distributed statistical analysis system
EP3340054A1 (en) Maintaining coherency in distributed operating systems for network devices
CN113037552A (en) Network method, network device, and computer-readable storage medium
CN111090699A (en) Service data synchronization method and device, storage medium and electronic device
EP2643771B1 (en) Real time database system
US20150067004A1 (en) Distributed file system using consensus nodes
CN113268472B (en) Distributed data storage system and method
EP3452919A1 (en) Splitting and moving ranges in a distributed system
EP1330907A2 (en) Method and apparatus for real-time parallel delivery of segments of a large payload file
CN112654978A (en) Method, equipment and system for checking data consistency in distributed heterogeneous storage system in real time
CN103902410A (en) Data backup acceleration method for cloud storage system
CN105069152A (en) Data processing method and apparatus
CN113254511B (en) Distributed vector retrieval system and method
CN115934748A (en) Switch distribution and metrics collection and summary system and method based on distributed SQL
CN117120993A (en) Geographically dispersed hybrid cloud clusters
CN115967611A (en) Cross-domain switching processing method, device, equipment and storage medium
CN113742336A (en) Data processing method and device and storage medium
CN106897365B (en) Data processing method and device
CN109542353B (en) Consistency algorithm for wide area distributed storage system
JP5845298B2 (en) Nodes and programs
Zhang et al. ZooKeeper+: The Optimization of Election Algorithm in Complex Network Circumstance

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240311

Address after: Room 13, 1801, 18th Floor, Building 1, No.16 Taiyanggong Middle Road, Chaoyang District, Beijing, 100028

Patentee after: Beijing Hanlan Wolf Technology Co.,Ltd.

Country or region after: China

Address before: 09 / F, 1801, 18 / F, building 1, No. 16, Taiyanggong Middle Road, Chaoyang District, Beijing 100028

Patentee before: BEIJING HUAPIN BORUI NETWORK TECHNOLOGY CO.,LTD.

Country or region before: China