VIR: https://en.andros.dev/blog/aa31d744/from-zero-to-a-rag-system-successes-and-failures/


BISTVO (5 ključnih točk)

  • Avtor je moral zgraditi interni RAG‑chat za inženirje, ki lokalno uporablja LLM in odgovarja na vprašanja o skoraj desetletju projektne dokumentacije (~1 TB), z velikim poudarkom na OrcaFlex datotekah.

  • Prvotni pristop (LlamaIndex + JSON + “kar vse poberi iz Azure folderja”) je sesul RAM in bil neobvladljiv; rešil ga je agresiven filtrirni pipeline po ekstenzijah in tipih datotek ter konverzija v plain text.

  • Ključni preklop je bil na ChromaDB kot namensko vektorsko bazo (nad SQLite), z batch obdelavo ~150 datotek naenkrat, checkpointi in možnostjo varnega ponovnega zagona brez izgube napredka.

  • Zaradi šibke lokalne GPU je najel VM z NVIDIA RTX 4000 SFF Ada (20 GB VRAM); indeksiranje 451 GB dokumentov je trajalo 2–3 tedne in ustvarilo ~738.000 vektorjev ter 54 GB indeks.

  • Končna arhitektura: lokalni LLM prek Ollama (llama3.2:3b), embeddings z nomic‑embed‑text, ChromaDB (HNSW), LlamaIndex kot RAG orkestrator, Flask API + Gunicorn, Streamlit UI, Docker Compose, GPU pospešek in dokumenti servirani direktno iz Azure Blob Storage prek SAS tokenov.

    2026-03-27_14h35_04

DEJSTVA (številke, imena, tehnologije)

  • Izvorni podatkovni set: približno 1 TB projektov in tehnične dokumentacije; po filtriranju je indeksiral 451 GB dokumentov.

  • Po končanem indeksiranju je imel 738.470 vektorjev in približno 54 GB vektorskega indeksa v ChromaDB (nad SQLite).

  • Batch pipeline je obdeloval približno 150 datotek na iteracijo, z eksplicitnimi klici garbage collectorja med batchi.

  • Najeta GPU mašina: VM z NVIDIA RTX 4000 SFF Ada (20 GB VRAM), strošek najema pri Hetznerju je bil 184 € za obdobje indeksiranja.

  • Tehnološki sklad: Ollama + llama3.2:3b (LLM), nomic‑embed‑text (embeddings), ChromaDB (HNSW), LlamaIndex (RAG), Flask + Gunicorn (API), Streamlit (web UI), Docker Compose (orkestracija), Azure Blob Storage (451 GB dokumentov).

image

CITATI (ključni poudarki v izvirnem jeziku)

  • “A few months ago I was tasked with creating an internal tool for the company’s engineers: a Chat that used a local LLM.”

  • “LlamaIndex ended up overflowing my laptop’s RAM within minutes, choking my OS until everything froze.”

  • “After many trials and errors, and reading more about it, I decided to make the leap to a dedicated vector database: ChromaDB.”

  • “After several weeks, between 2 and 3, the indexing process finished without failures. 738,470 vectors, 54GB of index in ChromaDB, and a RAG system ready to answer questions.”

  • “My humble advice, if you’re considering building something similar: spend time building the best possible data. If the source is not relevant enough, the LLM won’t be able to generate good answers.”