function retrieval_augmented_generation(question, index, language_model):
   question_vector = embed(question)

   passages = search_index(question_vector, index)
   context = choose_best(passages)
   answer = language_model(question, context)
   return answer, sources(passages)
