code: def query(self, embeddings, action, k):
      # query for nearest neighbors to the given embeddings
      dnd_embeddings = []
      dnd_values = []
      dnd_indices = []
      dnd_additional_data = []
      for i in range(len(embeddings)):
          embedding, value, indices, additional_data = self.dicts[
              action
          ].query([embeddings[i]], k)
          dnd_embeddings.append(embedding[0])
          dnd_values.append(value[0])
          dnd_indices.append(indices[0])
          dnd_additional_data.append(additional_data[0])
  
      if self.return_additional_data:
          return (
              dnd_embeddings,
              dnd_values,
              dnd_indices,
              dnd_additional_data,
          )
      else:
          return dnd_embeddings, dnd_values, dnd_indices
  
imports: import os
  import pickle
  import numpy
label_desc: Use image node_id 3 for calling the QDND obj's underlying member method code with example usage: obj.query(embeddings, action, k) and returns: dnd_embeddings,  dnd_values,  dnd_indices,  dnd_additional_data, dnd_embeddings,  dnd_values,  dnd_indices