Function generator in the nano or micro volt range
At relatively low frequencies you can simply divide down the voltage from an ordinary function generator. Very accurate, cheap and fairly low output impedance is easy.
For example a 100K resistor and a 10 ohm will give you 10uV from 100mV function generator output with 10 ohm source impedance.
You can use two stages to get even lower, but below 100nV or so it's hard to measure.
The Johnson-Nyquist noise of a 10 ohm resistor is 12nV (RMS) at 1kHz bandwidth (at room temperature) so there's a limit to how far you can go, but if you're asking this question I suspect there isn't an issue.
Another approach which works only over a range of frequencies is to use transformer. For example, you could have a 1000:1 divider feeding a pot core transformer with another 100:1 ratio. If the output winding is low resistance (maybe a turn or two of copper wire) it will have very low noise. Getting to work over the audio frequency range is not hard for such low voltages but you should do the design calculations.
You can use any generator and simple voltage divider made using two resistors with values what are needed to provide proper divide ratio and output resistance.
I think that you are simply looking for good old attenuators.
They are easily available: https://uk.rs-online.com/web/c/connectors/rf-coaxial-connectors/rf-attenuators/
You can connect them together to get a signal as weak as you want.