https://blog.burntsushi.net/ripgrep/ explains in detail _how_ it's so fast, and is a great reading on practical performance engineering.
The interface is nearly 1:1 with `ag` (and the older `ack`).
One notable difference is that ag enables `--smart-case` by default, so it treats an all-lowercase pattern as case-insensitive, while `rg` doesn't, you need an explicit `rg -i`.
(or set it in a config file, but I'd rather not learn defaults that won't work out-of-the-box on other machines).