Demonstrate-Search-Predict: Composing retrieval and language models for knowledge-intensive NLP