Bring 2 1/2 cups water to the boil in a medium saucepan. Add the asparagus tips and cook for 2 minutes to blanch. Remove with a slotted spoon and put aside for garnish.
Add the sweet potato to the boiling water and cook for 10 minutes or until just tender. Remove with a strainer or slotted spoon. Add the asparagus trimmings, reduce to a simmer, cover and cook for 10 minutes. Reserving the liquid, strain and discard the trimmings. You should have about 2 cups liquid.
Meanwhile, heat the oil in a medium saucepan over moderately low heat. Add the onion and cook for 7 minutes or until light golden. Stir in the reserved cooking liquid, the stock, the remaining asparagus, the marjoram, cayenne pepper and a pinch of salt, and bring to the boil. Reduce to a simmer, cover and cook for 6 minutes or until the asparagus is tender.
Transfer the mixture to a food processor, add the sweet potato and process to a smooth purée. Return the purée to the saucepan and stir in the milk. Cook for 2 minutes or until heated through. Serve the soup garnished with the reserved asparagus tips.