def __init__(
      self,
      sentence_embedder: Callable[[str], np.ndarray] | None = None,
  ):
    """Constructor.

    Args:
      sentence_embedder: text embedding model, if None then skip setting the
        embedder on initialization of the object. It still must be set before
        calling `add` or `retrieve` methods.
    """
    self._memory_bank_lock = threading.Lock()
    self._embedder = sentence_embedder

    self._memory_bank = pd.DataFrame(columns=['text', 'embedding'])
    self._stored_hashes = set()
Constructor.

    Args:
      sentence_embedder: text embedding model, if None then skip setting the
        embedder on initialization of the object. It still must be set before
        calling `add` or `retrieve` methods.
    
concordia/associative_memory/basic_associative_memory.py