Heat Dutch oven or stock pot over medium heat. Add in the bacon and cook for 4-6 minutes, stirring occasionally, until the bacon has browned. Remove the bacon to a paper towel lined plate.
Add the onion, celery, and carrots into the pot with the rendered bacon fat and cook for 6-8 minutes or until the onions have softened.
Add the garlic, salt, and black pepper and cook for an additional minute.
Add the chicken stock and bring to a simmer over medium heat. Cook for 20-25 minutes or until carrots have softened.
Puree the soup in a blender in batches or use an immersion blender to puree.
Add the milk and the heavy cream to the soup and mix well. Add in any herbs or spices and mix. Heat for 2-3 minutes.
Serve topped with crispy bacon and a drizzle of heavy cream or sour cream.