cd /news/artificial-intelligence/i-built-a-rag-document-assistant-wit… · home topics artificial-intelligence article
[ARTICLE · art-127339] src=dev.to ↗ pub= topic=artificial-intelligence verified=true sentiment=↑ positive

I Built a RAG Document Assistant with FastAPI, React, FAISS and Ollama

A developer built CloudRAG, an open-source retrieval-augmented generation document assistant that lets users upload documents and ask questions about them. The application uses FastAPI for the backend, React for the frontend, FAISS for local vector search, and Ollama for local LLM inference, with Docker and Pytest used during development. The developer added retrieval evaluation and testing, and experimented with a Qdrant Cloud integration that was not successfully deployed, leaving FAISS as the working implementation.

by read2 min views1 publishedSep 11, 2026

I've been learning more about Retrieval-Augmented Generation (RAG), and I wanted to understand what actually happens inside a RAG application.

So instead of building another simple chatbot, I decided to build a complete application around documents.

The result is CloudRAG:

https://github.com/abderaoufsec/CloudRAG

The idea is straightforward.

You upload documents, then ask questions about them.

Instead of sending the question directly to the LLM, the application first searches the uploaded documents for relevant information. That information is then given to the LLM as context.

The simplified flow looks like this:

Document
   ↓
Text extraction
   ↓
Chunking
   ↓
Embeddings
   ↓
FAISS
   ↓
Relevant chunks
   ↓
Ollama
   ↓
Answer + sources

For the backend I used:

For the RAG pipeline:

For the frontend:

I also used Docker and Pytest during development.

I wanted the project to work locally without depending on a paid external service.

FAISS makes it possible to store and search the embeddings locally, which made it a good fit for the current version of the project.

The biggest thing I learned is that RAG isn't simply:

"Send documents to an LLM."

There are several steps that affect the final result.

How you split documents matters.

How you generate embeddings matters.

How you retrieve relevant chunks matters.

And you need a way to evaluate whether your retrieval is actually useful.

That's why I also added retrieval evaluation and testing to the project.

I also experimented with Qdrant Cloud and added an integration for it.

However, I wasn't able to successfully deploy and validate the Qdrant part.

So the current working implementation uses FAISS locally.

I'd like to come back to the Qdrant deployment later and compare it with the local FAISS setup.

This project was mainly a learning exercise, but it gave me a much better understanding of what goes into building a RAG application.

I now have a better understanding of:

The source code is available here:

I'd be happy to hear feedback, especially from people who have worked on improving RAG retrieval quality.

── more in #artificial-intelligence 4 stories · sorted by recency
── more on @cloudrag 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-a-rag-docume…] indexed:0 read:2min 2026-09-11 ·