You can use the dictionary builder from Zstandard :
http://www.zstd.net `zstd --train samplesDirectory/* -o dictionaryFileName --maxdict 64K`
It produces dictionaries for zstd, which are also compatible with lz4 and zlib.
You probably don't need them to be 110 KB (default target size), lz4 can only make use of 64 KB anyway.
You don't need GB of samples to build a good dictionary.
I would advise to reduce your samples total size to ~10 MB, typically by taking random records from your larger sample base.
A dictionary is only effective if it contains frequent elements, and frequent elements don't need GB to show up.
lz4 advantage is that it's very light on CPU, for both compression and decompression.
If your application can afford higher CPU and memory requirements,
you can also give a try to zstd itself,
as it will provide better compression ratios.