From the course: LLM Foundations: Vector Databases for Caching and Retrieval Augmented Generation (RAG)
Milvus architecture
From the course: LLM Foundations: Vector Databases for Caching and Retrieval Augmented Generation (RAG)
Milvus architecture
In this video, we will review the architecture of Milvus. We will be discussing a simplified version of the architecture at a logical level ignoring design details. Clients of Milvus typically access it through an SDK. They can also directly use the Milvus API to perform these operations. The SDK talks to the access layer in Milvus. The access layer is a RESTful gRPC API. It typically runs on Port 19530. When the SDK sends data definition language, or DDL, statements to the access layer, like creating databases, collections, or users, the request is routed to a coordinator service. The coordinator service drives the Milvus cluster and performs all management and maintenance operations. It uses a metadata storage for storing metadata about the cluster. This uses the etcd service by default for storage. When data manipulation language, or DML, statements are received by the access layer, like inserts, updates, and deletes, they are sent to the message queue. By default, Milvus uses RocksMQ, but this can also be substituted by either Kafka or Pulsar for a message queue. The worker node does all the actual work in Milvus, whether it is storing, deleting, or querying data. The coordinator service drives the worker node by helping it with metadata. All data is stored as part of an object store. By default, Milvus uses MinIO, but it can be replaced by S3 or Azure Blob if needed. How does querying work? When a query is received by the access layer, it is sent to the coordinator service. The coordinator service ensures that the query is accessing objects that are available and allowed for access by the specific user. It then uses the metadata to determine where the data is stored, and then communicates with the worker node to schedule the search. The worker node is responsible for loading indexes, searching, and returning results back. If you are interested in learning deeper about the architecture, please review Milvus architecture documentation. We will now move forward with the objects in Milvus.