Hi both,
Sorry for the delay. Underneath, QuTiP just calls down to scipy.sparse.linalg.eigs(h), so you should get roughly the same results either way when using the defaults. Qobj.eigenenergies also takes an "eigvals" keyword argument, which is an integer of how many eigenvalues should be returned, and a "sort" argument, which can be "high" or "low", which internally get mapped to the "LR"/"SR" (or "LA/SA" for Hermitian matrices) "which" parameters.
However, if you need much finer control, you're probably better calling scipy.sparse.linalg.eigs as you did. The underlying sparse matrix algorithms are generally not so efficient when you're asking for small eigenvalues (that may be why you're finding the wrong values), but you can use some related properties to alleviate some of this - this is called "shift-invert", and it's governed by the "sigma" argument to eigs. You might find better performance and accuracy if you set "sigma" to something close to 0, and then ask for the _largest_ eigenvalues instead.
Jake