There's no current support for such incremental adds/removes in KeyedVectors. And, any such support would require mutating the `vocab` dict and `syn0` array – the latter of which, as a densely-allocated numpy array, having its own problems with quick/efficient incremental edits. (I think to really support this would require a system for pre-allocating space, or splitting the `syn0` into multiple segments, making accesses to a single index actually a two-level operation.)
But, if your motivating need is really just "sometimes use vectors from a larger model2 to find similars in a smaller model1", note that `most_similar()` can take a raw vector, rather than the index/key to a vector. That is, a vector need not be 'in' the model to serve as the target for ranking most-similars.
However, given the way `most_similar()` tries to support many different combinations of parameters – including lists of keys, or mixtures of positive/negative examples – in order to pass a raw vector you should be explicit that it is a single positive example. (Otherwise its listlikeness will trigger a different type error, as the method assumes each dimension is a single positive example.) Specifically:
raw_vec = model2['rareobscurekey']
similars = model1.most_similar(positive=[raw_vec])
- Gordon