I’d use map for quick parallelization - from multiprocessing import Pool; with Pool(processes=4) as pool: results = pool.map(query_chain.invoke, question_list). No async knowledge needed and it’s perfect for CPU-bound tasks when your retrievers are doing heavy local processing.