def retrieve(query_embedding, index, metadata, top_k=3): distances, indices = index.search(query_embedding, top_k) results = [] for distance, idx in zip(distances[0], indices[0]): results.append({ "text": metadata[idx]["text"], "source": metadata[idx]["filename"], "distance": float(distance) }) return results