Skip to content

Amgix Architecture Overview

Amgix was designed as a modular application to run in containerized environments (docker, Kubernetes, etc.). The goal was to make the application Ops friendly and allow separate components of the system to be configured and scaled separately based on demand and requirements.

Amgix Components

There are four main components to the Amgix system:

  • Amgix API is a lightweight frontend application that serves user queries and communicates with backends to do the heavy lifting.
  • Amgix Encoder is a worker that handles ingestion and embedding, and facilitates search and ranking.
  • RabbitMQ server is the messaging/communication layer of the system, responsible for queuing, RPC communications between Amgix nodes, and distributed locking.
  • Storage Backend can be your choice of Qdrant, MariaDB, or PostgreSQL. This layer is storing information about your collections, documents and vectors and performs retrieval based on your queries.

Amgix Encoder deployments are flexible: you can configure nodes for different mixes of work—such as loading embedding models, consuming ingestion jobs from the queue, joining RPC traffic between nodes, or combinations of those. That lets you run separate encoder pools with different configurations and scale the system horizontally in a more granular way.

Amgix Encoder nodes that host embedding models watch demand in real time and load or unload models across the pool as needed. That helps balance latency and resource use without manual reconfiguration. The cluster self-optimizes for the workload.

For an example of a simple deployment, see our sample docker compose file.

Amgix-One

If the above sounds overwhelming, or if you simply want to try Amgix or have modest requirements, we built Amgix-One to run all the necessary components in a single container:

docker run -d -p 8234:8234 -v /path/on/host:/data amgixio/amgix-one:1