I've lost attachments on a couple of occasions but it's mostly been due to a faulty script of some kind.
One case was straightforward - I was downloading images, manipulating them, then replacing them by deleting the original and posting the manipulated image. The delete worked but the replacement didn't.
The other case was a script that was creating a view; found out the hard way that you can inadvertently destroy not just one but all of your attachments if your view definition JSON is incorrect. I don't think that's the case here though, since you still have some attachments.
The only other similar thing I've come across was when a user with editing privileges was deleting attachments unbeknownst to me. Any possibility something like that is happening?
Unfortunately I'm fairly certain there are no ways to recover attachments unless you've already built a backup process around your service.