Retrieval-Augmented Generation for Natural Language Processing: A Survey