After spending a lot of time learning about machine learning, NLP, LLMs, and cloud technologies, I’ve realized something:
The fastest way for me to learn is to build.
So, I’m starting to document that journey here on DEV.
I’m an early-career software/AI engineer interested in AI engineering, LLM applications, RAG systems, cloud, and backend development. Over the past few months, I’ve been experimenting with technologies such as Python, FastAPI, LangChain, Hugging Face, vector databases, Azure, AWS, and local LLMs.
One of the projects I recently worked on was a Retrieval-Augmented Generation (RAG) system.
Instead of simply asking an LLM a question and hoping it knows the answer, the system retrieves relevant information from a knowledge base and uses that context to generate a response.
At a high level:
Text
Documents
↓
Document Processing
↓
Chunking
↓
Embeddings
↓
Vector Store
↓
Similarity Search
↓
Relevant Context
↓
LLM
↓
Answer
Building it made me realize that RAG isn't just about connecting a vector database to an LLM.
There are a lot of interesting engineering decisions involved:
- How should documents be chunked?
- Which embedding model should be used?
- How do you retrieve the most relevant information?
- How do you prevent irrelevant context from reaching the LLM?
- How do you evaluate whether the generated answer is actually grounded?
- How do you handle documents that change over time?
- How do you turn a prototype into something that can actually be deployed?
These are the kinds of questions I want to explore more deeply.
What I'm learning next
I want to go beyond simple chatbot projects and explore:
- Agentic RAG
- Multimodal AI
- MCP and tool-using agents
- LLM evaluation
- AI application observability
- FastAPI and production backend architecture
- Azure/AWS AI services
- Local and open-source LLMs
This is my first post here, so I'm excited to start documenting the journey.
If you're also learning AI engineering, backend development, or LLM systems, I'd love to learn from what you're building too.
Top comments (1)
Your question about documents changing over time is a useful next build target because it exercises the whole pipeline rather than just the happy-path chatbot. Try updating one document so that it has fewer sections, then ask questions that previously depended on a removed section.
The ingest job should replace the previous document generation, not simply append new vectors. Track a document version and activate the new set only when processing completes, so queries do not see a half-updated source. Add a deletion case too. Those small experiments will teach more about deployment behaviour than adding another agent stage before the update path is reliable.