AutoRAG 0.1.12__tar.gz → 0.2.0__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 (437) hide show
  1. {autorag-0.1.12 → autorag-0.2.0}/.github/workflows/test.yml +0 -3
  2. {autorag-0.1.12 → autorag-0.2.0}/AutoRAG.egg-info/PKG-INFO +20 -6
  3. {autorag-0.1.12 → autorag-0.2.0}/AutoRAG.egg-info/SOURCES.txt +4 -3
  4. {autorag-0.1.12 → autorag-0.2.0}/AutoRAG.egg-info/requires.txt +5 -0
  5. {autorag-0.1.12 → autorag-0.2.0}/PKG-INFO +20 -6
  6. {autorag-0.1.12 → autorag-0.2.0}/README.md +14 -5
  7. autorag-0.2.0/autorag/VERSION +1 -0
  8. {autorag-0.1.12 → autorag-0.2.0}/autorag/__init__.py +2 -0
  9. {autorag-0.1.12 → autorag-0.2.0}/autorag/cli.py +8 -0
  10. autorag-0.2.0/autorag/dashboard.py +132 -0
  11. autorag-0.2.0/autorag/evaluate/retrieval.py +67 -0
  12. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/generator/run.py +3 -2
  13. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passageaugmenter/run.py +3 -2
  14. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagecompressor/run.py +12 -14
  15. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagefilter/run.py +3 -2
  16. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/run.py +3 -2
  17. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/promptmaker/run.py +8 -5
  18. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/queryexpansion/run.py +7 -5
  19. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/retrieval/run.py +3 -2
  20. {autorag-0.1.12 → autorag-0.2.0}/autorag/strategy.py +39 -7
  21. {autorag-0.1.12 → autorag-0.2.0}/autorag/utils/util.py +65 -0
  22. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.evaluate.metric.rst +0 -8
  23. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.rst +8 -0
  24. {autorag-0.1.12 → autorag-0.2.0}/docs/source/index.rst +1 -0
  25. autorag-0.2.0/docs/source/optimization/strategies.md +54 -0
  26. {autorag-0.1.12 → autorag-0.2.0}/docs/source/tutorial.md +9 -0
  27. {autorag-0.1.12 → autorag-0.2.0}/requirements.txt +7 -0
  28. {autorag-0.1.12 → autorag-0.2.0}/sample_config/full.yaml +1 -1
  29. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/evaluate/test_retrieval_evaluate.py +39 -30
  30. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/generator/test_run_generator_node.py +1 -0
  31. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagecompressor/test_run_passage_compressor_node.py +6 -6
  32. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/promptmaker/test_prompt_maker_run.py +1 -1
  33. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/queryexpansion/test_query_expansion_run.py +1 -1
  34. autorag-0.2.0/tests/autorag/test_dashboard.py +32 -0
  35. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/test_evaluator.py +0 -2
  36. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/test_strategy.py +22 -10
  37. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/utils/test_util.py +62 -1
  38. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/config.yaml +4 -9
  39. {autorag-0.1.12/tests/resources/result_project/2 → autorag-0.2.0/tests/resources/result_project/1}/config.yaml +8 -11
  40. {autorag-0.1.12/tests/resources/result_project/1 → autorag-0.2.0/tests/resources/result_project/2}/config.yaml +2 -5
  41. autorag-0.1.12/autorag/VERSION +0 -1
  42. autorag-0.1.12/autorag/evaluate/metric/retrieval_no_gt.py +0 -37
  43. autorag-0.1.12/autorag/evaluate/retrieval.py +0 -70
  44. autorag-0.1.12/tests/autorag/evaluate/metric/test_retrieval_no_gt_metric.py +0 -26
  45. {autorag-0.1.12 → autorag-0.2.0}/.github/dependabot.yml +0 -0
  46. {autorag-0.1.12 → autorag-0.2.0}/.github/workflows/publish.yml +0 -0
  47. {autorag-0.1.12 → autorag-0.2.0}/.github/workflows/sphinx.yml +0 -0
  48. {autorag-0.1.12 → autorag-0.2.0}/.gitignore +0 -0
  49. {autorag-0.1.12 → autorag-0.2.0}/AutoRAG.egg-info/dependency_links.txt +0 -0
  50. {autorag-0.1.12 → autorag-0.2.0}/AutoRAG.egg-info/entry_points.txt +0 -0
  51. {autorag-0.1.12 → autorag-0.2.0}/AutoRAG.egg-info/top_level.txt +0 -0
  52. {autorag-0.1.12 → autorag-0.2.0}/CODE_OF_CONDUCT.md +0 -0
  53. {autorag-0.1.12 → autorag-0.2.0}/CONTRIBUTING.md +0 -0
  54. {autorag-0.1.12 → autorag-0.2.0}/LICENSE +0 -0
  55. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/__init__.py +0 -0
  56. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/corpus/__init__.py +0 -0
  57. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/corpus/langchain.py +0 -0
  58. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/corpus/llama_index.py +0 -0
  59. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/qacreation/__init__.py +0 -0
  60. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/qacreation/base.py +0 -0
  61. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/qacreation/llama_index.py +0 -0
  62. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/qacreation/llama_index_default_prompt.txt +0 -0
  63. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/qacreation/ragas.py +0 -0
  64. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/qacreation/simple.py +0 -0
  65. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/utils/__init__.py +0 -0
  66. {autorag-0.1.12 → autorag-0.2.0}/autorag/data/utils/util.py +0 -0
  67. {autorag-0.1.12 → autorag-0.2.0}/autorag/deploy.py +0 -0
  68. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/__init__.py +0 -0
  69. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/generation.py +0 -0
  70. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/metric/__init__.py +0 -0
  71. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/metric/g_eval_prompts/coh_detailed.txt +0 -0
  72. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/metric/g_eval_prompts/con_detailed.txt +0 -0
  73. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/metric/g_eval_prompts/flu_detailed.txt +0 -0
  74. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/metric/g_eval_prompts/rel_detailed.txt +0 -0
  75. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/metric/generation.py +0 -0
  76. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/metric/retrieval.py +0 -0
  77. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/metric/retrieval_contents.py +0 -0
  78. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/metric/util.py +0 -0
  79. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/retrieval_contents.py +0 -0
  80. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluate/util.py +0 -0
  81. {autorag-0.1.12 → autorag-0.2.0}/autorag/evaluator.py +0 -0
  82. {autorag-0.1.12 → autorag-0.2.0}/autorag/node_line.py +0 -0
  83. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/__init__.py +0 -0
  84. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/generator/__init__.py +0 -0
  85. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/generator/base.py +0 -0
  86. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/generator/llama_index_llm.py +0 -0
  87. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/generator/openai_llm.py +0 -0
  88. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/generator/vllm.py +0 -0
  89. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passageaugmenter/__init__.py +0 -0
  90. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passageaugmenter/base.py +0 -0
  91. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passageaugmenter/pass_passage_augmenter.py +0 -0
  92. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passageaugmenter/prev_next_augmenter.py +0 -0
  93. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagecompressor/__init__.py +0 -0
  94. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagecompressor/base.py +0 -0
  95. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagecompressor/pass_compressor.py +0 -0
  96. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagecompressor/refine.py +0 -0
  97. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagecompressor/tree_summarize.py +0 -0
  98. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagefilter/__init__.py +0 -0
  99. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagefilter/base.py +0 -0
  100. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagefilter/pass_passage_filter.py +0 -0
  101. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagefilter/percentile_cutoff.py +0 -0
  102. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagefilter/recency.py +0 -0
  103. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagefilter/similarity_percentile_cutoff.py +0 -0
  104. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagefilter/similarity_threshold_cutoff.py +0 -0
  105. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagefilter/threshold_cutoff.py +0 -0
  106. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/__init__.py +0 -0
  107. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/base.py +0 -0
  108. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/cohere.py +0 -0
  109. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/colbert.py +0 -0
  110. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/flag_embedding.py +0 -0
  111. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/flag_embedding_llm.py +0 -0
  112. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/jina.py +0 -0
  113. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/koreranker.py +0 -0
  114. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/monot5.py +0 -0
  115. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/pass_reranker.py +0 -0
  116. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/rankgpt.py +0 -0
  117. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/sentence_transformer.py +0 -0
  118. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/tart/__init__.py +0 -0
  119. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/tart/modeling_enc_t5.py +0 -0
  120. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/tart/tart.py +0 -0
  121. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/tart/tokenization_enc_t5.py +0 -0
  122. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/time_reranker.py +0 -0
  123. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/passagereranker/upr.py +0 -0
  124. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/promptmaker/__init__.py +0 -0
  125. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/promptmaker/base.py +0 -0
  126. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/promptmaker/fstring.py +0 -0
  127. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/promptmaker/long_context_reorder.py +0 -0
  128. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/queryexpansion/__init__.py +0 -0
  129. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/queryexpansion/base.py +0 -0
  130. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/queryexpansion/hyde.py +0 -0
  131. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/queryexpansion/pass_query_expansion.py +0 -0
  132. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/queryexpansion/query_decompose.py +0 -0
  133. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/retrieval/__init__.py +0 -0
  134. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/retrieval/base.py +0 -0
  135. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/retrieval/bm25.py +0 -0
  136. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/retrieval/hybrid_cc.py +0 -0
  137. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/retrieval/hybrid_dbsf.py +0 -0
  138. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/retrieval/hybrid_rrf.py +0 -0
  139. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/retrieval/hybrid_rsf.py +0 -0
  140. {autorag-0.1.12 → autorag-0.2.0}/autorag/nodes/retrieval/vectordb.py +0 -0
  141. {autorag-0.1.12 → autorag-0.2.0}/autorag/schema/__init__.py +0 -0
  142. {autorag-0.1.12 → autorag-0.2.0}/autorag/schema/module.py +0 -0
  143. {autorag-0.1.12 → autorag-0.2.0}/autorag/schema/node.py +0 -0
  144. {autorag-0.1.12 → autorag-0.2.0}/autorag/support.py +0 -0
  145. {autorag-0.1.12 → autorag-0.2.0}/autorag/utils/__init__.py +0 -0
  146. {autorag-0.1.12 → autorag-0.2.0}/autorag/utils/preprocess.py +0 -0
  147. {autorag-0.1.12 → autorag-0.2.0}/autorag/web.py +0 -0
  148. {autorag-0.1.12 → autorag-0.2.0}/docs/Makefile +0 -0
  149. {autorag-0.1.12 → autorag-0.2.0}/docs/make.bat +0 -0
  150. {autorag-0.1.12 → autorag-0.2.0}/docs/requirements.txt +0 -0
  151. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/data_creation.png +0 -0
  152. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/data_folder.png +0 -0
  153. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/dcg.png +0 -0
  154. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/f1_score.png +0 -0
  155. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/map.png +0 -0
  156. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/mrr.png +0 -0
  157. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/ndcg.png +0 -0
  158. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/ndcg_formula.png +0 -0
  159. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/node_folder.png +0 -0
  160. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/node_line_folder.png +0 -0
  161. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/node_line_summary.png +0 -0
  162. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/node_lines.png +0 -0
  163. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/node_summary.png +0 -0
  164. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/project_folder_example.png +0 -0
  165. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/project_folders.png +0 -0
  166. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/resources_folder.png +0 -0
  167. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/roadmap/RAG_paradigms.png +0 -0
  168. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/roadmap/advanced_RAG.png +0 -0
  169. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/roadmap/cycle.png +0 -0
  170. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/roadmap/merger.png +0 -0
  171. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/roadmap/node_line_modular.png +0 -0
  172. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/roadmap/policy.png +0 -0
  173. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/samsung_sundae.jpeg +0 -0
  174. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/trial_folder.png +0 -0
  175. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/trial_json.png +0 -0
  176. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/trial_summary.png +0 -0
  177. {autorag-0.1.12 → autorag-0.2.0}/docs/source/_static/web_interface.png +0 -0
  178. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.data.corpus.rst +0 -0
  179. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.data.qacreation.rst +0 -0
  180. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.data.rst +0 -0
  181. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.data.utils.rst +0 -0
  182. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.evaluate.rst +0 -0
  183. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.nodes.generator.rst +0 -0
  184. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.nodes.passageaugmenter.rst +0 -0
  185. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.nodes.passagecompressor.rst +0 -0
  186. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.nodes.passagefilter.rst +0 -0
  187. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.nodes.passagereranker.rst +0 -0
  188. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.nodes.passagereranker.tart.rst +0 -0
  189. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.nodes.promptmaker.rst +0 -0
  190. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.nodes.queryexpansion.rst +0 -0
  191. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.nodes.retrieval.rst +0 -0
  192. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.nodes.rst +0 -0
  193. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.schema.rst +0 -0
  194. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/autorag.utils.rst +0 -0
  195. {autorag-0.1.12 → autorag-0.2.0}/docs/source/api_spec/modules.rst +0 -0
  196. {autorag-0.1.12 → autorag-0.2.0}/docs/source/conf.py +0 -0
  197. {autorag-0.1.12 → autorag-0.2.0}/docs/source/data_creation/data_format.md +0 -0
  198. {autorag-0.1.12 → autorag-0.2.0}/docs/source/data_creation/ragas.md +0 -0
  199. {autorag-0.1.12 → autorag-0.2.0}/docs/source/data_creation/tutorial.md +0 -0
  200. {autorag-0.1.12 → autorag-0.2.0}/docs/source/deploy/api_endpoint.md +0 -0
  201. {autorag-0.1.12 → autorag-0.2.0}/docs/source/deploy/web.md +0 -0
  202. {autorag-0.1.12 → autorag-0.2.0}/docs/source/evaluate_metrics/generation.md +0 -0
  203. {autorag-0.1.12 → autorag-0.2.0}/docs/source/evaluate_metrics/retrieval.md +0 -0
  204. {autorag-0.1.12 → autorag-0.2.0}/docs/source/evaluate_metrics/retrieval_contents.md +0 -0
  205. {autorag-0.1.12 → autorag-0.2.0}/docs/source/install.md +0 -0
  206. {autorag-0.1.12 → autorag-0.2.0}/docs/source/local_model.md +0 -0
  207. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/generator/generator.md +0 -0
  208. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/generator/llama_index_llm.md +0 -0
  209. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/generator/openai_llm.md +0 -0
  210. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/generator/vllm.md +0 -0
  211. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/index.md +0 -0
  212. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_augmenter/passage_augmenter.md +0 -0
  213. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_augmenter/prev_next_augmenter.md +0 -0
  214. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_compressor/passage_compressor.md +0 -0
  215. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_compressor/refine.md +0 -0
  216. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_compressor/tree_summarize.md +0 -0
  217. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_filter/passage_filter.md +0 -0
  218. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_filter/percentile_cutoff.md +0 -0
  219. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_filter/recency_filter.md +0 -0
  220. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_filter/similarity_percentile_cutoff.md +0 -0
  221. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_filter/similarity_threshold_cutoff.md +0 -0
  222. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_filter/threshold_cutoff.md +0 -0
  223. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/cohere.md +0 -0
  224. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/colbert.md +0 -0
  225. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/flag_embedding_llm_reranker.md +0 -0
  226. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/flag_embedding_reranker.md +0 -0
  227. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/jina_reranker.md +0 -0
  228. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/koreranker.md +0 -0
  229. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/monot5.md +0 -0
  230. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/passage_reranker.md +0 -0
  231. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/rankgpt.md +0 -0
  232. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/sentence_transformer_reranker.md +0 -0
  233. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/tart.md +0 -0
  234. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/time_reranker.md +0 -0
  235. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/passage_reranker/upr.md +0 -0
  236. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/prompt_maker/fstring.md +0 -0
  237. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/prompt_maker/long_context_reorder.md +0 -0
  238. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/prompt_maker/prompt_maker.md +0 -0
  239. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/query_expansion/hyde.md +0 -0
  240. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/query_expansion/query_decompose.md +0 -0
  241. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/query_expansion/query_expansion.md +0 -0
  242. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/retrieval/bm25.md +0 -0
  243. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/retrieval/hybrid_cc.md +0 -0
  244. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/retrieval/hybrid_dbsf.md +0 -0
  245. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/retrieval/hybrid_rrf.md +0 -0
  246. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/retrieval/hybrid_rsf.md +0 -0
  247. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/retrieval/retrieval.md +0 -0
  248. {autorag-0.1.12 → autorag-0.2.0}/docs/source/nodes/retrieval/vectordb.md +0 -0
  249. {autorag-0.1.12 → autorag-0.2.0}/docs/source/optimization/custom_config.md +0 -0
  250. {autorag-0.1.12 → autorag-0.2.0}/docs/source/optimization/folder_structure.md +0 -0
  251. {autorag-0.1.12 → autorag-0.2.0}/docs/source/optimization/optimization.md +0 -0
  252. {autorag-0.1.12 → autorag-0.2.0}/docs/source/optimization/sample_full_config.yaml +0 -0
  253. {autorag-0.1.12 → autorag-0.2.0}/docs/source/roadmap/modular_rag.md +0 -0
  254. {autorag-0.1.12 → autorag-0.2.0}/docs/source/structure.md +0 -0
  255. {autorag-0.1.12 → autorag-0.2.0}/docs/source/troubleshooting.md +0 -0
  256. {autorag-0.1.12 → autorag-0.2.0}/pyproject.toml +0 -0
  257. {autorag-0.1.12 → autorag-0.2.0}/sample_config/compact_local.yaml +0 -0
  258. {autorag-0.1.12 → autorag-0.2.0}/sample_config/compact_openai.yaml +0 -0
  259. {autorag-0.1.12 → autorag-0.2.0}/sample_config/config_korean.yaml +0 -0
  260. {autorag-0.1.12 → autorag-0.2.0}/sample_config/extracted_sample.yaml +0 -0
  261. {autorag-0.1.12 → autorag-0.2.0}/sample_config/simple_local.yaml +0 -0
  262. {autorag-0.1.12 → autorag-0.2.0}/sample_config/simple_openai.yaml +0 -0
  263. {autorag-0.1.12 → autorag-0.2.0}/sample_dataset/README.md +0 -0
  264. {autorag-0.1.12 → autorag-0.2.0}/sample_dataset/eli5/load_eli5_dataset.py +0 -0
  265. {autorag-0.1.12 → autorag-0.2.0}/sample_dataset/msmarco/load_msmarco_dataset.py +0 -0
  266. {autorag-0.1.12 → autorag-0.2.0}/sample_dataset/triviaqa/load_triviaqa_dataset.py +0 -0
  267. {autorag-0.1.12 → autorag-0.2.0}/setup.cfg +0 -0
  268. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/data/corpus/test_base.py +0 -0
  269. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/data/corpus/test_langchain.py +0 -0
  270. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/data/corpus/test_llama_index_corpus.py +0 -0
  271. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/data/qacreation/test_base_qacreation.py +0 -0
  272. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/data/qacreation/test_llama_index_qacreation.py +0 -0
  273. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/data/qacreation/test_ragas_qa_creation.py +0 -0
  274. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/data/qacreation/test_simple.py +0 -0
  275. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/evaluate/metric/test_generation_metric.py +0 -0
  276. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/evaluate/metric/test_retrieval_contents_metric.py +0 -0
  277. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/evaluate/metric/test_retrieval_metric.py +0 -0
  278. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/evaluate/test_evaluate_util.py +0 -0
  279. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/evaluate/test_generation_evaluate.py +0 -0
  280. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/evaluate/test_retrieval_contents_evaluate.py +0 -0
  281. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/generator/test_generator_base.py +0 -0
  282. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/generator/test_llama_index_llm.py +0 -0
  283. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/generator/test_openai.py +0 -0
  284. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/generator/test_vllm.py +0 -0
  285. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passageaugmenter/test_base_passage_augmenter.py +0 -0
  286. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passageaugmenter/test_pass_passage_augmenter.py +0 -0
  287. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passageaugmenter/test_prev_next_augmenter.py +0 -0
  288. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passageaugmenter/test_run_passage_augmenter.py +0 -0
  289. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagecompressor/test_base_passage_compressor.py +0 -0
  290. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagecompressor/test_pass_compressor.py +0 -0
  291. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagecompressor/test_refine.py +0 -0
  292. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagecompressor/test_tree_summarize.py +0 -0
  293. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagefilter/test_pass_passage_filter.py +0 -0
  294. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagefilter/test_passage_filter_base.py +0 -0
  295. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagefilter/test_passage_filter_run.py +0 -0
  296. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagefilter/test_percentile_cutoff.py +0 -0
  297. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagefilter/test_recency_filter.py +0 -0
  298. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagefilter/test_similarity_percentile_cutoff.py +0 -0
  299. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagefilter/test_similarity_threshold_cutoff.py +0 -0
  300. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagefilter/test_threshold_cutoff.py +0 -0
  301. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_cohere_reranker.py +0 -0
  302. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_colbert_reranker.py +0 -0
  303. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_flag_embedding.py +0 -0
  304. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_flag_embedding_llm.py +0 -0
  305. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_jina_reranker.py +0 -0
  306. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_koreranker.py +0 -0
  307. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_monot5.py +0 -0
  308. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_pass_reranker.py +0 -0
  309. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_passage_reranker_base.py +0 -0
  310. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_passage_reranker_run.py +0 -0
  311. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_rankgpt.py +0 -0
  312. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_sentence_transformer.py +0 -0
  313. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_tart.py +0 -0
  314. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_time_reranker.py +0 -0
  315. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/passagereranker/test_upr.py +0 -0
  316. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/promptmaker/test_fstring.py +0 -0
  317. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/promptmaker/test_long_context_reorder.py +0 -0
  318. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/promptmaker/test_prompt_maker_base.py +0 -0
  319. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/queryexpansion/test_hyde.py +0 -0
  320. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/queryexpansion/test_pass_query_expansion.py +0 -0
  321. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/queryexpansion/test_query_decompose.py +0 -0
  322. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/queryexpansion/test_query_expansion_base.py +0 -0
  323. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/retrieval/test_bm25.py +0 -0
  324. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/retrieval/test_hybrid_base.py +0 -0
  325. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/retrieval/test_hybrid_cc.py +0 -0
  326. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/retrieval/test_hybrid_dbsf.py +0 -0
  327. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/retrieval/test_hybrid_rrf.py +0 -0
  328. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/retrieval/test_hybrid_rsf.py +0 -0
  329. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/retrieval/test_retrieval_base.py +0 -0
  330. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/retrieval/test_run_retrieval_node.py +0 -0
  331. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/nodes/retrieval/test_vectordb.py +0 -0
  332. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/schema/test_module_schema.py +0 -0
  333. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/schema/test_node_schema.py +0 -0
  334. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/test_cli.py +0 -0
  335. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/test_deploy.py +0 -0
  336. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/test_support.py +0 -0
  337. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/test_web.py +0 -0
  338. {autorag-0.1.12 → autorag-0.2.0}/tests/autorag/utils/test_preprocess.py +0 -0
  339. {autorag-0.1.12 → autorag-0.2.0}/tests/conftest.py +0 -0
  340. {autorag-0.1.12 → autorag-0.2.0}/tests/delete_tests.py +0 -0
  341. {autorag-0.1.12 → autorag-0.2.0}/tests/mock.py +0 -0
  342. {autorag-0.1.12 → autorag-0.2.0}/tests/requirements.txt +0 -0
  343. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/README.md +0 -0
  344. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/corpus_data_sample.parquet +0 -0
  345. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/data_creation/raw_dir/sample1.txt +0 -0
  346. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/data_creation/raw_dir/sample2.txt +0 -0
  347. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/data_creation/raw_dir/sample3.txt +0 -0
  348. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/full.yaml +0 -0
  349. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/qa_data_sample.parquet +0 -0
  350. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/qa_gen_prompts/prompt1.txt +0 -0
  351. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/qa_gen_prompts/prompt2.txt +0 -0
  352. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/qa_gen_prompts/prompt3.txt +0 -0
  353. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/qa_test_data_sample.parquet +0 -0
  354. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/generator/0.parquet +0 -0
  355. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/generator/1.parquet +0 -0
  356. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/generator/2.parquet +0 -0
  357. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/generator/3.parquet +0 -0
  358. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/generator/4.parquet +0 -0
  359. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/generator/5.parquet +0 -0
  360. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/generator/best_5.parquet +0 -0
  361. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/generator/summary.csv +0 -0
  362. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/0.parquet +0 -0
  363. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/1.parquet +0 -0
  364. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/best_0.parquet +0 -0
  365. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/summary.csv +0 -0
  366. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/post_retrieve_node_line/summary.csv +0 -0
  367. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
  368. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
  369. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
  370. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
  371. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
  372. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/pre_retrieve_node_line/summary.csv +0 -0
  373. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/0.parquet +0 -0
  374. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/best_0.parquet +0 -0
  375. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/summary.csv +0 -0
  376. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/0.parquet +0 -0
  377. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/1.parquet +0 -0
  378. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
  379. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/summary.csv +0 -0
  380. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/retrieval/0.parquet +0 -0
  381. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/retrieval/1.parquet +0 -0
  382. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/retrieval/best_0.parquet +0 -0
  383. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/retrieval/summary.csv +0 -0
  384. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/retrieve_node_line/summary.csv +0 -0
  385. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/0/summary.csv +0 -0
  386. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
  387. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
  388. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
  389. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
  390. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
  391. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/pre_retrieve_node_line/summary.csv +0 -0
  392. {autorag-0.1.12/tests/resources/result_project/1/retrieve_node_line/passage_compressor → autorag-0.2.0/tests/resources/result_project/1/retrieve_node_line/passage_filter}/0.parquet +0 -0
  393. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/0.parquet +0 -0
  394. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/1.parquet +0 -0
  395. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
  396. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/summary.csv +0 -0
  397. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/retrieve_node_line/retrieval/0.parquet +0 -0
  398. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/retrieve_node_line/retrieval/1.parquet +0 -0
  399. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/retrieve_node_line/retrieval/best_0.parquet +0 -0
  400. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/1/retrieve_node_line/retrieval/summary.csv +0 -0
  401. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/post_retrieve_node_line/prompt_maker/0.parquet +0 -0
  402. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
  403. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
  404. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
  405. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
  406. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
  407. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/pre_retrieve_node_line/summary.csv +0 -0
  408. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/0.parquet +0 -0
  409. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/best_0.parquet +0 -0
  410. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/summary.csv +0 -0
  411. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/0.parquet +0 -0
  412. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/1.parquet +0 -0
  413. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
  414. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/summary.csv +0 -0
  415. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/retrieval/0.parquet +0 -0
  416. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/retrieval/1.parquet +0 -0
  417. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/retrieval/best_0.parquet +0 -0
  418. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/retrieval/summary.csv +0 -0
  419. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/2/retrieve_node_line/summary.csv +0 -0
  420. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/3/config.yaml +0 -0
  421. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/best.yaml +0 -0
  422. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/data/corpus.parquet +0 -0
  423. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/data/qa.parquet +0 -0
  424. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/resources/bm25_porter_stemmer.pkl +0 -0
  425. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/data_level0.bin +0 -0
  426. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/header.bin +0 -0
  427. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/length.bin +0 -0
  428. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/link_lists.bin +0 -0
  429. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/resources/chroma/chroma.sqlite3 +0 -0
  430. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/result_project/trial.json +0 -0
  431. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/sample_contents_nqa.csv +0 -0
  432. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/sample_project/data/corpus.parquet +0 -0
  433. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/sample_project/data/qa.parquet +0 -0
  434. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/sample_project/resources/bm25_gpt2.pkl +0 -0
  435. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/sample_project/resources/bm25_porter_stemmer.pkl +0 -0
  436. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/simple.yaml +0 -0
  437. {autorag-0.1.12 → autorag-0.2.0}/tests/resources/test_bm25_retrieval.pkl +0 -0
