Concepts in 5 minutes

The 30-second mental model — query, embedding, retrieval, reranking, generation, translation.

GENIE.AI at a glance

flowchart LR
    U[User] --> NG[NGINX<br/>TLS termination]
    NG --> FE[Frontend SPA<br/>Vue 3 / Flutter<br/>port 8090]
    NG --> KG[Kong<br/>API gateway<br/>CORS / rate limit]
    KG --> BE[Backend BFF<br/>Node.js]
    KG --> DR[Document Repository]
    BE --> KC[Keycloak<br/>OIDC]
    BE --> CQ[ChatQnA<br/>OPEA orchestrator]
    CQ --> EM[Embedding wrapper<br/>:6000]
    EM --> TEI[TEI]
    CQ --> RT[Retriever<br/>ArangoDB]
    CQ --> RR[Reranker<br/>TEI]
    CQ --> LM[vLLM<br/>LLM]
    DR --> ADB[(ArangoDB<br/>vectors + graph + docs)]
    RT --> ADB
    DP[Dataprep<br/>PDF / Word / etc.] --> ADB
    DR --> DP

Two paths converge at NGINX: the SPA (Vue / Flutter, served on location / via the frontend container port 8090) and the API (Kong proxies /api/* and /auth/* to the backend BFF). One request then travels: User → Nginx → Kong → Backend → ChatQnA → {Embedding wrapper → TEI, Retriever, Reranker, vLLM} → streamed response back. Documents are ingested through the Document Repository / Dataprep path into ArangoDB.

One paragraph

A user types a question into the chat. The question is turned into numbers (embedding), the numbers are used to find the most relevant passages from your indexed documents (retrieval), the top candidates are re-scored by a specialised model (reranking), and the top ones are fed to a large language model (generation) which writes a grounded answer in your language (translation when the user’s UI is not English).

The five stages

#StageWhat it doesWhere it runs
1EmbeddingTurns text into a 768-D vectorTEI embedding microservice
2RetrievalHybrid vector + BM25 search over ArangoDBRetriever microservice
3RerankingRe-scores the top candidates with a cross-encoderReranker microservice
4GenerationLLM writes the answer from the top chunksChatQnA → vLLM
5Translation (optional)Translates the response to the user’s UI localeTranslation microservice

The pieces you actually deploy

  • Frontend — Vue 3 single-page app the citizen sees in the browser.
  • Backend (BFF) — Node.js / Express that brokers auth, chat, and profile requests.
  • Mobile — Flutter app for Android / iOS.
  • OPEA microservices — Python / FastAPI services that do embedding, retrieval, reranking, generation, and translation.
  • ArangoDB — graph + vector store for the knowledge base.
  • Keycloak — identity provider (or any OIDC).
  • Kong / NGINX — API gateway.
  • Victoria + Grafana* — observability stack (optional).

Sovereignty knobs

  • Models on your hardware — vLLM and TEI run on your nodes; no model API key required.
  • Data stays home — ArangoDB and the document store run in your perimeter.
  • Identity is yours — Keycloak, or broker to any OIDC / SAML provider.
  • Telemetry is opt-in — ENABLE_OBSERVABILITY=1 switches it on; everything lands in self-hosted Victoria* stores.

What’s next