Learning materials for software engineers that are starting with Generative AI

With generative AI taking the industry by storm, we also see an increased demand for engineers and product owners with this skillset. Keeping up with new technologies is part of the job for people in tech, and luckily for us, it's not different with generative AI.

My job brings me in contact with many tech workers, and one of the most common questions I receive these days from engineers and product people alike is - where do I start with GenAI and what skills I need?

You probably already know that the answer is - it depends. 😀 Things like your previous experience, the programming languages you know or previous work on data projects will impact which areas you should focus on. I'll list a few things and also categorize them from beginner to more advanced concepts.

Prompt engineering - thing that everyone should know regardless of their role

What I love about Generative AI is that it's easy to start with. Having a tool such as ChatGPT available for free is amazing and this is a perfect place to polish your prompting. Here are some guides that will get you started.

It's all about data

Truth be told, the majority of work in Generative AI projects is related to data, and by data I mean extracting data from documents, processing, storing etc. You'll also need to expose some APIs for other systems to consume. Nothing novel here, but it's still important to know the tools and technologies for building this, especially if you haven't worked in similar projects before.

My first advice is to learn or brush up on your Python. While other languages have great support, as mentioned previously, all of these projects deal with data and Pythons ease-of-use with its libraries ecosystem makes it a popular choice in the industry.

These are some of the popular choices, and there are also cloud-based solutions for document extraction, such as Azure AI document intelligence. After you feel comfortable, you can explore more advanced solutions such as Unstructured. See what works best for your project and team setup.

Getting advanced

Once you have solid foundations, it's time to move on to advanced concepts, of which the most popular one is RAG. For many companies RAG is a starting point in their Generative AI journey, and mastering this topic will open quite a few doors for you.

RAG on its own is a vast area with a few concepts that you need to acquaint with. If we think of it as a step-by-step process, then you should familiarize yourself with the following:

  1. How to split your documents into chunks and some common chunking strategies
  2. Our next step is to turn these chunks into embeddings. OpenAI API is a good starting point.
  3. While embeddings can be stored in relational or NoSQL databases, it's much more common to store them in vector databases. Vector databases are a new concept with few products standing out:
  4. Searching an embedding in a vector database is done through similarity search. While this is usually baked in the database itself, it's good to understand the underlying concept

Building a RAG system is the best way to become proficient in these four points. For example, you can create a RAG system that loads your bank statements and allows you to ask questions such as - how much did I spend on groceries in January?

Going beyond

In case you still have some time on your plate after learning everything mentioned above, a perfect place to look into is how to do fine-tuning on LLM models.

In this early stage of Generative AI, a lot of companies are using ready-made APIs such as ChatGPT, however running local LLM models in your own infrastructure is something that will become more common, and a great jumping-off point is Ollama.

Everything around GenAI is still evolving, so you'll see a lot of libraries that combine some of these concepts into a single use case, the most notable being Langchain. It's popular, but my advice would be to skip it until you feel very confident in the underlying concepts and know what you are doing. Langchain tends do too many things (probably more than you need), and their documentation is not great. There is a good chance you'll go down the rabbit hole.

In conclusion, diving into the world of Generative AI is an exciting but also an evolving journey. On certain days it feels like an endless playground due to many new concepts and ideas. I hope this guide helps you kickstart your GenAI journey. Happy learning!