@@ -7,9 +7,6 @@ on:
7
7
  pull_request:
8
8
  branches:
9
9
  - main
10
- pull_request_target:
11
- branches:
12
- - main
13
10
 
14
11
  env:
15
12
  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: AutoRAG
3
- Version: 0.1.12
3
+ Version: 0.2.0
4
4
  Summary: Automatically Evaluate RAG pipelines with your own data. Find optimal structure for new RAG product.
5
5
  Author-email: Marker-Inc <vkehfdl1@gmail.com>
6
6
  License: Apache License
@@ -260,6 +260,11 @@ Requires-Dist: llama-index-llms-openai-like
260
260
  Requires-Dist: llama-index-retrievers-bm25
261
261
  Requires-Dist: streamlit
262
262
  Requires-Dist: langchain-core>=0.1.6
263
+ Requires-Dist: panel
264
+ Requires-Dist: seaborn
265
+ Requires-Dist: ipykernel
266
+ Requires-Dist: ipywidgets
267
+ Requires-Dist: ipywidgets_bokeh
263
268
 
264
269
  # AutoRAG
265
270
 
@@ -295,7 +300,8 @@ You can see on [YouTube](https://youtu.be/2ojK8xjyXAU?feature=shared)
295
300
  - [1. Prepare your evaluation data](#1-prepare-your-evaluation-data)
296
301
  - [2. Evaluate your data to various RAG modules](#2-evaluate-your-data-to-various-rag-modules)
297
302
  - [3. Use a found optimal RAG pipeline](#3-use-a-found-optimal-rag-pipeline)
298
- - [4. Share your RAG pipeline](#4-share-your-rag-pipeline)
303
+ - [4. Run Dashboard to see the result](#4-run-dashboard)
304
+ - [5. Share your RAG pipeline](#5-share-your-rag-pipeline)
299
305
  - [+ Config yaml file](#-create-your-own-config-yaml-file)
300
306
  - [Supporting RAG modules](#supporting-nodes--modules)
301
307
  - [Roadmap](#roadmap)
@@ -425,7 +431,15 @@ You can run api server with CLI command.
425
431
  autorag run_api --config_path your/path/to/pipeline.yaml --host 0.0.0.0 --port 8000
426
432
  ```
427
433
 
428
- ### 4. Share your RAG pipeline
434
+ ### 4. Run Dashboard
435
+
436
+ You can run dashboard to easily see the result.
437
+
438
+ ```bash
439
+ autorag dashboard --trial_dir /your/path/to/trial_dir
440
+ ```
441
+
442
+ ### 5. Share your RAG pipeline
429
443
 
430
444
  You can use your RAG pipeline from extracted pipeline yaml file.
431
445
  This extracted pipeline is great for sharing your RAG pipeline to others.
@@ -515,12 +529,12 @@ at [here](https://edai.notion.site/Supporting-metrics-867d71caefd7401c9264dd91ba
515
529
  # 🛣Roadmap
516
530
 
517
531
  - [ ] Policy Module for modular RAG pipeline
518
- - [ ] Visualize evaluation result
532
+ - [x] Visualize evaluation result
519
533
  - [ ] Visualize config yaml file
520
- - [ ] More RAG modules support
534
+ - [x] More RAG modules support
521
535
  - [x] Token usage strategy
522
536
  - [ ] Multi-modal support
523
- - [ ] More evaluation metrics
537
+ - [x] More evaluation metrics
524
538
  - [ ] Answer Filtering Module
525
539
  - [x] Restart optimization from previous trial
526
540
 
@@ -18,6 +18,7 @@ AutoRAG.egg-info/top_level.txt
18
18
  autorag/VERSION
19
19
  autorag/__init__.py
20
20
  autorag/cli.py
21
+ autorag/dashboard.py
21
22
  autorag/deploy.py
22
23
  autorag/evaluator.py
23
24
  autorag/node_line.py
@@ -45,7 +46,6 @@ autorag/evaluate/metric/__init__.py
45
46
  autorag/evaluate/metric/generation.py
46
47
  autorag/evaluate/metric/retrieval.py
47
48
  autorag/evaluate/metric/retrieval_contents.py
48
- autorag/evaluate/metric/retrieval_no_gt.py
49
49
  autorag/evaluate/metric/util.py
50
50
  autorag/evaluate/metric/g_eval_prompts/coh_detailed.txt
51
51
  autorag/evaluate/metric/g_eval_prompts/con_detailed.txt
@@ -234,6 +234,7 @@ docs/source/optimization/custom_config.md
234
234
  docs/source/optimization/folder_structure.md
235
235
  docs/source/optimization/optimization.md
236
236
  docs/source/optimization/sample_full_config.yaml
237
+ docs/source/optimization/strategies.md
237
238
  docs/source/roadmap/modular_rag.md
238
239
  sample_config/compact_local.yaml
239
240
  sample_config/compact_openai.yaml
@@ -251,6 +252,7 @@ tests/delete_tests.py
251
252
  tests/mock.py
252
253
  tests/requirements.txt
253
254
  tests/autorag/test_cli.py
255
+ tests/autorag/test_dashboard.py
254
256
  tests/autorag/test_deploy.py
255
257
  tests/autorag/test_evaluator.py
256
258
  tests/autorag/test_strategy.py
@@ -270,7 +272,6 @@ tests/autorag/evaluate/test_retrieval_evaluate.py
270
272
  tests/autorag/evaluate/metric/test_generation_metric.py
271
273
  tests/autorag/evaluate/metric/test_retrieval_contents_metric.py
272
274
  tests/autorag/evaluate/metric/test_retrieval_metric.py
273
- tests/autorag/evaluate/metric/test_retrieval_no_gt_metric.py
274
275
  tests/autorag/nodes/generator/test_generator_base.py
275
276
  tests/autorag/nodes/generator/test_llama_index_llm.py
276
277
  tests/autorag/nodes/generator/test_openai.py
@@ -386,7 +387,7 @@ tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/1.parque
386
387
  tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/2.parquet
387
388
  tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/best_0.parquet
388
389
  tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/summary.csv
389
- tests/resources/result_project/1/retrieve_node_line/passage_compressor/0.parquet
390
+ tests/resources/result_project/1/retrieve_node_line/passage_filter/0.parquet
390
391
  tests/resources/result_project/1/retrieve_node_line/passage_reranker/0.parquet
391
392
  tests/resources/result_project/1/retrieve_node_line/passage_reranker/1.parquet
392
393
  tests/resources/result_project/1/retrieve_node_line/passage_reranker/best_0.parquet
@@ -39,3 +39,8 @@ llama-index-llms-openai-like
39
39
  llama-index-retrievers-bm25
40
40
  streamlit
41
41
  langchain-core>=0.1.6
42
+ panel
43
+ seaborn
44
+ ipykernel
45
+ ipywidgets
46
+ ipywidgets_bokeh
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: AutoRAG
3
- Version: 0.1.12
3
+ Version: 0.2.0
4
4
  Summary: Automatically Evaluate RAG pipelines with your own data. Find optimal structure for new RAG product.
5
5
  Author-email: Marker-Inc <vkehfdl1@gmail.com>
6
6
  License: Apache License
@@ -260,6 +260,11 @@ Requires-Dist: llama-index-llms-openai-like
260
260
  Requires-Dist: llama-index-retrievers-bm25
261
261
  Requires-Dist: streamlit
262
262
  Requires-Dist: langchain-core>=0.1.6
263
+ Requires-Dist: panel
264
+ Requires-Dist: seaborn
265
+ Requires-Dist: ipykernel
266
+ Requires-Dist: ipywidgets
267
+ Requires-Dist: ipywidgets_bokeh
263
268
 
264
269
  # AutoRAG
265
270
 
@@ -295,7 +300,8 @@ You can see on [YouTube](https://youtu.be/2ojK8xjyXAU?feature=shared)
295
300
  - [1. Prepare your evaluation data](#1-prepare-your-evaluation-data)
296
301
  - [2. Evaluate your data to various RAG modules](#2-evaluate-your-data-to-various-rag-modules)
297
302
  - [3. Use a found optimal RAG pipeline](#3-use-a-found-optimal-rag-pipeline)
298
- - [4. Share your RAG pipeline](#4-share-your-rag-pipeline)
303
+ - [4. Run Dashboard to see the result](#4-run-dashboard)
304
+ - [5. Share your RAG pipeline](#5-share-your-rag-pipeline)
299
305
  - [+ Config yaml file](#-create-your-own-config-yaml-file)
300
306
  - [Supporting RAG modules](#supporting-nodes--modules)
301
307
  - [Roadmap](#roadmap)
@@ -425,7 +431,15 @@ You can run api server with CLI command.
425
431
  autorag run_api --config_path your/path/to/pipeline.yaml --host 0.0.0.0 --port 8000
426
432
  ```
427
433
 
428
- ### 4. Share your RAG pipeline
434
+ ### 4. Run Dashboard
435
+
436
+ You can run dashboard to easily see the result.
437
+
438
+ ```bash
439
+ autorag dashboard --trial_dir /your/path/to/trial_dir
440
+ ```
441
+
442
+ ### 5. Share your RAG pipeline
429
443
 
430
444
  You can use your RAG pipeline from extracted pipeline yaml file.
431
445
  This extracted pipeline is great for sharing your RAG pipeline to others.
@@ -515,12 +529,12 @@ at [here](https://edai.notion.site/Supporting-metrics-867d71caefd7401c9264dd91ba
515
529
  # 🛣Roadmap
516
530
 
517
531
  - [ ] Policy Module for modular RAG pipeline
518
- - [ ] Visualize evaluation result
532
+ - [x] Visualize evaluation result
519
533
  - [ ] Visualize config yaml file
520
- - [ ] More RAG modules support
534
+ - [x] More RAG modules support
521
535
  - [x] Token usage strategy
522
536
  - [ ] Multi-modal support
523
- - [ ] More evaluation metrics
537
+ - [x] More evaluation metrics
524
538
  - [ ] Answer Filtering Module
525
539
  - [x] Restart optimization from previous trial
526
540
 
@@ -32,7 +32,8 @@ You can see on [YouTube](https://youtu.be/2ojK8xjyXAU?feature=shared)
32
32
  - [1. Prepare your evaluation data](#1-prepare-your-evaluation-data)
33
33
  - [2. Evaluate your data to various RAG modules](#2-evaluate-your-data-to-various-rag-modules)
34
34
  - [3. Use a found optimal RAG pipeline](#3-use-a-found-optimal-rag-pipeline)
35
- - [4. Share your RAG pipeline](#4-share-your-rag-pipeline)
35
+ - [4. Run Dashboard to see the result](#4-run-dashboard)
36
+ - [5. Share your RAG pipeline](#5-share-your-rag-pipeline)
36
37
  - [+ Config yaml file](#-create-your-own-config-yaml-file)
37
38
  - [Supporting RAG modules](#supporting-nodes--modules)
38
39
  - [Roadmap](#roadmap)
@@ -162,7 +163,15 @@ You can run api server with CLI command.
162
163
  autorag run_api --config_path your/path/to/pipeline.yaml --host 0.0.0.0 --port 8000
163
164
  ```
164
165
 
165
- ### 4. Share your RAG pipeline
166
+ ### 4. Run Dashboard
167
+
168
+ You can run dashboard to easily see the result.
169
+
170
+ ```bash
171
+ autorag dashboard --trial_dir /your/path/to/trial_dir
172
+ ```
173
+
174
+ ### 5. Share your RAG pipeline
166
175
 
167
176
  You can use your RAG pipeline from extracted pipeline yaml file.
168
177
  This extracted pipeline is great for sharing your RAG pipeline to others.
@@ -252,12 +261,12 @@ at [here](https://edai.notion.site/Supporting-metrics-867d71caefd7401c9264dd91ba
252
261
  # 🛣Roadmap
253
262
 
254
263
  - [ ] Policy Module for modular RAG pipeline
255
- - [ ] Visualize evaluation result
264
+ - [x] Visualize evaluation result
256
265
  - [ ] Visualize config yaml file
257
- - [ ] More RAG modules support
266
+ - [x] More RAG modules support
258
267
  - [x] Token usage strategy
259
268
  - [ ] Multi-modal support
260
- - [ ] More evaluation metrics
269
+ - [x] More evaluation metrics
261
270
  - [ ] Answer Filtering Module
262
271
  - [x] Restart optimization from previous trial
263
272
 
@@ -0,0 +1 @@
1
+ 0.2.0
@@ -4,6 +4,7 @@ import os
4
4
  import sys
5
5
 
6
6
  import transformers
7
+ from llama_index.core.llms.mock import MockLLM
7
8
  from llama_index.embeddings.huggingface import HuggingFaceEmbedding
8
9
  from llama_index.embeddings.openai import OpenAIEmbedding
9
10
  from llama_index.embeddings.openai import OpenAIEmbeddingModelType
@@ -55,6 +56,7 @@ generator_models = {
55
56
  'openai': OpenAI,
56
57
  'huggingfacellm': HuggingFaceLLM,
57
58
  'openailike': OpenAILike,
59
+ 'mock': MockLLM,
58
60
  }
59
61
 
60
62
  rich_format = "[%(filename)s:%(lineno)s] >> %(message)s"
@@ -8,6 +8,7 @@ from typing import Optional
8
8
 
9
9
  import click
10
10
 
11
+ from autorag import dashboard
11
12
  from autorag.deploy import Runner
12
13
  from autorag.deploy import extract_best_config as original_extract_best_config
13
14
  from autorag.evaluator import Evaluator
@@ -70,6 +71,12 @@ def run_web(yaml_path: Optional[str], project_dir: Optional[str], trial_path: Op
70
71
  subprocess.run(['streamlit', 'run', web_py_path, '--', '--trial_path', trial_path])
71
72
 
72
73
 
74
+ @click.command()
75
+ @click.option('--trial_dir', type=click.Path(dir_okay=True, file_okay=False, exists=True), required=True)
76
+ def run_dashboard(trial_dir: str):
77
+ dashboard.run(trial_dir)
78
+
79
+
73
80
  @click.command()
74
81
  @click.option('--trial_path', type=click.Path(), help='Path to the trial directory.')
75
82
  @click.option('--output_path', type=click.Path(), help='Path to the output directory.'
@@ -94,6 +101,7 @@ def restart_evaluate(trial_path):
94
101
  cli.add_command(evaluate, 'evaluate')
95
102
  cli.add_command(run_api, 'run_api')
96
103
  cli.add_command(run_web, 'run_web')
104
+ cli.add_command(run_dashboard, 'dashboard')
97
105
  cli.add_command(extract_best_config, 'extract_best_config')
98
106
  cli.add_command(restart_evaluate, 'restart_evaluate')
99
107
 
@@ -0,0 +1,132 @@
1
+ import ast
2
+ import logging
3
+ import os
4
+ from typing import Dict, List
5
+
6
+ import matplotlib.pyplot as plt
7
+ import pandas as pd
8
+ import panel as pn
9
+ import seaborn as sns
10
+ import yaml
11
+
12
+ from autorag.utils.util import dict_to_markdown, dict_to_markdown_table
13
+
14
+ pn.extension('terminal', 'tabulator', 'mathjax', 'ipywidgets',
15
+ console_output='disable', sizing_mode="stretch_width")
16
+ logger = logging.getLogger("AutoRAG")
17
+
18
+
19
+ def find_node_dir(trial_dir: str) -> List[str]:
20
+ trial_summary_df = pd.read_csv(os.path.join(trial_dir, 'summary.csv'))
21
+ result_paths = []
22
+ for idx, row in trial_summary_df.iterrows():
23
+ node_line_name = row['node_line_name']
24
+ node_type = row['node_type']
25
+ result_paths.append(os.path.join(trial_dir, node_line_name, node_type))
26
+ return result_paths
27
+
28
+
29
+ def get_metric_values(node_summary_df: pd.DataFrame) -> Dict:
30
+ non_metric_column_names = ['filename', 'module_name', 'module_params', 'execution_time', 'average_output_token',
31
+ 'is_best']
32
+ best_row = node_summary_df.loc[node_summary_df['is_best']].drop(columns=non_metric_column_names, errors='ignore')
33
+ assert len(best_row) == 1, "The best module must be only one."
34
+ return best_row.iloc[0].to_dict()
35
+
36
+
37
+ def make_trial_summary_md(trial_dir):
38
+ markdown_text = f"""# Trial Result Summary
39
+ - Trial Directory : {trial_dir}
40
+
41
+ """
42
+ node_dirs = find_node_dir(trial_dir)
43
+ for node_dir in node_dirs:
44
+ node_summary_filepath = os.path.join(node_dir, 'summary.csv')
45
+ node_type = os.path.basename(node_dir)
46
+ node_summary_df = pd.read_csv(node_summary_filepath)
47
+ best_row = node_summary_df.loc[node_summary_df['is_best']].iloc[0]
48
+ metric_dict = get_metric_values(node_summary_df)
49
+ markdown_text += f"""---
50
+
51
+ ## {node_type} best module
52
+
53
+ ### Module Name
54
+
55
+ {best_row['module_name']}
56
+
57
+ ### Module Params
58
+
59
+ {dict_to_markdown(ast.literal_eval(best_row['module_params']), level=3)}
60
+
61
+ ### Metric Values
62
+
63
+ {dict_to_markdown_table(metric_dict, key_column_name='metric_name', value_column_name='metric_value')}
64
+
65
+ """
66
+
67
+ return markdown_text
68
+
69
+
70
+ def node_view(node_dir: str):
71
+ non_metric_column_names = ['filename', 'module_name', 'module_params', 'execution_time', 'average_output_token',
72
+ 'is_best']
73
+ summary_df = pd.read_csv(os.path.join(node_dir, 'summary.csv'))
74
+ df_widget = pn.widgets.Tabulator(summary_df, name='Summary DataFrame')
75
+ # TODO: add on click listener for pop-up of each file detail.
76
+ # https://panel.holoviz.org/reference/widgets/Tabulator.html
77
+
78
+ try:
79
+ fig, ax = plt.subplots(figsize=(10, 5))
80
+ metric_df = summary_df.drop(columns=non_metric_column_names, errors='ignore')
81
+ sns.stripplot(data=metric_df, ax=ax)
82
+ strip_plot_pane = pn.pane.Matplotlib(fig, tight=True)
83
+
84
+ fig2, ax2 = plt.subplots(figsize=(10, 5))
85
+ sns.boxplot(data=metric_df, ax=ax2)
86
+ box_plot_pane = pn.pane.Matplotlib(fig2, tight=True)
87
+ plot_pane = pn.Row(strip_plot_pane, box_plot_pane)
88
+
89
+ layout = pn.Column("## Summary distribution plot", plot_pane, "## Summary DataFrame", df_widget)
90
+ except Exception as e:
91
+ logger.error(f'Skipping make boxplot and stripplot with error {e}')
92
+ layout = pn.Column("## Summary DataFrame", df_widget)
93
+ layout.servable()
94
+ return layout
95
+
96
+
97
+ CSS = """
98
+ div.card-margin:nth-child(1) {
99
+ max-height: 300px;
100
+ }
101
+ div.card-margin:nth-child(2) {
102
+ max-height: 400px;
103
+ }
104
+ """
105
+
106
+
107
+ def yaml_to_markdown(yaml_filepath):
108
+ markdown_content = ""
109
+ with open(yaml_filepath, 'r', encoding='utf-8') as file:
110
+ try:
111
+ content = yaml.safe_load(file)
112
+ markdown_content += f"## {os.path.basename(yaml_filepath)}\n```yaml\n{yaml.dump(content, allow_unicode=True)}\n```\n\n"
113
+ except yaml.YAMLError as exc:
114
+ print(f"Error in {yaml_filepath}: {exc}")
115
+ return markdown_content
116
+
117
+
118
+ def run(trial_dir: str):
119
+ trial_summary_md = make_trial_summary_md(trial_dir=trial_dir)
120
+ trial_summary_tab = pn.pane.Markdown(trial_summary_md, sizing_mode='stretch_width')
121
+
122
+ node_views = [(str(os.path.basename(node_dir)), node_view(node_dir)) for node_dir in find_node_dir(trial_dir)]
123
+
124
+ yaml_file_markdown = yaml_to_markdown(os.path.join(trial_dir, "config.yaml"))
125
+
126
+ yaml_file = pn.pane.Markdown(yaml_file_markdown, sizing_mode='stretch_width')
127
+
128
+ tabs = pn.Tabs(('Summary', trial_summary_tab), *node_views, ('Used YAML file', yaml_file), dynamic=True)
129
+
130
+ template = pn.template.FastListTemplate(site="AutoRAG", title="Dashboard",
131
+ main=[tabs], raw_css=[CSS]).servable()
132
+ template.show()
@@ -0,0 +1,67 @@
1
+ import functools
2
+ import warnings
3
+ from typing import List, Callable, Any, Tuple, Optional, Union, Dict
4
+
5
+ import pandas as pd
6
+
7
+ from autorag.evaluate.metric import (retrieval_recall, retrieval_precision, retrieval_f1, retrieval_ndcg, retrieval_mrr,
8
+ retrieval_map)
9
+ from autorag.evaluate.util import cast_metrics
10
+
11
+ RETRIEVAL_METRIC_FUNC_DICT = {func.__name__: func for func in
12
+ [retrieval_recall, retrieval_precision, retrieval_f1, retrieval_ndcg, retrieval_mrr,
13
+ retrieval_map]}
14
+ RETRIEVAL_NO_GT_METRIC_FUNC_DICT = {func.__name__: func for func in []}
15
+
16
+
17
+ def evaluate_retrieval(retrieval_gt: List[List[List[str]]], metrics: Union[List[str], List[Dict]],
18
+ queries: Optional[List[str]] = None, generation_gt: Optional[List[List[str]]] = None):
19
+ def decorator_evaluate_retrieval(
20
+ func: Callable[[Any], Tuple[List[List[str]], List[List[str]], List[List[float]]]]):
21
+ """
22
+ Decorator for evaluating retrieval results.
23
+ You can use this decorator to any method that returns (contents, scores, ids),
24
+ which is the output of conventional retrieval modules.
25
+
26
+ :param func: Must return (contents, scores, ids)
27
+ :return: wrapper function that returns pd.DataFrame, which is the evaluation result.
28
+ """
29
+
30
+ @functools.wraps(func)
31
+ def wrapper(*args, **kwargs) -> pd.DataFrame:
32
+ contents, pred_ids, scores = func(*args, **kwargs)
33
+
34
+ metric_scores = {}
35
+ metric_names, metric_params = cast_metrics(metrics)
36
+
37
+ for metric_name, metric_param in zip(metric_names, metric_params):
38
+ if metric_name in RETRIEVAL_METRIC_FUNC_DICT:
39
+ metric_func = RETRIEVAL_METRIC_FUNC_DICT[metric_name]
40
+ metric_scores[metric_name] = metric_func(retrieval_gt=retrieval_gt, pred_ids=pred_ids,
41
+ **metric_param)
42
+ elif metric_name in RETRIEVAL_NO_GT_METRIC_FUNC_DICT:
43
+ metric_func = RETRIEVAL_NO_GT_METRIC_FUNC_DICT[metric_name]
44
+ if queries is None:
45
+ raise ValueError(f"To using {metric_name}, you have to provide queries.")
46
+ if generation_gt is None:
47
+ raise ValueError(f"To using {metric_name}, you have to provide generation ground truth.")
48
+ metric_scores[metric_name] = metric_func(queries=queries, retrieved_contents=contents,
49
+ generation_gt=generation_gt, **metric_param)
50
+ else:
51
+ warnings.warn(
52
+ f"metric {metric_name} is not in supported metrics: {RETRIEVAL_METRIC_FUNC_DICT.keys()}"
53
+ f" and {RETRIEVAL_NO_GT_METRIC_FUNC_DICT.keys()}"
54
+ f"{metric_name} will be ignored.")
55
+
56
+ metric_result_df = pd.DataFrame(metric_scores)
57
+ execution_result_df = pd.DataFrame({
58
+ 'retrieved_contents': contents,
59
+ 'retrieved_ids': pred_ids,
60
+ 'retrieve_scores': scores,
61
+ })
62
+ result_df = pd.concat([execution_result_df, metric_result_df], axis=1)
63
+ return result_df
64
+
65
+ return wrapper
66
+
67
+ return decorator_evaluate_retrieval
@@ -6,7 +6,7 @@ import pandas as pd
6
6
 
7
7
  from autorag.evaluate import evaluate_generation
8
8
  from autorag.evaluate.util import cast_metrics
9
- from autorag.strategy import measure_speed, filter_by_threshold, select_best_average
9
+ from autorag.strategy import measure_speed, filter_by_threshold, select_best
10
10
 
11
11
 
12
12
  def run_generator_node(modules: List[Callable],
@@ -72,7 +72,8 @@ def run_generator_node(modules: List[Callable],
72
72
  results, filenames = filter_by_threshold(results, average_times, strategies['speed_threshold'], filenames)
73
73
  if strategies.get('token_threshold') is not None:
74
74
  results, filenames = filter_by_threshold(results, token_usages, strategies['token_threshold'], filenames)
75
- selected_result, selected_filename = select_best_average(results, metric_names, filenames)
75
+ selected_result, selected_filename = select_best(results, metric_names, filenames,
76
+ strategies.get('strategy', 'mean'))
76
77
  best_result = pd.concat([previous_result, selected_result], axis=1)
77
78
 
78
79
  # add 'is_best' column at summary file
@@ -6,7 +6,7 @@ from typing import List, Callable, Dict
6
6
  import pandas as pd
7
7
 
8
8
  from autorag.nodes.retrieval.run import evaluate_retrieval_node
9
- from autorag.strategy import measure_speed, filter_by_threshold, select_best_average
9
+ from autorag.strategy import measure_speed, filter_by_threshold, select_best
10
10
 
11
11
  logger = logging.getLogger("AutoRAG")
12
12
 
@@ -56,7 +56,8 @@ def run_passage_augmenter_node(modules: List[Callable],
56
56
  # filter by strategies
57
57
  if strategies.get('speed_threshold') is not None:
58
58
  results, filenames = filter_by_threshold(results, average_times, strategies['speed_threshold'], filenames)
59
- selected_result, selected_filename = select_best_average(results, strategies.get('metrics'), filenames)
59
+ selected_result, selected_filename = select_best(results, strategies.get('metrics'), filenames,
60
+ strategies.get('strategy', 'mean'))
60
61
  # change metric name columns to passage_augmenter_metric_name
61
62
  selected_result = selected_result.rename(columns={
62
63
  metric_name: f'passage_augmenter_{metric_name}' for metric_name in strategies['metrics']})
@@ -6,8 +6,7 @@ from typing import Callable, List, Dict
6
6
  import pandas as pd
7
7
 
8
8
  from autorag.evaluate.metric import retrieval_token_recall, retrieval_token_precision, retrieval_token_f1
9
- from autorag.strategy import measure_speed, filter_by_threshold, select_best_average
10
- from autorag.utils import validate_qa_dataset, validate_corpus_dataset
9
+ from autorag.strategy import measure_speed, filter_by_threshold, select_best
11
10
  from autorag.utils.util import fetch_contents
12
11
 
13
12
 
@@ -40,16 +39,21 @@ def run_passage_compressor_node(modules: List[Callable],
40
39
  if not os.path.exists(save_dir):
41
40
  os.makedirs(save_dir)
42
41
 
42
+ # make retrieval contents gt
43
+ qa_data = pd.read_parquet(os.path.join(data_dir, "qa.parquet"))
44
+ corpus_data = pd.read_parquet(os.path.join(data_dir, "corpus.parquet"))
45
+ # check qa_data have retrieval_gt
46
+ assert all(len(x[0]) > 0 for x in qa_data['retrieval_gt'].tolist()), \
47
+ "Can't use passage compressor if you don't have retrieval gt values in QA dataset."
48
+
43
49
  # run modules
44
50
  results, execution_times = zip(*map(lambda task: measure_speed(
45
51
  task[0], project_dir=project_dir, previous_result=previous_result, **task[1]), zip(modules, module_params)))
46
52
  results = list(results)
47
53
  average_times = list(map(lambda x: x / len(results[0]), execution_times))
48
54
 
49
- # make retrieval contents gt
50
- qa_data = pd.read_parquet(os.path.join(data_dir, "qa.parquet"))
51
- corpus_data = pd.read_parquet(os.path.join(data_dir, "corpus.parquet"))
52
- retrieval_contents_gt = make_contents_gt(qa_data, corpus_data)
55
+ retrieval_contents_gt = list(map(lambda x: fetch_contents(corpus_data, x), qa_data['retrieval_gt'].tolist()))
56
+ retrieval_contents_gt = list(map(lambda x: list(itertools.chain.from_iterable(x)), retrieval_contents_gt))
53
57
 
54
58
  # run metrics before filtering
55
59
  if strategies.get('metrics') is None:
@@ -76,7 +80,8 @@ def run_passage_compressor_node(modules: List[Callable],
76
80
  # filter by strategies
77
81
  if strategies.get('speed_threshold') is not None:
78
82
  results, filenames = filter_by_threshold(results, average_times, strategies['speed_threshold'], filenames)
79
- selected_result, selected_filename = select_best_average(results, strategies.get('metrics'), filenames)
83
+ selected_result, selected_filename = select_best(results, strategies.get('metrics'), filenames,
84
+ strategies.get('strategy', 'mean'))
80
85
  new_retrieved_contents = selected_result['retrieved_contents']
81
86
  previous_result['retrieved_contents'] = new_retrieved_contents
82
87
  selected_result = selected_result.drop(columns=['retrieved_contents'])
@@ -114,10 +119,3 @@ def evaluate_passage_compressor_node(result_df: pd.DataFrame,
114
119
  )), metrics))
115
120
  result_df = pd.concat([result_df, pd.DataFrame(metrics_scores)], axis=1)
116
121
  return result_df
117
-
118
-
119
- def make_contents_gt(qa_data: pd.DataFrame, corpus_data: pd.DataFrame) -> List[List[str]]:
120
- validate_qa_dataset(qa_data)
121
- validate_corpus_dataset(corpus_data)
122
- retrieval_gt_ids = qa_data['retrieval_gt'].apply(lambda x: list(itertools.chain.from_iterable(x))).tolist()
123
- return fetch_contents(corpus_data, retrieval_gt_ids)
@@ -5,7 +5,7 @@ from typing import List, Callable, Dict
5
5
  import pandas as pd
6
6
 
7
7
  from autorag.nodes.retrieval.run import evaluate_retrieval_node
8
- from autorag.strategy import measure_speed, filter_by_threshold, select_best_average
8
+ from autorag.strategy import measure_speed, filter_by_threshold, select_best
9
9
 
10
10
 
11
11
  def run_passage_filter_node(modules: List[Callable],
@@ -66,7 +66,8 @@ def run_passage_filter_node(modules: List[Callable],
66
66
  # filter by strategies
67
67
  if strategies.get('speed_threshold') is not None:
68
68
  results, filenames = filter_by_threshold(results, average_times, strategies['speed_threshold'], filenames)
69
- selected_result, selected_filename = select_best_average(results, strategies.get('metrics'), filenames)
69
+ selected_result, selected_filename = select_best(results, strategies.get('metrics'), filenames,
70
+ strategies.get('strategy', 'mean'))
70
71
  selected_result = selected_result.rename(columns={
71
72
  metric_name: f'passage_filter_{metric_name}' for metric_name in strategies['metrics']})
72
73
  previous_result = previous_result.drop(columns=['retrieved_contents', 'retrieved_ids', 'retrieve_scores'])
@@ -6,7 +6,7 @@ from typing import List, Callable, Dict
6
6
  import pandas as pd
7
7
 
8
8
  from autorag.nodes.retrieval.run import evaluate_retrieval_node
9
- from autorag.strategy import measure_speed, filter_by_threshold, select_best_average
9
+ from autorag.strategy import measure_speed, filter_by_threshold, select_best
10
10
 
11
11
  logger = logging.getLogger("AutoRAG")
12
12
 
@@ -70,7 +70,8 @@ def run_passage_reranker_node(modules: List[Callable],
70
70
  # filter by strategies
71
71
  if strategies.get('speed_threshold') is not None:
72
72
  results, filenames = filter_by_threshold(results, average_times, strategies['speed_threshold'], filenames)
73
- selected_result, selected_filename = select_best_average(results, strategies.get('metrics'), filenames)
73
+ selected_result, selected_filename = select_best(results, strategies.get('metrics'), filenames,
74
+ strategies.get('strategy', 'mean'))
74
75
  # change metric name columns to passage_reranker_metric_name
75
76
  selected_result = selected_result.rename(columns={
76
77
  metric_name: f'passage_reranker_{metric_name}' for metric_name in strategies['metrics']})