If you want the most realistic result, you should consider using a smoke simulation. However, if you want to do it using a shader, you can try something like this. The object I used is a plane, placed in front of the scene.
All I did to make it was to warp the vectors of a Noise Texture with another Noise Texture (to make it even more random and "whispy") using a Vector Math node. The MixRGB in the middle is to lessen the warp effect.
Then I used the same warped vector combined with a Gradient Texture and a ColorRamp to make an alpha mask.
I show it in the photo (but not connected) that I also combined (multiplied) the original Noise Texture that I used for the warp factor (through another ColorRamp) with my alpha mask to make more "holes" in it.
The end result looks like this. Don't forget to put a light in front of it to make it show up: