RAG development that answers from your documents, with citations
A language model on its own knows nothing about your policies, contracts, manuals or tickets — and will answer confidently anyway. Retrieval-augmented generation fixes that by finding the right passages first and making the model answer from them. We build RAG systems that are measured before they are trusted, respect who is allowed to see what, and run where your data is allowed to be.












































What a RAG build covers
The six parts of a RAG system, and where each one goes wrong
Every RAG demo works. Every RAG system that fails in production fails at one of these six steps — usually retrieval, rarely the model. We build each one deliberately, in Python on LangGraph or plain code, and measure it on its own before measuring the whole.
Ingestion & parsing
PDFs with tables and scans, Word and Excel, Confluence, SharePoint, Liferay, ERPNext, ticketing tools and databases — parsed with layout awareness (Docling, OCR where needed), de-duplicated, tagged with metadata and synced incrementally.
Chunking & embeddings
Chunk sizes and overlaps chosen per document type, headings and tables kept whole, parent-child chunks for long documents, and embeddings from an open model on your hardware or an API model — chosen by measured retrieval quality, not habit.
Hybrid retrieval & reranking
Vector similarity plus keyword search (BM25) fused and reranked, with metadata filters, query rewriting and multi-query for vague questions — on Qdrant, pgvector, Elasticsearch or Chroma depending on scale and what you already run.
Grounded generation
Prompts that force the answer to come from the retrieved passages, cite them, and say 'not in the documents' when it isn't; streaming responses; conversation memory; Claude, GPT, Gemini or an open model on vLLM or Ollama.
Evaluation & observability
A golden question set built with your experts; context recall, faithfulness and answer relevance scored on every change; traces of every retrieval and generation in production so a wrong answer can be explained and fixed.
Permissions, privacy & guardrails
Document-level access control enforced at retrieval time from your identity provider; PII redaction; prompt-injection and topic guardrails; audit logs; and deployment in your VPC, in-region on Bedrock or Azure, or fully on-premise.
What RAG is
What retrieval-augmented generation is, and when it is the right tool
Retrieval-augmented generation is a simple idea with a lot of engineering underneath: when a user asks a question, search your own content for the passages most likely to contain the answer, hand those passages to a language model together with the question, and have the model answer from them — quoting where it got each point. The model's job shrinks from 'know everything' to 'read these pages and answer', which is a job current models do very well. The knowledge stays in your documents, updates the moment a document changes, and can be shown to the user as a citation.
RAG is the right tool when the answers must be current, traceable and permissioned — policies, product documentation, contracts, engineering standards, support histories, regulatory circulars. It is the wrong tool for teaching a model a style or a format (that is fine-tuning), for reasoning over a handful of documents that fit in the model's context window (just send them), and for questions whose answer is a calculation over structured data (that is a query, and an agent that writes queries is the better fit). Most enterprise assistants end up as RAG at the core with one or both of the others around it, and we say so in the first week rather than after building the wrong one.
The assistant on this website is RAG in its smallest honest form. It answers from our case studies, services and team pages: a scoring function retrieves the four most relevant case studies for each question, they go into the prompt, and a hosted open model answers from them with instructions not to invent prices or timelines. There is no vector database, because for a corpus of a few hundred documents a scored keyword search is faster, cheaper and easier to debug. Retrieval should fit the corpus — that principle, applied to a corpus of two hundred thousand documents, is what the rest of this page is about.
Architecture
The reference architecture we build from, and the choices inside it
The pipeline is the same in every RAG system we build: connectors pull documents from their sources and keep them in sync; a parser turns each into clean text with structure and metadata; a chunker splits it into passages sized for retrieval; an embedding model turns each passage into a vector; an index stores vectors and keywords side by side; at query time a retriever fetches candidates, a reranker orders them, and a generator writes the answer with citations; and an evaluation harness scores every stage. What differs is each choice inside it, and those are made on your data during the pilot, not copied from a tutorial.
Some of the choices that matter most: whether to keep tables and headings whole or split them (keep them, almost always); whether embeddings run on an open model in your environment or on an API (a data-residency decision first, a quality decision second); whether the index is Qdrant, pgvector on the PostgreSQL you already run, Elasticsearch if you already have it, or Chroma for a small deployment; whether a reranker is worth its latency (for most enterprise corpora, yes); and which model generates — Claude, GPT and Gemini through their APIs or in-region on Bedrock and Azure, or Llama, Qwen and Mistral on vLLM or Ollama when nothing may leave the building.
- Connectors — SharePoint, Confluence, Google Drive, S3, Liferay, ERPNext, Jira/ServiceNow, SQL databases, web crawls; incremental sync with deletions honoured
- Parsing — Docling for layout-aware PDF and Office parsing, OCR for scans, table extraction, language detection
- Indexing — hybrid vector + BM25, metadata filters, per-document ACLs stored with the chunks
- Retrieval — query rewriting, multi-query, reranking, parent-chunk expansion, source diversity
- Generation — grounded prompting, citations, refusal when unsupported, streaming, conversation memory
- Operations — evaluation harness, tracing, feedback capture, cost and latency dashboards, re-indexing jobs
Retrieval quality
Why retrieval decides the quality, and how we measure it
When a RAG assistant gives a wrong answer, the model is usually blameless: the right passage was never retrieved, or it was retrieved along with six irrelevant ones and lost in the middle. So we treat retrieval as the product. Before the model is even connected we build a golden set with your subject-matter experts — a few hundred real questions with the documents and passages that answer them — and score retrieval on it: is the right passage in the top five, the top ten, at all? Every change to chunking, embeddings, filters or reranking is measured against that set, and the numbers go in the weekly report.
Only then do we measure the whole system: faithfulness (is every claim in the answer supported by a retrieved passage?), answer relevance (does it actually answer the question?) and context precision (how much of what was retrieved was needed?). We use an LLM judge for scale and human review for the cases that matter — regulatory answers, anything customer-facing — and we keep the golden set alive after go-live, adding the questions users actually ask and the ones the assistant got wrong. A RAG system without an evaluation set is a demo; the set is what turns it into something a compliance team will sign off.
In production, every question, retrieved passage, prompt and answer is traced, so when a user reports a bad answer we can see in seconds whether it was a parsing gap, a retrieval miss, a permission filter or the model — and fix that, not guess.
Permissions & privacy
Answering only from what this user is allowed to see, where the data is allowed to be
The first question a bank, hospital or government department asks about a RAG assistant is not accuracy but leakage: will it quote an HR document to someone who cannot open it? The answer has to be enforced at retrieval, not by asking the model to be discreet. We store each document's access list with its chunks, resolve the user's groups from your identity provider (Entra ID, Okta, Keycloak, LDAP) at query time, and filter the index before the model sees anything. Permission changes at the source propagate on the next sync, and the audit log records which passages were shown to whom.
Where the system runs is the second question. Our default for regulated clients is a deployment inside your cloud account or data centre — embeddings and the vector index on your infrastructure, and generation either on an open model served by vLLM or Ollama on your GPUs, or through an in-region managed endpoint such as Amazon Bedrock or Azure OpenAI with no training on your data. For Indian clients that keeps the corpus inside the country and inside the controls you already have for the Digital Personal Data Protection Act and sector regulators; for our GCC clients it keeps it in-Kingdom or in-country. PII redaction before indexing, prompt-injection guardrails on user input and on retrieved content, and topic restrictions on output are configured per deployment, not bolted on later.
Much of this work is the same data and permissions engineering we have done on document platforms for years. Engineers India Limited's 200,000-document engineering repository, with metadata classification, role-based access aligned to project hierarchies and Elasticsearch search that turned hours of retrieval into seconds, is exactly the kind of corpus a RAG assistant sits on top of — and the metadata and access model are most of the work.
Timeline & cost
How long a RAG project takes, and what drives the cost
As a guide from our engagements: a two-week discovery produces the use case, the source inventory, the golden question set and a costed plan; a pilot on one corpus and one user group takes four to six weeks and ends with measured retrieval and answer quality you can compare against the bar you set; and production — all sources, permissions, integration into the channel users live in (a portal, Teams, Slack, your app), monitoring and hand-over — is typically three to four months from kick-off. Adding sources or user groups afterwards is incremental work, because the pipeline is built for it.
Five things set the cost. The number and messiness of the sources — a clean SharePoint is one thing, twenty years of scanned PDFs another; the permission model, because per-document ACLs from three identity sources are real work; the quality bar and the languages it must hold in, which decide how much evaluation and tuning is needed; the hosting choice, where API models are cheap to start and self-hosted GPUs are cheaper at volume and mandatory for some data; and the integration surface — a chat box is quick, a copilot inside an existing workflow is not. Running costs are mostly model tokens or GPU hours plus the index, and we give you a per-question estimate during the pilot so the business case is arithmetic rather than hope.
Discovery is a fixed fee, the pilot is a fixed price, and production is a fixed price for the agreed scope with change control. We do not publish a rate card because a RAG system without a source inventory is a guess; tell us what you want it to answer and from what, and we will send a bracket within a week.
Where it lands
What enterprises actually use RAG for
Policy and compliance assistants for banks and insurers — RBI and IRDAI circulars, internal policies and product manuals — that answer branch and operations staff with the clause cited, so the human check is a glance rather than a search. Engineering and standards repositories, where the question is 'which revision of which specification applies to this project' and the answer must be exact. Manufacturing SOPs, quality manuals and maintenance histories on the shop floor, in the language the operators speak. Clinical protocols and formularies for healthcare staff. Support and service desks that answer from resolved tickets and product documentation before a human picks up. And HR and IT self-service inside an intranet, which is where most organisations sensibly start.
In each case the assistant is a front end on the systems you already have — often a Liferay portal or an ERPNext instance we built or maintain — and the best deployments put the answer where the work happens rather than in a separate chat window. When the questions start to need action rather than answers — raise the ticket, draft the reply, run the report — the same retrieval layer becomes the knowledge behind an agent, which is the next page in our enterprise AI practice.
Start with the two-week discovery
You leave with a source inventory, a golden question set built with your experts, a hosting recommendation and a costed pilot plan — whether or not you go ahead with us.
Book a RAG discovery callOur technology stack
What a production RAG system runs on
Python with LangGraph or plain code for the pipeline, Docling for parsing, Qdrant, pgvector or Elasticsearch for the index, and the model that fits your data-residency rules — API, in-region managed, or self-hosted on vLLM or Ollama.
How we deliver
From a question set to an assistant your compliance team signs off
Five phases, each ending in a number: a golden set, measured retrieval, measured answers, a permissioned production system, and a monthly quality report.
Discover
Use case, source inventory, permission model, golden question set with your experts, hosting decision and a costed plan — two weeks, fixed fee.
Ingest & index
Connectors, parsing and chunking tuned per document type; hybrid index with metadata and ACLs; retrieval scored on the golden set.
Generate & evaluate
Grounded prompting with citations; faithfulness and relevance measured; a pilot group using it on real questions for four to six weeks.
Harden & integrate
Permissions from your identity provider, guardrails, PII handling, audit logs; delivery inside the portal, Teams, Slack or app your users already open.
Operate
Tracing, feedback capture, re-indexing and the golden set kept alive; a monthly quality and cost report under a support retainer.
Case studies
The document, search and analytics platforms our AI work builds on
Document repositories with metadata and permissions, Elasticsearch-backed search and risk-analytics systems — the data and access engineering a retrieval-augmented assistant depends on.
Engineers India Limited
Engineering Knowledge Repository & Project Document Management. ATS implemented a Liferay DXP-based Document Management System (DMS) with metadata-driven classification, version control, Elasticsearch-powered search, and role-based access control aligned to project hierarchies.
Read case study
Financial Services / Credit RatingCareEdge Analytics & Advisory
Early Warning System (EWS) for Banking Risk Analytics. ATS Global Techsoft designed and deployed a mission-critical Early Warning System (EWS) on a modern Angular + Spring Boot architecture.
Read case study
Public Sector BankingBank of Baroda — EWS Migration
Early Warning System Migration & Enhancement for Public Sector Bank. ATS led the complete migration to a Spring Boot + Angular architecture on Liferay DXP 7.4, introducing Angular portlets for dynamic UI, a multi-level maker-checker approval workflow, and predictive analytics modules for real-time financial risk flagging.
Read case study
Central Banking / Financial RegulationEWS-Plus — Royal Monetary Authority of Bhutan
National Banking Sector Early Warning System for Fraud & Financial Stability Monitoring. ATS built a comprehensive Liferay DXP 7.4 EWS platform featuring Liferay REST service modules for data ingestion, a multi-level Kaleo workflow for indicator data review (maker-checker), custom Elasticsearch integration for real-time indexed search and alerting, an automated notification system (in-app and email), and dynamic Excel reporting.
Read case study
IT Services & ConsultingWipro Limited
Enterprise Digital Experience Platform & Employee Self-Service Portal. ATS Global Techsoft architected and implemented a comprehensive Liferay DXP-based enterprise portal, integrating HR systems, ITSM workflows, and internal communications into a single pane of glass.
Read case study
Government / Cultural HeritageNational Library & Archives (NA) — UAE
National Archives Citizen Access Portal with Secure Onboarding & Request Management. ATS built a secure, two-portal architecture (public-facing External Portal and staff-facing Internal Portal) on Liferay DXP 7.3.
Read case study
From the blog
All articlesAlso in our AI practice
Custom & enterprise AI overview
RAG, agents, LLM integrations, responsible-AI practice, the models we deploy and the case studies behind the practice.
ExplorePython development
The engineering under every RAG pipeline — FastAPI services, data pipelines and the Python practice that builds them.
ExploreLiferay DXP portals
Where most enterprise assistants are delivered: inside the intranet or customer portal people already use.
ExploreFAQs
RAG development — questions we are asked first
What is the difference between RAG and fine-tuning?+
RAG retrieves passages from your documents at question time and has the model answer from them, so knowledge stays current, cited and permissioned. Fine-tuning changes the model's weights to teach it a style, a format or a narrow skill — it is poor at storing facts and cannot cite them. Most enterprise assistants need RAG; a few need a small fine-tune on top for tone or output structure.
How do you stop the assistant making things up?+
By making retrieval good enough that the right passage is nearly always present, prompting the model to answer only from the passages and cite them, instructing it to say when the documents do not cover the question, and measuring faithfulness on a golden question set on every change. In production every answer is traced back to its passages, so a wrong answer can be diagnosed rather than argued about.
Can it run without sending our data to OpenAI or any outside service?+
Yes. Embeddings, the index and generation can all run inside your cloud account or data centre — open models such as Llama, Qwen and Mistral served by vLLM or Ollama on your GPUs. Where a managed model is acceptable, Amazon Bedrock and Azure OpenAI offer in-region endpoints that do not train on your data. The hosting decision is made in discovery against your regulator's requirements.
Which sources can it connect to?+
SharePoint, Confluence, Google Drive, S3 and file shares, Liferay and other portals, ERPNext and other ERPs, Jira and ServiceNow, SQL databases, email archives and websites — through connectors that sync incrementally and honour deletions. Scanned PDFs are handled with OCR and layout-aware parsing so tables and headings survive.
How does it handle permissions?+
Each document's access list is stored with its chunks; at question time the user's groups are resolved from your identity provider and the index is filtered before anything reaches the model. Permission changes at the source propagate on the next sync, and an audit log records which passages were shown to whom. The model is never the enforcement point.
How long does a RAG project take and what does it cost?+
Two weeks of discovery, a four-to-six-week pilot on one corpus, and typically three to four months to a permissioned production system across all sources. Cost is driven by the number and state of the sources, the permission model, the quality bar and languages, the hosting choice and how deeply it integrates into existing tools. Discovery and the pilot are fixed-fee; production is a fixed price for the agreed scope.
Let’s work together
Tell us what it should answer, and from what
Send the questions your teams ask most, the systems the answers live in and where the data is allowed to run — we will come back within a week with a discovery proposal and a bracket for the pilot.