Semantic search as microservices, with YAML-driven model swaps
GNES turns encoders, indexers, and preprocessors into Docker containers you can orchestrate and reconfigure without touching code.
What it does GNES is a semantic search system that runs encoders, indexers, preprocessors, and routers as independent microservices in Docker containers. It handles text-to-text, image-to-image, video-to-video, and “any-to-any” search by wiring deep-learning models into a pipeline orchestrated via Docker Swarm or Kubernetes. You configure the stack through YAML files rather than code.
The interesting bit The model-as-plugin architecture via GNES Hub means you can package a custom PyTorch or TensorFlow model as a Docker image and drop it in as a replacement component. Swapping a VGG layer, per the README’s example, is allegedly a one-line YAML change — though the docs don’t show the actual diff.
Key highlights
- Modular pipeline: encoder, indexer, preprocessor, router each run in separate containers with versioned gRPC APIs
- Multiple Docker base images from Alpine (no DL libraries, edge-friendly) to “full” (Ubuntu 16.04, CUDA 10, TF 1.14, PyTorch 1.1, Faiss)
- Cherry-pickable pip extras:
gnes[bert],gnes[vision],gnes[audio], etc. — orgnes[all]for everything - GNES Hub hosts community models as Docker containers on Docker Hub
- Claims support for Python/C/Java/Go/HTTP clients, though the README emphasizes Python
Caveats
- The project appears dormant: README references TF 1.14 and PyTorch 1.1, and the Tencent Cloud mirror was shut down in October 2019
- “Latest” Docker tag tracks master and “may not be stable”; the README itself warns against using it
- The barebone pip install excludes all deep learning frameworks — you’ll be installing dependencies manually
Verdict Worth a look if you’re building a multi-modal search pipeline and want containerized model swapping, but check commit activity before betting production on it. If you need actively maintained neural search, newer alternatives have likely surpassed this stack.