input: Write a function to generate a fuzzy search algorithm in Python that can match strings with near similarities. The function should accept a query string, a list of choices, and a threshold for the Levenshtein distance. It should return a list of strings from the choices list that are considered matches based on the provided threshold.
  assert find_matches("hello", ["hello", "hella", "world"], 1)==["hello", "hella"]
  assert find_matches("hello", ["hello", "world", "halo"], 2)==["hello", "halo"]
  assert find_matches("test", ["Test", "tset", "best"], 1)==["test", "tset"]
  assert find_matches("python", ["Python", "Java", "C++"], 2)==["python"]
  assert find_matches("query", [], 1)==[]
output: def find_matches(query, choices, threshold):
      from Levenshtein import distance
      return [choice for choice in choices if distance(query.lower(), choice.lower()) <= threshold]