Главное избавиться от иллюзии что "мощные алгоритмы" могут сжимать сколь угодно сильно… Предел "без потери качества" уже достигнут.
Дело в том, что принципиально сжатие возможно только благодаря избыточности представления информации. Например, букв в русском языке 33, а в байте помещается 256 чисел. Уже перебор даже байт выделять под букву. Далее, хитрее… Буквы в слова складываются не хаотично и любым образом, а некими характерными для языка последовательностями. А еще дальше, слова тоже не в любой комбинации могут стоять. Получается, что естественный письменный язык катастрофически избыточен при представлении "одна буква - один байт".
Но у всего есть пределы. Современные архиваторы если и не достигли информационного порога, то крайне к нему близки. Преодолеть порог без потери информации невозможно. Те сжать файл в размеры меньшие чем для "представления чистой информации" невозможно.
Аналогично работают алгоритмы сжатия графической и аудио информации. Просто работаем не с буквами, а, например, с частотами звука вместо амплитуды колебаний в моменте времени и с цветовыми пятнами или иными паттернами изображения и звука….
Есть хорошие книжки по теории вопроса.