Write a function to optimize a search operation over a large-scale vector database.
Implement top-k vector search using dot-product similarity. Given a query vector, a list of vectors, and k, return the indices of the k most similar vectors, ordered by descending score. Break ties by returning the smaller index first. Use a bounded heap rather than sorting every scored vector.
The input vectors are nonempty and all have the same dimension.
def search_vectors(query, vectors, k):