@@ -763,6 +763,26 @@ def test_bm25_avg_doc_len_after_delete(self, in_memory_doc_store):
763763 # After removing "hello world" (2 tokens), only "foo bar baz" (3 tokens) remains
764764 assert in_memory_doc_store ._avg_doc_len == pytest .approx (3.0 )
765765
766+ def test_bm25_okapi_scores_do_not_depend_on_deleted_documents (self ):
767+ active_documents = [
768+ Document (id = "d1" , content = "common alpha" ),
769+ Document (id = "d2" , content = "common beta" ),
770+ Document (id = "d3" , content = "common gamma" ),
771+ ]
772+ fresh_store = InMemoryDocumentStore (bm25_algorithm = "BM25Okapi" , shared = False )
773+ reused_store = InMemoryDocumentStore (bm25_algorithm = "BM25Okapi" , shared = False )
774+ deleted_document = Document (content = "one two three four five six seven eight nine ten" )
775+
776+ reused_store .write_documents ([deleted_document ])
777+ reused_store .delete_documents ([deleted_document .id ])
778+ fresh_store .write_documents (active_documents )
779+ reused_store .write_documents (active_documents )
780+
781+ fresh_scores = {doc .id : doc .score for doc in fresh_store .bm25_retrieval (query = "common" , top_k = 3 )}
782+ reused_scores = {doc .id : doc .score for doc in reused_store .bm25_retrieval (query = "common" , top_k = 3 )}
783+
784+ assert reused_scores == pytest .approx (fresh_scores )
785+
766786
767787class TestMemoryDocumentStoreNotShared (TestMemoryDocumentStore ):
768788 """
0 commit comments