siati.ai
← Tutte le news
Platform

Sovereign RAG stack now live — Apertus 70B, hybrid search, reranker, Docling

Our retrieval-augmented generation pipeline is in production. Documents you upload are parsed by Docling, indexed with BGE-M3 dense + BM25 sparse vectors, queried with Reciprocal Rank Fusion, and reranked by a cross-encoder before answering with Apertus 70B — the Swiss AI Initiative model. Everything runs on our hardware in Lugano, under Swiss jurisdiction.

What is live

You can now upload your own documents (PDF, DOCX, Markdown, plain text) on my.siati.ai/dashboard/rag, and ask questions about them in plain Italian, English, German or French. The answers cite the exact source chunks they come from. No third-party API touched, no byte leaves Switzerland.

The pipeline is built end-to-end on open-weight, open-source components, hosted entirely on our own infrastructure in Lugano:

Step Component License
Document parsing Docling (IBM) MIT
Dense embeddings BGE-M3 (BAAI, multilingual) Apache 2.0
Sparse vectors BM25 (in-house, multilingual stopwords) own
Vector store Qdrant 1.18 Apache 2.0
Hybrid fusion Reciprocal Rank Fusion (Qdrant native)
Reranker BGE-reranker-v2-m3 (cross-encoder) Apache 2.0
LLM Apertus 70B Instruct (Swiss AI Initiative — EPFL + ETH + CSCS) Apertus license

Why it matters

Plain dense retrieval — what almost every "chat with your documents" service does today — misses two common cases:

  1. Exact-term queries (codes, names, dates, acronyms). The dense embedding buries them in semantic neighbourhoods. We add BM25 sparse vectors that score exact tokens with classic information retrieval. Qdrant fuses both rankings natively with Reciprocal Rank Fusion.
  2. Semantically close but wrong matches. Cosine similarity is a one-shot judgement; a cross-encoder reranker re-reads the top candidates jointly with the query and re-orders them with full attention. Measurable +15–25% recall@5 on standard RAG benchmarks.

For PDF parsing we replaced pdftotext with Docling: it preserves tables (as structured markdown), reading order on multi-column layouts, figure-caption pairing, and falls back to OCR on scanned pages. Tables are the most common thing other RAG stacks butcher silently.

How to try it

  1. Sign in to my.siati.ai/dashboard/rag
  2. Create a knowledge base
  3. Drag-and-drop PDFs (up to 50 MB each)
  4. Ask questions — answers come with cited sources

Developers: API documented at wiki.siati.ai/api/rag. Implementation details in wiki.siati.ai/concepts/rag, tuning guide at wiki.siati.ai/cookbook/rag-tuning.

What we did NOT build with

We deliberately did not use NVIDIA NeMo Retriever — excellent enterprise package but it would have locked us into NVIDIA NIM containers + NV-Embed proprietary weights, blurring our sovereignty story. Same value with open components, no monovendor dependency.

Everything in this stack is auditable, reproducible, replaceable.