Heat the butter in a saucepan, add the onion and fry for 5 minutes until just beginning to soften. Stir in the potato and apple, cover and fry gently for 10 minutes, stirring occasionally.
Reserve the tiny celery leaves from the centre of the celery for garnish and keep in a bowl of cold water until needed. Thickly slice the rest of the stems and add with the larger leaves to the onion and stir-fry for 2–3 minutes. Pour on the stock then season with salt and pepper and bring to the boil. Cover and simmer for 15 minutes until the celery is soft but still a pale green.
Purée the soup in batches in a blender or food processor until smooth. Return to the saucepan, stir in the milk and then reheat. Taste and adjust the seasoning if needed.
Stir half the diced cheese and half the walnuts into the crème fraîche, then mix in the chives or spring onion and a little salt and pepper. Ladle the soup into shallow bowls, then spoon the crème fraîche mixture into the centre. Sprinkle with the remaining cheese and nuts and add a little black pepper.