Put porcini mushrooms (if using) in a small bowl and cover with boiling water. Set aside.
Heat olive oil in a deep saucepan then add onions, garlic, sage and thyme. Cook gently until well softened and fragrant. Add celeriac and stir through. Add vegetable stock, cannellini beans and bay leaf. Reserve a few porcini mushrooms to garnish, and add the rest (including that funky smelling soaking water) into the pot. Top up with boiling water if necessary to cover the celeriac.
Simmer for about half an hour, until the celeriac is very soft.
While the soup is cooking, roast your hazelnuts in an oven preheated to 180C. They'll take 5-10 minutes for the skins to split and the nuts to become golden. Keep a close eye on them after five minutes as they burn quickly. Do you need to bother with this step? In my opinion yes. The skins can be quite bitter, but really easy to remove once roasted. Once the nuts are cool enough to handle, tip them onto a clean tea towel. Give them a good rub between the fabric and you'll be surprised to find pretty clean nuts ready to use. Roughly chop then set aside.
Remove the bay leaf from the pot, then blend soup until smooth. You could do this with a stick blender, or in a jug blender (in batches). Be careful, it's hot.
Add juice of half a lemon, 1/2 cup almond milk and seasoning to taste. if your soup is very thick you may need to thin it further. I added an additional half cup of water at this stage.
Gently reheat if necessary, then serve garnished with chopped hazelnuts, a few of the reserved porcini mushrooms, a drizzle of olive oil and perhaps a fried sage leaf or two. Crusty sourdough bread completes the picture.