Deploying Amgix
Amgix runs in containers and can be deployed anywhere a container can run: Docker, Kubernetes, cloud container services, etc.
Amgix Images
We ship multiple container images with every release:
- amgixio/amgix-one: single container deployment for testing or for applications with modest requirements. It packs all the components Amgix requires to run into a single image.
- amgixio/amgix-api: lightweight front-end API layer.
- amgixio/amgix-encoder: Amgix worker.
Image Versioning
All images are tagged with versions as follows:
- major version: for example amgixio/amgix-one:1
- minor version: for example amgixio/amgix-one:1.0
- full version: for example amgixio/amgix-one:v1.0.0-beta3.3
Image Flavors
amgix-api images are only shipped with one container version. amgix-one and amgix-encoder come in three different flavors:
- CPU (no suffix, e.g. amgixio/amgix-one:1): These images do not have GPU libraries and cannot take advantage of GPU when embedding with models.
- GPU ("-gpu" suffix, e.g. amgixio/amgix-one:1-gpu): These images are built with NVIDIA GPU libraries and can dramatically speed up embedding with models. These images are large, but provide the best embedding performance.
- No Embedding ("-noembed" suffix, e.g. amgixio/amgix-one:1-noembed): These images are the smallest and do not have libraries to do model embeddings. They can be used when you are not interested in model embedding and want to use the built-in tokenizers: WMTR (keyword), full_text, whitespace, and trigrams.
Deployment Types
Amgix-One
The easiest way to try Amgix is to run Amgix-One where everything is in a single containers. This setup is not intended for scaling or large datasets, but is a good place to start. If your data is persisted on a volume outside of the container, you can later upgrade to a larger scale deployment of Amgix without losing your data.
docker run -d -p 8234:8234 -v /path/on/host:/data amgixio/amgix-one:1
Modular Deployment
For an example of a simple modular deployment, see our sample docker compose file. This deploys Qdrant, RabbitMQ, Amgix API, and Amgix Encoder as separate services. It can also serve as a basis for deployment where you connect Amgix to your existing instances of RabbitMQ and/or database backend (Qdrant, MariaDB, PostgreSQL).
Advanced Deployment
Conceptually, Advanced Deployment is very similar to Modular Deployment, where every component of the system runs its own set of containers. However, you can deploy Amgix Encoders as separate pools of services playing various roles and offering different capabilities to the system. For example, you can configure one pool of Encoders to do indexing of uploaded documents, while another pool to process search queries. You can also control which pool of Encoders do model embeddings (heavy operation) and which do not. This allows you to configure the system for optimal resource utilization and performance, based on your needs.
Configuration
For information on how to configure Amgix services, please refer to Configuration page.