Installation Guide
SANDI Solr supports two installation modes depending on your available hardware and preferences:
| Requirement | Recommended | Notes |
|---|---|---|
| Operating system | Ubuntu 24.04.4 LTS | Other Linux distributions may work |
| RAM | 32 GB or more | Required for local LLM and embedding services |
| GPU | NVIDIA 24 GB VRAM card | NVIDIA RTX 3090 or equivalent; NVIDIA drivers must be installed |
| Disk | 100 GB free | For Docker images and model weights |
| Container runtime | Docker with NVIDIA Container Toolkit | See step 1 |
| Python | Python 3 | Required for setup utilities |
Ubuntu 24.04.4 LTS is the recommended operating system with Python 3 pre-installed. Follow the official Docker installation guide for Ubuntu:
https://docs.docker.com/engine/install/ubuntu/
After installing Docker, verify that your NVIDIA drivers are installed and the GPU is visible:
You should see your GPU model, driver version, and CUDA version listed in the output. If the command is not found, install the NVIDIA drivers for your GPU before continuing.
Download the SANDI Solr installation package from the SoftCorporation website:
https://softcorporation.com/products/sandi/downloads/sandi-solr-0.4.1.zip
You can download directly from the terminal:
Extract the ZIP archive to a directory where you have full write permissions. The home directory is recommended:
This will create a sandi-solr-X.X.X directory
containing all configuration files, Docker Compose definitions, and Solr collection configs.
Navigate into the extracted directory and start all services using Docker Compose:
Docker will pull the required images and start all containers in detached mode. This may take long time on first run as images are downloaded.
When startup completes successfully, you should see output similar to the following:
You can check the status of all running containers at any time with:
Once all containers are running, open the following URLs in your browser:
| Interface | URL |
|---|---|
| Search API | http://localhost:8081/sandi/en/sandi-search.html |
| Index API | http://localhost:8082/sandi/en/sandi-index.html |
| Admin API | http://localhost:8082/sandi/en/sandi-admin.html |
| Requirement | Recommended | Notes |
|---|---|---|
| Operating system | Ubuntu 24.04.4 LTS | Other Linux distributions may work |
| RAM | 16 GB or more | No GPU memory needed — AI services run in OpenAI cloud |
| GPU | Not required | Local GPU services are disabled in this mode |
| Container runtime | Docker | NVIDIA Container Toolkit is not required |
| OpenAI API key | Active subscription | Used by embedding, LLM, and reranking services |
| Python | Python 3 | Required for setup utilities |
Ubuntu 24.04.4 LTS is the recommended operating system with Python 3 pre-installed. Follow the official Docker installation guide for Ubuntu:
https://docs.docker.com/engine/install/ubuntu/
No NVIDIA drivers or GPU toolkit are required for this installation mode.
Download the SANDI Solr installation package from the SoftCorporation website:
https://softcorporation.com/products/sandi/downloads/sandi-solr-0.3.0.zip
You can download directly from the terminal:
Extract the ZIP archive to a directory where you have full write permissions. The home directory is recommended:
This will create a sandi-solr-X.X.X directory
containing all configuration files, Docker Compose definitions, and Solr collection configs.
Open the .env file
in the extracted directory and set your OpenAI API key:
Docker Compose automatically loads this file at startup and passes the key to the OpenAI services.
Open docker-compose.yml in a text editor.
Services that contain a profiles: [manual_start]
block are excluded from the default startup. Commenting those lines activates the service.
You need to activate the three OpenAI-backed services and deactivate their GPU-dependent counterparts.
Embedding — activate sandi_emb5,
deactivate sandi_emb4:
LLM — activate sandi_llm4,
deactivate sandi_llm3:
Reranking — activate sandi_rer2,
deactivate sandi_rer1:
Save docker-compose.yml,
then navigate into the extracted directory and start all services:
Docker will pull the required images and start all containers in detached mode. This may take long time on first run as images are downloaded.
When startup completes successfully, you should see output similar to the following.
Note that sandi_emb5,
sandi_llm4, and
sandi_rer2 appear
instead of their GPU counterparts:
You can check the status of all running containers at any time with:
Once all containers are running, open the following URLs in your browser:
| Interface | URL |
|---|---|
| Search API | http://localhost:8081/sandi/en/sandi-search.html |
| Index API | http://localhost:8082/sandi/en/sandi-index.html |
| Admin API | http://localhost:8082/sandi/en/sandi-admin.html |
The Docker Compose stack starts the following services. The AI services differ between installation modes:
| Container | Role | Mode |
|---|---|---|
sandi_zoo1, sandi_zoo2, sandi_zoo3 | Apache ZooKeeper cluster — coordinates SolrCloud | Both |
sandi_solr1, sandi_solr2 | Apache Solr 9.8.1 nodes — storage and retrieval | Both |
sandi_nlp1 | NLP service — entity extraction, POS tagging, lemmatization | Both |
sandi_cls1 | Client search processing service | Both |
sandi_cli1 | Client index processing service | Both |
sandi_search1 | SANDI Search REST API (port 8081) | Both |
sandi_index1 | SANDI Index (and Admin) REST API (port 8082) | Both |
sandi_emb4 | Embedding service — GTE-Large model (local GPU) | Local AI |
sandi_llm3 | LLM service — spell check, query expansion, RAG answers (local GPU) | Local AI |
sandi_rer1 | Reranking service — Qwen3-Reranker-0.6B cross-encoder (local GPU) | Local AI |
sandi_emb5 | Embedding service — OpenAI API | OpenAI |
sandi_llm4 | LLM service — OpenAI API | OpenAI |
sandi_rer2 | Reranking service — OpenAI API | OpenAI |
The single-machine setup described in this guide is intended for learning, evaluation, and development. For production use, each service group should run on dedicated hardware:
Check logs for the affected container:
Ensure the NVIDIA Container Toolkit is installed and Docker is configured to use it. Verify GPU access inside a container:
Allow a minute after startup for all services to initialize, particularly the Solr nodes and ZooKeeper cluster. Check that no other process is using ports 8081 or 8082:
To stop all running containers: