Multiple dispatch is the ability to define multiple implementations of a function, chosen at runtime based on the arguments to each call. The dispatch package brings this to Racket, allowing lexically separate but associated definitions:
multimethods can only consider structs, dispatch works with any predicate
multimethod requires an explicit definition of a procedure as generic, dispatch handles it automatically
each instance of a multimethod must have the same arity, this is not required for dispatch
Edit: I just saw the multimethod blog post. dispatch is fully unsafe as defined there. I don't mind this as a tradeoff but it's something to be aware of.