Insert or upsert texts with optional metadatas and embeddings.
If an embeddings model is present, embeddings are computed and stored. When
metadata_columns is a string, metadata is written as JSONB; otherwise only
provided keys matching configured columns are stored.
:return: Inserted ids. :rtype: list[str] :raises ValueError: If the length of 'metadatas', 'texts', and 'ids' do not match.