RAG system: private AI on your company's documents.

We set up an assistant on your own servers that answers your team's questions from your manuals, contracts or tickets, and cites the page each answer comes from. We use Docling to read the PDFs properly, tables and columns included, and no document ever leaves your network.

What RAG is

RAG, short for retrieval augmented generation, is a way of using a language model in which, before answering, the system searches your documents for the passages related to the question and hands them to the model. The model writes with that text in front of it instead of relying on what it learnt during training, which is why it can cite where each fact comes from. Nor does it need retraining: when a document changes, it is simply indexed again.

An assistant answers only as well as it reads your documents.

When a PDF is turned into plain text, tables lose their columns, headings get mixed into the body and a figure ends up attached to the wrong row. The model does not notice and answers confidently about data that was already broken when it arrived.

Docling recognises the structure of each page (headings, tables, lists, figures and reading order) and converts it into Markdown or JSON that keeps that structure. Each chunk that gets stored then makes sense on its own, and the answer can point to where it comes from.

What Docling does

It reads PDF, Word, PowerPoint, Excel, HTML and scanned images, and produces a structured document ready to be chunked and indexed with LlamaIndex or LangChain. It is open source under the MIT licence and, once its models are downloaded, it runs offline, so your documents never leave your machines.

Docling diagram: PDF, DOCX, PPTX and HTML go in, a structured document comes out, exported to JSON or Markdown, chunked for LlamaIndex or LangChain and fed to a generative AI application

What teams use it for

Each department asks about its own documents, and each person only gets answers drawn from what they could already open.

Technical support What error code does the unit show when the pressure sensor fails? It answers from the manufacturer's manual, with the exact page and the tickets where something similar was already solved.

Human resources How many days of leave do we get for moving house? It answers from the collective agreement and internal policies, so nobody has to dig through the intranet.

Legal and purchasing Does this supplier face a penalty for late delivery? It searches their contract and cites the clause.

Engineering and quality What tolerance does the specification require for this part? It answers from the current version of the document, not an old one, because each is indexed with its version.

Step-by-step example: a question about a contract

Someone in purchasing asks: “How much notice do we need to give to cancel the air-conditioning maintenance contract?”

  1. The question is compared with the chunks of every indexed contract and the closest matches come back.

    vector database
  2. A second model reorders them and keeps the term and renewal clause of the air-conditioning contract.

    reranking
  3. The language model answers using only that text: thirty calendar days before expiry, in writing.

    local model
  4. The answer links to the PDF and to the page with the clause. If no chunk fits, it says so instead of making something up.

    source

How we set it up

Reading with Docling We collect the documents from wherever they live, whether shared folders, the intranet or the document management system, and process them with Docling whenever a new one arrives or an existing one changes.

A vector database with permissions The chunks are stored in Milvus, Qdrant or pgvector if you already use PostgreSQL, together with the permissions of the original document, so nobody gets an answer drawn from something they could not open.

The model, on your servers We serve an open model with vLLM or Ollama on your machines, as we do in AI inference on your own servers, and neither the questions nor the documents go through external services.

Measuring whether it answers well Together with your team we prepare a set of questions with their correct answers and run it every time the documents, the chunking or the model change, so you know whether the system is getting better or worse.

Training for your team

If you want your team to maintain the system or build the next ones, the LangChain: RAG and agents running locally course (2 days) works with Docling, and local LLMs and GPU infrastructure (3 days) covers serving the model.

Frequently asked questions

How is this different from ChatGPT or Copilot?

ChatGPT and Copilot answer from their vendor's cloud, and for them to use your documents you have to upload or connect them to their service. Here the model, the vector database and the documents are on your servers, you choose which model to use and you decide what each person can see.

Can it connect to SharePoint or our document management system?

Yes. We read from SharePoint, network folders or your document management system through its API, and keep the permissions the documents already have there.

What about scanned documents?

Docling runs OCR on pages that are images. It works well with clean scans; with skewed photocopies or handwriting it is worth testing a sample first, and that is the first thing we check.

Do we need a GPU?

Docling can run on CPU alone, although with thousands of documents a GPU speeds it up a lot. The model that writes the answers does need one as soon as several people use it at the same time.

Where do we start?

With a trial on part of your documents and a handful of real questions from your team. That shows how well Docling reads them, how many answers are right and what machine the whole archive would need.

Contact

Which documents does your team look up most?

Tell us what kind of documents they are, what format they are in and where they are stored. We will propose a trial with part of them and a few real questions.

Tell us what documents you have

This contact form is deactivated because you refused to accept Google reCaptcha service which is necessary to validate any messages sent by the form.