Actually, it is the *caller* that's meant to wrap the blob calls in a db_transaction, not the calls inside the db API. This is mostly for consistency's sake - you might want to insert a lob in a transaction with other inserts, and having the db API wrap the lob call in a transaction won't do what you think ...
I've submitted a patch to the search package that should work.
I couldn't help but notice that content stored in files don't work ...