Represents a generation.
@type t() :: %Rag.Generation{ context: String.t(), context_sources: [String.t()], evaluations: %{required(atom()) => any()}, prompt: String.t(), query: String.t(), query_embedding: [number()], response: String.t(), retrieval_results: %{required(atom()) => any()} }
@spec get_retrieval_result(t(), key :: atom()) :: any()
@spec put_retrieval_result(t(), key :: atom(), retrieval_result :: map()) :: t()