First things first, AFAIK you do not do all that hassle to do pooling. The sentence transformers model sentence-transformers/distilbert-base-nli-stsb-mean-tokens already pools over the tokens so you already just get one output per input sentence. So
self.model = SentenceTransformer("sentence-transformers/distilbert-base-nli-stsb-mean-tokens")

Second, I am still not sure what is inside self.corpus but I guess it contains all the sentences (List[str]). Converting all sentences of 100K articles is not a memory-lenient task.
Third, for what you want to do it is probably best to use something like FAISS for querying vectors. You’re probably better off incrementally creating a FAISS index by doing a batch loop outside the sentence transformers encode and adding each resulting batch to the index. Perhaps you can even use the FAISS capabilities that are embedded in the datasets library of HF. Example here 5.
For future reference: we are glad to help here when you use the HF repositories, but if you use third party libraries (such as sentence transformers) then you should ask a question on their channels, not here.