Hello @Yunying. Your observation is correct and matches the statements of espressif and others. The ADC should be used with 0 or 6dB attenuation, the 0-reading is at 70 mV, and at high reading it gets very non-linear. You can cope with that in your firmware, and espressif announced a compensation in a later firmware. Even then, it is by no means a high precision ADC.
When using the ADC, it is recommended to feed it, like any ADC, with a low impedance, low noise Op-Amp and an input stage which filters ESD and possible destructive signals. That reduces noise too. If you need an isolated input, you have to work with opto-couplers or/and isolation amplifiers.
You can also run the whole unit on battery. If you need USB connectivity, there are so called USB-Isolators, which isolate the USB device from the PC. Just look for that e.g. on EBay or Aliexpress.
If you need a good quality ADC, use an external one, like the ads1115. There are isolating I2C bridges and DC/DC converters which would allow to run the ADC and input stage in a separate power domain, solving the request for isolation.