You could keep the
bigint PK, but for user interaction-related purposes (if that is why you want to reduce the length of the values) you could introduce a generated column that would return a string of characters representing your PK value in the desired form.
GENERATED ALWAYS AS MyDecimalToBaseNConversionFunction(MyBigintID) STORED
The conversion function would need to be a custom function (because I do not believe PostgreSQL offers a built-in one for this task), marked as
IMMUTABLE so that it can be used in a generated column expression.
That way you would continue using the
bigint PK internally, including as a sorting criterion where necessary and as a reference target for other tables' FKs. For display purposes, however, you would use the computed column.
If your custom representations of PKs need to be used as query arguments as well, it would be a good idea to create an index on the computed column to help the performance.