This is the course repository for Building RAG Applications taught by Chris Sanchez with assistance from Matias Weber. The course is desgined to teach search and discovery industry best practices culminating in a demo Retrieval Augmented Generation (RAG) application. Along the way students will learn all of the components of a RAG system to include data preprocessing, embedding creation, vector database selection, indexing, retrieval systems, reranking, retrieval evaluation, question answering through an LLM and UI implementation through Streamlit.
Students are expected to have the following technical skills prior to enrolling. Students who do not meet these prerequisites will likely have an overly challenging learning experience:
- Minimum of 1-year experience coding in Python. Skillsets should include programming using OOP, dictionary and list comprehensions, lambda functions, setting up virtual environments, comfortability with git version control.
- Professional or academic experience working with search engines.
- Ability to comfortably navigate the command line to include familiarity with docker.
- Nice to have but not strictly required:
- experience fine-tuning a ML model
- familiarity with the Streamlit API
- familiarity with making inference calls to a Generative LLM (OpenAI)
- Students will need access to their own compute environment, whether locally or remote. There are no hard requirements for RAM or CPU processing power, but in general the more punch the better.
- Students will need accounts with the following organizations:
- Either an OpenAI account (RECOMMENDED) or another LLM provider of their choice. Students can choose to use an open source LLM if desired, however, the codebase is not currently optimized for open source LLM support.
- An account with weaviate.io. The current iteration of this course will use Weaviate as a sparse and dense vector database. Weaviate offers free cloud instance cluster resources for 14 days, with the option to extend the instance an additional 14 days (as of November 2024).
- A standard Github account in order to fork this repo, clone a copy, and submit commits to the fork if desired throughout the course.
- Fork this course repo (see upper right hand corner of the repo web page).
- Clone a copy of the forked repo into the dev environment of your choice. Navigate into the cloned
rag-applications
directory. - Create a virtual environment using your python library of choice. Here's an example using
conda
:
conda create --name mynewenv -y python=3.10
- Once the environment is created, activate the environment and install dependencies.
conda activate mynewenv
pip install -r requirements.txt
- Last but not least create a
.env
text file in your cloned repo. At a minimum, add the following environment variables:
OPENAI_API_KEY= "your OpenAI account API Key"
WEAVIATE_API_KEY= "your Weaviate cluster API Key" <--- you will get this on Day One of the course
WEAVIATE_ENDPOINT= "your Weaviate cluster endpoint" <--- you will get this on Day One of the course
- If you've made it this far, you are ready to start the course. Enjoy the process!