In a 3- to 4-quart pan over medium heat, combine coriander seed, peppercorns, and cumin seed. Shake pan often until mixture is aromatic and seeds are slightly browner, about 6 minutes.
In a blender or spice grinder, whirl or grind spice mixture to a fine powder.
In a 3- to 4-quart pan over medium-high heat, melt butter. Add onion, chilies, ginger, and garlic; stir often until onion is lightly browned, 5 to 7 minutes.
Add tomato paste and ground spices. Stir until spices are fragrant, 1 to 2 minutes.
Add beans, 1 cup water, and milk. Bring to a boil, stirring often. Reduce heat, cover, and simmer until beans are hot and sauce coats spoon thickly, 6 to 8 minutes.
Stir in half-and-half. Add salt to taste. If making up to 1 day ahead, cover and chill; to warm, stir in pan over medium heat until steaming. Pour into a bowl and garnish with cilantro.