flashrag-dev 0.3.0.dev20260913__tar.gz → 0.3.0.dev20260919__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. {flashrag_dev-0.3.0.dev20260913/flashrag_dev.egg-info → flashrag_dev-0.3.0.dev20260919}/PKG-INFO +1 -1
  2. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/refiner/refiner.py +1 -1
  3. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/retriever/retriever.py +2 -0
  4. flashrag_dev-0.3.0.dev20260919/flashrag/version.py +1 -0
  5. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919/flashrag_dev.egg-info}/PKG-INFO +1 -1
  6. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag_dev.egg-info/SOURCES.txt +2 -1
  7. flashrag_dev-0.3.0.dev20260919/tests/test_retriever_cache.py +86 -0
  8. flashrag_dev-0.3.0.dev20260913/flashrag/version.py +0 -1
  9. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/LICENSE +0 -0
  10. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/README.md +0 -0
  11. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/__init__.py +0 -0
  12. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/config/__init__.py +0 -0
  13. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/config/basic_config.yaml +0 -0
  14. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/config/config.py +0 -0
  15. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/dataset/__init__.py +0 -0
  16. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/dataset/dataset.py +0 -0
  17. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/dataset/utils.py +0 -0
  18. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/evaluator/__init__.py +0 -0
  19. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/evaluator/_bleu.py +0 -0
  20. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/evaluator/evaluator.py +0 -0
  21. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/evaluator/metrics.py +0 -0
  22. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/evaluator/utils.py +0 -0
  23. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/generator/__init__.py +0 -0
  24. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/generator/fid.py +0 -0
  25. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/generator/generator.py +0 -0
  26. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/generator/multimodal_generator.py +0 -0
  27. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/generator/openai_generator.py +0 -0
  28. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/generator/stop_word_criteria.py +0 -0
  29. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/generator/utils.py +0 -0
  30. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/judger/__init__.py +0 -0
  31. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/judger/judger.py +0 -0
  32. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/pipeline/ReaRAG_utils.py +0 -0
  33. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/pipeline/__init__.py +0 -0
  34. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/pipeline/active_pipeline.py +0 -0
  35. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/pipeline/branching_pipeline.py +0 -0
  36. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/pipeline/mm_pipeline.py +0 -0
  37. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/pipeline/pipeline.py +0 -0
  38. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/pipeline/reasoning_pipeline.py +0 -0
  39. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/pipeline/replug_utils.py +0 -0
  40. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/prompt/__init__.py +0 -0
  41. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/prompt/base_prompt.py +0 -0
  42. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/prompt/coRAG_prompt.py +0 -0
  43. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/prompt/mm_prompt.py +0 -0
  44. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/prompt/selfask_examplars.py +0 -0
  45. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/prompt/trace_examplars.py +0 -0
  46. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/refiner/__init__.py +0 -0
  47. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/refiner/kg_refiner.py +0 -0
  48. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/refiner/llmlingua_compressor.py +0 -0
  49. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/refiner/selective_context_compressor.py +0 -0
  50. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/retriever/__init__.py +0 -0
  51. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/retriever/__main__.py +0 -0
  52. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/retriever/encoder.py +0 -0
  53. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/retriever/index_builder.py +0 -0
  54. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/retriever/reranker.py +0 -0
  55. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/retriever/utils.py +0 -0
  56. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/utils/__init__.py +0 -0
  57. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/utils/constants.py +0 -0
  58. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/utils/pred_parse.py +0 -0
  59. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag/utils/utils.py +0 -0
  60. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag_dev.egg-info/dependency_links.txt +0 -0
  61. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag_dev.egg-info/requires.txt +0 -0
  62. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/flashrag_dev.egg-info/top_level.txt +0 -0
  63. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/pyproject.toml +0 -0
  64. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/setup.cfg +0 -0
  65. {flashrag_dev-0.3.0.dev20260913 → flashrag_dev-0.3.0.dev20260919}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flashrag_dev
3
- Version: 0.3.0.dev20260913
3
+ Version: 0.3.0.dev20260919
4
4
  Summary: A library for efficient Retrieval-Augmented Generation research
5
5
  Home-page: https://github.com/RUC-NLPIR/FlashRAG
6
6
  Author: Jiajie Jin, Yutao Zhu, Chenghao Zhang, Xinyu Yang, Zhicheng Dou
@@ -168,7 +168,7 @@ class ExtractiveRefiner(BaseRefiner):
168
168
 
169
169
  # split into sentences: [[sent1, sent2,...], [...]]
170
170
  sent_lists = [
171
- [i.strip() for i in re.split(r"(?<![A-Za-z]\.)(?<=[.!?])\s+", " ".join(res)) if len(i.strip()) > 5]
171
+ [i.strip() for i in re.split(r"(?<=[.!?])\s+(?![a-z])", " ".join(res)) if len(i.strip()) > 5]
172
172
  for res in retrieval_results
173
173
  ]
174
174
  score_lists = [] # matching scores, size == sent_lists
@@ -68,6 +68,8 @@ def cache_manager(func):
68
68
  [t[0] for t in cache_results],
69
69
  [t[1] for t in cache_results],
70
70
  )
71
+ if "batch" not in func.__name__:
72
+ results, scores = results[0], scores[0]
71
73
 
