I haven't used that exact combination, but have used each two-tool combo.
DSPy definitely had a bit of a learning curve, but once I wrapped my head around the optimization side, that was super valuable. I didn't take as much value from the natural-language-esque prompt definition however
Similarly with Qdrant - took me a bit to get going, it seems like they assume more background knowledge than a weaviate or pinecone. But once I was going the tool worked well, and I appreciated being able to use a local version
For each of those, my take is you'd be using more advanced tools with powerful payoffs
On Phoenix - I'm bias there, but I think it works well in this case. One nice piece of the integration is that it also traces the DSPy optimization process, so you get more visibility into what's happening there