72
74
  else:
73
75
  results, scores = func(self, query=query, num=num, return_score=True)
@@ -0,0 +1 @@
1
+ __version__ = "0.3.0dev20260919"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flashrag_dev
3
- Version: 0.3.0.dev20260913
3
+ Version: 0.3.0.dev20260919
4
4
  Summary: A library for efficient Retrieval-Augmented Generation research
5
5
  Home-page: https://github.com/RUC-NLPIR/FlashRAG
6
6
  Author: Jiajie Jin, Yutao Zhu, Chenghao Zhang, Xinyu Yang, Zhicheng Dou
@@ -58,4 +58,5 @@ flashrag_dev.egg-info/PKG-INFO
58
58
  flashrag_dev.egg-info/SOURCES.txt
59
59
  flashrag_dev.egg-info/dependency_links.txt
60
60
  flashrag_dev.egg-info/requires.txt
61
- flashrag_dev.egg-info/top_level.txt
61
+ flashrag_dev.egg-info/top_level.txt
62
+ tests/test_retriever_cache.py
@@ -0,0 +1,86 @@
1
+ import copy
2
+ import json
3
+ import tempfile
4
+ import unittest
5
+ from pathlib import Path
6
+ from unittest.mock import patch
7
+
8
+ from flashrag.retriever import BaseTextRetriever
9
+
10
+
11
+ class TestRetrieverCache(unittest.TestCase):
12
+ def setUp(self):
13
+ self.directory = tempfile.TemporaryDirectory()
14
+ self.addCleanup(self.directory.cleanup)
15
+ self.cache_path = Path(self.directory.name) / "retrieval_cache.json"
16
+ self.docs = [
17
+ {"id": "1", "contents": "First document", "score": 0.8},
18
+ {"id": "2", "contents": "Second document", "score": 0.5},
19
+ ]
20
+ self.cache_path.write_text(json.dumps({"cached": self.docs, "empty": []}))
21
+
22
+ def retriever(self, save_cache=False):
23
+ return BaseTextRetriever(
24
+ {
25
+ "retrieval_method": "bm25",
26
+ "retrieval_topk": 2,
27
+ "index_path": None,
28
+ "corpus_path": None,
29
+ "save_retrieval_cache": save_cache,
30
+ "use_retrieval_cache": True,
31
+ "retrieval_cache_path": str(self.cache_path),
32
+ "use_reranker": False,
33
+ "save_dir": self.directory.name,
34
+ }
35
+ )
36
+
37
+ def test_single_search_returns_flat_results_and_scores(self):
38
+ for query in ["cached", "missing"]:
39
+ for num in [1, 2]:
40
+ for return_score in [False, True]:
41
+ with self.subTest(query=query, num=num, return_score=return_score):
42
+ retriever = self.retriever()
43
+ docs = copy.deepcopy(self.docs[:num])
44
+ scores = [doc["score"] for doc in docs]
45
+ with patch.object(retriever, "_batch_search", return_value=([docs], [scores])) as search:
46
+ result = retriever.search(query, num=num, return_score=return_score)
47
+ self.assertEqual(result, (docs, scores) if return_score else docs)
48
+ if query == "cached":
49
+ search.assert_not_called()
50
+ else:
51
+ search.assert_called_once_with(query=[query], num=num, return_score=True)
52
+
53
+ def test_single_search_can_save_cache(self):
54
+ for query in ["cached", "missing"]:
55
+ with self.subTest(query=query):
56
+ retriever = self.retriever(save_cache=True)
57
+ docs = copy.deepcopy(self.docs)
58
+ scores = [doc["score"] for doc in docs]
59
+ with patch.object(retriever, "_batch_search", return_value=([docs], [scores])):
60
+ self.assertEqual(retriever.search(query), docs)
61
+ retriever._save_cache()
62
+ saved = json.loads(self.cache_path.read_text())
63
+ self.assertEqual(saved[query], docs)
64
+
65
+ def test_single_search_with_no_cached_results(self):
66
+ for return_score in [False, True]:
67
+ with self.subTest(return_score=return_score):
68
+ with self.assertWarns(UserWarning):
69
+ result = self.retriever().search("empty", return_score=return_score)
70
+ self.assertEqual(result, ([], []) if return_score else [])
71
+
72
+ def test_batch_search_keeps_query_dimension_and_order(self):
73
+ for return_score in [False, True]:
74
+ with self.subTest(return_score=return_score):
75
+ retriever = self.retriever()
76
+ missing_docs = [{"id": "3", "contents": "Another document"}]
77
+ with patch.object(retriever, "_batch_search", return_value=([missing_docs], [[0.7]])) as search:
78
+ result = retriever.batch_search(["missing", "cached"], return_score=return_score)
79
+ expected_docs = [missing_docs, self.docs]
80
+ expected_scores = [[0.7], [0.8, 0.5]]
81
+ self.assertEqual(result, (expected_docs, expected_scores) if return_score else expected_docs)
82
+ search.assert_called_once_with(query=["missing"], num=2, return_score=True)
83
+
84
+
85
+ if __name__ == "__main__":
86
+ unittest.main()
@@ -1 +0,0 @@
1
- __version__ = "0.3.0dev20260913"