AutoRAG 0.2.3__tar.gz → 0.2.5__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 (444) hide show
  1. {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/PKG-INFO +1 -1
  2. {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/SOURCES.txt +2 -0
  3. {autorag-0.2.3 → autorag-0.2.5}/PKG-INFO +1 -1
  4. autorag-0.2.5/autorag/VERSION +1 -0
  5. {autorag-0.2.3 → autorag-0.2.5}/autorag/dashboard.py +25 -5
  6. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluator.py +9 -1
  7. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/openai_llm.py +1 -1
  8. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/vectordb.py +5 -5
  9. {autorag-0.2.3 → autorag-0.2.5}/autorag/schema/node.py +2 -2
  10. {autorag-0.2.3 → autorag-0.2.5}/autorag/utils/preprocess.py +2 -0
  11. autorag-0.2.5/docs/source/_static/normal_distribution.png +0 -0
  12. autorag-0.2.5/docs/source/_static/score_fusion.png +0 -0
  13. autorag-0.2.5/docs/source/nodes/retrieval/hybrid_dbsf.md +124 -0
  14. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/hybrid_rsf.md +76 -0
  15. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/vectordb.md +6 -0
  16. {autorag-0.2.3 → autorag-0.2.5}/sample_config/full.yaml +1 -0
  17. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_dashboard.py +5 -2
  18. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_evaluator.py +2 -1
  19. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/utils/test_preprocess.py +6 -7
  20. {autorag-0.2.3 → autorag-0.2.5}/tests/mock.py +5 -0
  21. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/simple.yaml +1 -0
  22. autorag-0.2.3/autorag/VERSION +0 -1
  23. autorag-0.2.3/docs/source/nodes/retrieval/hybrid_dbsf.md +0 -51
  24. {autorag-0.2.3 → autorag-0.2.5}/.github/FUNDING.yml +0 -0
  25. {autorag-0.2.3 → autorag-0.2.5}/.github/dependabot.yml +0 -0
  26. {autorag-0.2.3 → autorag-0.2.5}/.github/workflows/publish.yml +0 -0
  27. {autorag-0.2.3 → autorag-0.2.5}/.github/workflows/sphinx.yml +0 -0
  28. {autorag-0.2.3 → autorag-0.2.5}/.github/workflows/test.yml +0 -0
  29. {autorag-0.2.3 → autorag-0.2.5}/.gitignore +0 -0
  30. {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/dependency_links.txt +0 -0
  31. {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/entry_points.txt +0 -0
  32. {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/requires.txt +0 -0
  33. {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/top_level.txt +0 -0
  34. {autorag-0.2.3 → autorag-0.2.5}/CODE_OF_CONDUCT.md +0 -0
  35. {autorag-0.2.3 → autorag-0.2.5}/CONTRIBUTING.md +0 -0
  36. {autorag-0.2.3 → autorag-0.2.5}/LICENSE +0 -0
  37. {autorag-0.2.3 → autorag-0.2.5}/README.md +0 -0
  38. {autorag-0.2.3 → autorag-0.2.5}/autorag/__init__.py +0 -0
  39. {autorag-0.2.3 → autorag-0.2.5}/autorag/cli.py +0 -0
  40. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/__init__.py +0 -0
  41. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/corpus/__init__.py +0 -0
  42. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/corpus/langchain.py +0 -0
  43. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/corpus/llama_index.py +0 -0
  44. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/__init__.py +0 -0
  45. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/base.py +0 -0
  46. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/llama_index.py +0 -0
  47. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/llama_index_default_prompt.txt +0 -0
  48. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/ragas.py +0 -0
  49. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/simple.py +0 -0
  50. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/utils/__init__.py +0 -0
  51. {autorag-0.2.3 → autorag-0.2.5}/autorag/data/utils/util.py +0 -0
  52. {autorag-0.2.3 → autorag-0.2.5}/autorag/deploy.py +0 -0
  53. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/__init__.py +0 -0
  54. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/generation.py +0 -0
  55. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/__init__.py +0 -0
  56. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/g_eval_prompts/coh_detailed.txt +0 -0
  57. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/g_eval_prompts/con_detailed.txt +0 -0
  58. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/g_eval_prompts/flu_detailed.txt +0 -0
  59. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/g_eval_prompts/rel_detailed.txt +0 -0
  60. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/generation.py +0 -0
  61. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/retrieval.py +0 -0
  62. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/retrieval_contents.py +0 -0
  63. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/util.py +0 -0
  64. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/retrieval.py +0 -0
  65. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/retrieval_contents.py +0 -0
  66. {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/util.py +0 -0
  67. {autorag-0.2.3 → autorag-0.2.5}/autorag/node_line.py +0 -0
  68. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/__init__.py +0 -0
  69. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/__init__.py +0 -0
  70. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/base.py +0 -0
  71. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/llama_index_llm.py +0 -0
  72. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/run.py +0 -0
  73. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/vllm.py +0 -0
  74. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passageaugmenter/__init__.py +0 -0
  75. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passageaugmenter/base.py +0 -0
  76. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passageaugmenter/pass_passage_augmenter.py +0 -0
  77. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passageaugmenter/prev_next_augmenter.py +0 -0
  78. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passageaugmenter/run.py +0 -0
  79. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/__init__.py +0 -0
  80. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/base.py +0 -0
  81. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/longllmlingua.py +0 -0
  82. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/pass_compressor.py +0 -0
  83. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/refine.py +0 -0
  84. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/run.py +0 -0
  85. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/tree_summarize.py +0 -0
  86. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/__init__.py +0 -0
  87. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/base.py +0 -0
  88. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/pass_passage_filter.py +0 -0
  89. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/percentile_cutoff.py +0 -0
  90. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/recency.py +0 -0
  91. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/run.py +0 -0
  92. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/similarity_percentile_cutoff.py +0 -0
  93. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/similarity_threshold_cutoff.py +0 -0
  94. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/threshold_cutoff.py +0 -0
  95. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/__init__.py +0 -0
  96. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/base.py +0 -0
  97. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/cohere.py +0 -0
  98. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/colbert.py +0 -0
  99. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/flag_embedding.py +0 -0
  100. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/flag_embedding_llm.py +0 -0
  101. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/jina.py +0 -0
  102. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/koreranker.py +0 -0
  103. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/monot5.py +0 -0
  104. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/pass_reranker.py +0 -0
  105. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/rankgpt.py +0 -0
  106. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/run.py +0 -0
  107. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/sentence_transformer.py +0 -0
  108. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/tart/__init__.py +0 -0
  109. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/tart/modeling_enc_t5.py +0 -0
  110. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/tart/tart.py +0 -0
  111. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/tart/tokenization_enc_t5.py +0 -0
  112. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/time_reranker.py +0 -0
  113. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/upr.py +0 -0
  114. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/promptmaker/__init__.py +0 -0
  115. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/promptmaker/base.py +0 -0
  116. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/promptmaker/fstring.py +0 -0
  117. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/promptmaker/long_context_reorder.py +0 -0
  118. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/promptmaker/run.py +0 -0
  119. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/__init__.py +0 -0
  120. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/base.py +0 -0
  121. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/hyde.py +0 -0
  122. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/multi_query_expansion.py +0 -0
  123. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/pass_query_expansion.py +0 -0
  124. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/query_decompose.py +0 -0
  125. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/run.py +0 -0
  126. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/__init__.py +0 -0
  127. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/base.py +0 -0
  128. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/bm25.py +0 -0
  129. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/hybrid_cc.py +0 -0
  130. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/hybrid_dbsf.py +0 -0
  131. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/hybrid_rrf.py +0 -0
  132. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/hybrid_rsf.py +0 -0
  133. {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/run.py +0 -0
  134. {autorag-0.2.3 → autorag-0.2.5}/autorag/schema/__init__.py +0 -0
  135. {autorag-0.2.3 → autorag-0.2.5}/autorag/schema/module.py +0 -0
  136. {autorag-0.2.3 → autorag-0.2.5}/autorag/strategy.py +0 -0
  137. {autorag-0.2.3 → autorag-0.2.5}/autorag/support.py +0 -0
  138. {autorag-0.2.3 → autorag-0.2.5}/autorag/utils/__init__.py +0 -0
  139. {autorag-0.2.3 → autorag-0.2.5}/autorag/utils/util.py +0 -0
  140. {autorag-0.2.3 → autorag-0.2.5}/autorag/web.py +0 -0
  141. {autorag-0.2.3 → autorag-0.2.5}/docs/Makefile +0 -0
  142. {autorag-0.2.3 → autorag-0.2.5}/docs/make.bat +0 -0
  143. {autorag-0.2.3 → autorag-0.2.5}/docs/requirements.txt +0 -0
  144. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/data_creation.png +0 -0
  145. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/data_folder.png +0 -0
  146. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/dcg.png +0 -0
  147. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/f1_score.png +0 -0
  148. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/map.png +0 -0
  149. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/mrr.png +0 -0
  150. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/ndcg.png +0 -0
  151. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/ndcg_formula.png +0 -0
  152. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/node_folder.png +0 -0
  153. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/node_line_folder.png +0 -0
  154. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/node_line_summary.png +0 -0
  155. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/node_lines.png +0 -0
  156. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/node_summary.png +0 -0
  157. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/project_folder_example.png +0 -0
  158. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/project_folders.png +0 -0
  159. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/resources_folder.png +0 -0
  160. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/RAG_paradigms.png +0 -0
  161. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/advanced_RAG.png +0 -0
  162. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/cycle.png +0 -0
  163. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/merger.png +0 -0
  164. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/node_line_modular.png +0 -0
  165. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/policy.png +0 -0
  166. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/samsung_sundae.jpeg +0 -0
  167. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/trial_folder.png +0 -0
  168. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/trial_json.png +0 -0
  169. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/trial_summary.png +0 -0
  170. {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/web_interface.png +0 -0
  171. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.data.corpus.rst +0 -0
  172. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.data.qacreation.rst +0 -0
  173. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.data.rst +0 -0
  174. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.data.utils.rst +0 -0
  175. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.evaluate.metric.rst +0 -0
  176. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.evaluate.rst +0 -0
  177. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.generator.rst +0 -0
  178. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.passageaugmenter.rst +0 -0
  179. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.passagecompressor.rst +0 -0
  180. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.passagefilter.rst +0 -0
  181. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.passagereranker.rst +0 -0
  182. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.passagereranker.tart.rst +0 -0
  183. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.promptmaker.rst +0 -0
  184. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.queryexpansion.rst +0 -0
  185. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.retrieval.rst +0 -0
  186. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.rst +0 -0
  187. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.rst +0 -0
  188. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.schema.rst +0 -0
  189. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.utils.rst +0 -0
  190. {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/modules.rst +0 -0
  191. {autorag-0.2.3 → autorag-0.2.5}/docs/source/conf.py +0 -0
  192. {autorag-0.2.3 → autorag-0.2.5}/docs/source/data_creation/data_format.md +0 -0
  193. {autorag-0.2.3 → autorag-0.2.5}/docs/source/data_creation/ragas.md +0 -0
  194. {autorag-0.2.3 → autorag-0.2.5}/docs/source/data_creation/tutorial.md +0 -0
  195. {autorag-0.2.3 → autorag-0.2.5}/docs/source/deploy/api_endpoint.md +0 -0
  196. {autorag-0.2.3 → autorag-0.2.5}/docs/source/deploy/web.md +0 -0
  197. {autorag-0.2.3 → autorag-0.2.5}/docs/source/evaluate_metrics/generation.md +0 -0
  198. {autorag-0.2.3 → autorag-0.2.5}/docs/source/evaluate_metrics/retrieval.md +0 -0
  199. {autorag-0.2.3 → autorag-0.2.5}/docs/source/evaluate_metrics/retrieval_contents.md +0 -0
  200. {autorag-0.2.3 → autorag-0.2.5}/docs/source/index.rst +0 -0
  201. {autorag-0.2.3 → autorag-0.2.5}/docs/source/install.md +0 -0
  202. {autorag-0.2.3 → autorag-0.2.5}/docs/source/local_model.md +0 -0
  203. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/generator/generator.md +0 -0
  204. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/generator/llama_index_llm.md +0 -0
  205. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/generator/openai_llm.md +0 -0
  206. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/generator/vllm.md +0 -0
  207. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/index.md +0 -0
  208. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_augmenter/passage_augmenter.md +0 -0
  209. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_augmenter/prev_next_augmenter.md +0 -0
  210. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_compressor/longllmlingua.md +0 -0
  211. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_compressor/passage_compressor.md +0 -0
  212. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_compressor/refine.md +0 -0
  213. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_compressor/tree_summarize.md +0 -0
  214. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/passage_filter.md +0 -0
  215. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/percentile_cutoff.md +0 -0
  216. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/recency_filter.md +0 -0
  217. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/similarity_percentile_cutoff.md +0 -0
  218. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/similarity_threshold_cutoff.md +0 -0
  219. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/threshold_cutoff.md +0 -0
  220. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/cohere.md +0 -0
  221. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/colbert.md +0 -0
  222. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/flag_embedding_llm_reranker.md +0 -0
  223. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/flag_embedding_reranker.md +0 -0
  224. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/jina_reranker.md +0 -0
  225. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/koreranker.md +0 -0
  226. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/monot5.md +0 -0
  227. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/passage_reranker.md +0 -0
  228. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/rankgpt.md +0 -0
  229. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/sentence_transformer_reranker.md +0 -0
  230. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/tart.md +0 -0
  231. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/time_reranker.md +0 -0
  232. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/upr.md +0 -0
  233. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/prompt_maker/fstring.md +0 -0
  234. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/prompt_maker/long_context_reorder.md +0 -0
  235. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/prompt_maker/prompt_maker.md +0 -0
  236. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/query_expansion/hyde.md +0 -0
  237. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/query_expansion/multi_query_expansion.md +0 -0
  238. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/query_expansion/query_decompose.md +0 -0
  239. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/query_expansion/query_expansion.md +0 -0
  240. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/bm25.md +0 -0
  241. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/hybrid_cc.md +0 -0
  242. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/hybrid_rrf.md +0 -0
  243. {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/retrieval.md +0 -0
  244. {autorag-0.2.3 → autorag-0.2.5}/docs/source/optimization/custom_config.md +0 -0
  245. {autorag-0.2.3 → autorag-0.2.5}/docs/source/optimization/folder_structure.md +0 -0
  246. {autorag-0.2.3 → autorag-0.2.5}/docs/source/optimization/optimization.md +0 -0
  247. {autorag-0.2.3 → autorag-0.2.5}/docs/source/optimization/sample_full_config.yaml +0 -0
  248. {autorag-0.2.3 → autorag-0.2.5}/docs/source/optimization/strategies.md +0 -0
  249. {autorag-0.2.3 → autorag-0.2.5}/docs/source/roadmap/modular_rag.md +0 -0
  250. {autorag-0.2.3 → autorag-0.2.5}/docs/source/structure.md +0 -0
  251. {autorag-0.2.3 → autorag-0.2.5}/docs/source/troubleshooting.md +0 -0
  252. {autorag-0.2.3 → autorag-0.2.5}/docs/source/tutorial.md +0 -0
  253. {autorag-0.2.3 → autorag-0.2.5}/pyproject.toml +0 -0
  254. {autorag-0.2.3 → autorag-0.2.5}/requirements.txt +0 -0
  255. {autorag-0.2.3 → autorag-0.2.5}/sample_config/compact_local.yaml +0 -0
  256. {autorag-0.2.3 → autorag-0.2.5}/sample_config/compact_openai.yaml +0 -0
  257. {autorag-0.2.3 → autorag-0.2.5}/sample_config/config_korean.yaml +0 -0
  258. {autorag-0.2.3 → autorag-0.2.5}/sample_config/extracted_sample.yaml +0 -0
  259. {autorag-0.2.3 → autorag-0.2.5}/sample_config/simple_local.yaml +0 -0
  260. {autorag-0.2.3 → autorag-0.2.5}/sample_config/simple_openai.yaml +0 -0
  261. {autorag-0.2.3 → autorag-0.2.5}/sample_dataset/README.md +0 -0
  262. {autorag-0.2.3 → autorag-0.2.5}/sample_dataset/eli5/load_eli5_dataset.py +0 -0
  263. {autorag-0.2.3 → autorag-0.2.5}/sample_dataset/msmarco/load_msmarco_dataset.py +0 -0
  264. {autorag-0.2.3 → autorag-0.2.5}/sample_dataset/triviaqa/load_triviaqa_dataset.py +0 -0
  265. {autorag-0.2.3 → autorag-0.2.5}/setup.cfg +0 -0
  266. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/corpus/test_base.py +0 -0
  267. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/corpus/test_langchain.py +0 -0
  268. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/corpus/test_llama_index_corpus.py +0 -0
  269. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/qacreation/test_base_qacreation.py +0 -0
  270. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/qacreation/test_llama_index_qacreation.py +0 -0
  271. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/qacreation/test_ragas_qa_creation.py +0 -0
  272. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/qacreation/test_simple.py +0 -0
  273. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/metric/test_generation_metric.py +0 -0
  274. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/metric/test_retrieval_contents_metric.py +0 -0
  275. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/metric/test_retrieval_metric.py +0 -0
  276. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/test_evaluate_util.py +0 -0
  277. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/test_generation_evaluate.py +0 -0
  278. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/test_retrieval_contents_evaluate.py +0 -0
  279. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/test_retrieval_evaluate.py +0 -0
  280. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/generator/test_generator_base.py +0 -0
  281. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/generator/test_llama_index_llm.py +0 -0
  282. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/generator/test_openai.py +0 -0
  283. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/generator/test_run_generator_node.py +0 -0
  284. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/generator/test_vllm.py +0 -0
  285. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passageaugmenter/test_base_passage_augmenter.py +0 -0
  286. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passageaugmenter/test_pass_passage_augmenter.py +0 -0
  287. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passageaugmenter/test_prev_next_augmenter.py +0 -0
  288. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passageaugmenter/test_run_passage_augmenter.py +0 -0
  289. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_base_passage_compressor.py +0 -0
  290. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_longllmlingua.py +0 -0
  291. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_pass_compressor.py +0 -0
  292. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_refine.py +0 -0
  293. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_run_passage_compressor_node.py +0 -0
  294. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_tree_summarize.py +0 -0
  295. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_pass_passage_filter.py +0 -0
  296. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_passage_filter_base.py +0 -0
  297. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_passage_filter_run.py +0 -0
  298. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_percentile_cutoff.py +0 -0
  299. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_recency_filter.py +0 -0
  300. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_similarity_percentile_cutoff.py +0 -0
  301. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_similarity_threshold_cutoff.py +0 -0
  302. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_threshold_cutoff.py +0 -0
  303. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_cohere_reranker.py +0 -0
  304. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_colbert_reranker.py +0 -0
  305. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_flag_embedding.py +0 -0
  306. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_flag_embedding_llm.py +0 -0
  307. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_jina_reranker.py +0 -0
  308. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_koreranker.py +0 -0
  309. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_monot5.py +0 -0
  310. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_pass_reranker.py +0 -0
  311. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_passage_reranker_base.py +0 -0
  312. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_passage_reranker_run.py +0 -0
  313. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_rankgpt.py +0 -0
  314. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_sentence_transformer.py +0 -0
  315. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_tart.py +0 -0
  316. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_time_reranker.py +0 -0
  317. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_upr.py +0 -0
  318. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/promptmaker/test_fstring.py +0 -0
  319. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/promptmaker/test_long_context_reorder.py +0 -0
  320. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/promptmaker/test_prompt_maker_base.py +0 -0
  321. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/promptmaker/test_prompt_maker_run.py +0 -0
  322. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_hyde.py +0 -0
  323. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_multi_query_expansion.py +0 -0
  324. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_pass_query_expansion.py +0 -0
  325. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_query_decompose.py +0 -0
  326. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_query_expansion_base.py +0 -0
  327. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_query_expansion_run.py +0 -0
  328. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_bm25.py +0 -0
  329. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_hybrid_base.py +0 -0
  330. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_hybrid_cc.py +0 -0
  331. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_hybrid_dbsf.py +0 -0
  332. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_hybrid_rrf.py +0 -0
  333. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_hybrid_rsf.py +0 -0
  334. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_retrieval_base.py +0 -0
  335. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_run_retrieval_node.py +0 -0
  336. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_vectordb.py +0 -0
  337. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/schema/test_module_schema.py +0 -0
  338. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/schema/test_node_schema.py +0 -0
  339. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_cli.py +0 -0
  340. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_deploy.py +0 -0
  341. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_strategy.py +0 -0
  342. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_support.py +0 -0
  343. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_web.py +0 -0
  344. {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/utils/test_util.py +0 -0
  345. {autorag-0.2.3 → autorag-0.2.5}/tests/conftest.py +0 -0
  346. {autorag-0.2.3 → autorag-0.2.5}/tests/delete_tests.py +0 -0
  347. {autorag-0.2.3 → autorag-0.2.5}/tests/requirements.txt +0 -0
  348. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/README.md +0 -0
  349. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/corpus_data_sample.parquet +0 -0
  350. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/data_creation/raw_dir/sample1.txt +0 -0
  351. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/data_creation/raw_dir/sample2.txt +0 -0
  352. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/data_creation/raw_dir/sample3.txt +0 -0
  353. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/full.yaml +0 -0
  354. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/qa_data_sample.parquet +0 -0
  355. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/qa_gen_prompts/prompt1.txt +0 -0
  356. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/qa_gen_prompts/prompt2.txt +0 -0
  357. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/qa_gen_prompts/prompt3.txt +0 -0
  358. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/qa_test_data_sample.parquet +0 -0
  359. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/config.yaml +0 -0
  360. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/0.parquet +0 -0
  361. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/1.parquet +0 -0
  362. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/2.parquet +0 -0
  363. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/3.parquet +0 -0
  364. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/4.parquet +0 -0
  365. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/5.parquet +0 -0
  366. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/best_5.parquet +0 -0
  367. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/summary.csv +0 -0
  368. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/0.parquet +0 -0
  369. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/1.parquet +0 -0
  370. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/best_0.parquet +0 -0
  371. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/summary.csv +0 -0
  372. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/summary.csv +0 -0
  373. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
  374. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
  375. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
  376. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
  377. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
  378. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/summary.csv +0 -0
  379. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/0.parquet +0 -0
  380. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/best_0.parquet +0 -0
  381. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/summary.csv +0 -0
  382. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/0.parquet +0 -0
  383. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/1.parquet +0 -0
  384. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
  385. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/summary.csv +0 -0
  386. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/retrieval/0.parquet +0 -0
  387. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/retrieval/1.parquet +0 -0
  388. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/retrieval/best_0.parquet +0 -0
  389. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/retrieval/summary.csv +0 -0
  390. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/summary.csv +0 -0
  391. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/summary.csv +0 -0
  392. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/config.yaml +0 -0
  393. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
  394. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
  395. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
  396. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
  397. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
  398. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/summary.csv +0 -0
  399. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/passage_filter/0.parquet +0 -0
  400. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/0.parquet +0 -0
  401. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/1.parquet +0 -0
  402. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
  403. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/summary.csv +0 -0
  404. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/retrieval/0.parquet +0 -0
  405. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/retrieval/1.parquet +0 -0
  406. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/retrieval/best_0.parquet +0 -0
  407. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/retrieval/summary.csv +0 -0
  408. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/config.yaml +0 -0
  409. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/post_retrieve_node_line/prompt_maker/0.parquet +0 -0
  410. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
  411. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
  412. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
  413. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
  414. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
  415. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/summary.csv +0 -0
  416. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/0.parquet +0 -0
  417. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/best_0.parquet +0 -0
  418. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/summary.csv +0 -0
  419. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/0.parquet +0 -0
  420. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/1.parquet +0 -0
  421. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
  422. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/summary.csv +0 -0
  423. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/retrieval/0.parquet +0 -0
  424. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/retrieval/1.parquet +0 -0
  425. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/retrieval/best_0.parquet +0 -0
  426. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/retrieval/summary.csv +0 -0
  427. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/summary.csv +0 -0
  428. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/3/config.yaml +0 -0
  429. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/best.yaml +0 -0
  430. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/data/corpus.parquet +0 -0
  431. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/data/qa.parquet +0 -0
  432. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/bm25_porter_stemmer.pkl +0 -0
  433. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/data_level0.bin +0 -0
  434. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/header.bin +0 -0
  435. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/length.bin +0 -0
  436. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/link_lists.bin +0 -0
  437. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/chroma/chroma.sqlite3 +0 -0
  438. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/trial.json +0 -0
  439. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/sample_contents_nqa.csv +0 -0
  440. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/sample_project/data/corpus.parquet +0 -0
  441. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/sample_project/data/qa.parquet +0 -0
  442. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/sample_project/resources/bm25_gpt2.pkl +0 -0
  443. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/sample_project/resources/bm25_porter_stemmer.pkl +0 -0
  444. {autorag-0.2.3 → autorag-0.2.5}/tests/resources/test_bm25_retrieval.pkl +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: AutoRAG
3
- Version: 0.2.3
3
+ Version: 0.2.5
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
@@ -149,10 +149,12 @@ docs/source/_static/node_line_folder.png
149
149
  docs/source/_static/node_line_summary.png
150
150
  docs/source/_static/node_lines.png
151
151
  docs/source/_static/node_summary.png
152
+ docs/source/_static/normal_distribution.png
152
153
  docs/source/_static/project_folder_example.png
153
154
  docs/source/_static/project_folders.png
154
155
  docs/source/_static/resources_folder.png
155
156
  docs/source/_static/samsung_sundae.jpeg
157
+ docs/source/_static/score_fusion.png
156
158
  docs/source/_static/trial_folder.png
157
159
  docs/source/_static/trial_json.png
158
160
  docs/source/_static/trial_summary.png
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: AutoRAG
3
- Version: 0.2.3
3
+ Version: 0.2.5
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
@@ -0,0 +1 @@
1
+ 0.2.5
@@ -8,11 +8,13 @@ import pandas as pd
8
8
  import panel as pn
9
9
  import seaborn as sns
10
10
  import yaml
11
+ from bokeh.models import NumberFormatter, BooleanFormatter
11
12
 
12
13
  from autorag.utils.util import dict_to_markdown, dict_to_markdown_table
13
14
 
14
15
  pn.extension('terminal', 'tabulator', 'mathjax', 'ipywidgets',
15
- console_output='disable', sizing_mode="stretch_width")
16
+ console_output='disable', sizing_mode="stretch_width",
17
+ css_files=["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"])
16
18
  logger = logging.getLogger("AutoRAG")
17
19
 
18
20
 
@@ -71,9 +73,26 @@ def node_view(node_dir: str):
71
73
  non_metric_column_names = ['filename', 'module_name', 'module_params', 'execution_time', 'average_output_token',
72
74
  'is_best']
73
75
  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
76
+ bokeh_formatters = {
77
+ 'float': NumberFormatter(format='0.000'),
78
+ 'bool': BooleanFormatter(),
79
+ }
80
+ first_df = pd.read_parquet(os.path.join(node_dir, '0.parquet'))
81
+
82
+ each_module_df_widget = pn.widgets.Tabulator(pd.DataFrame(columns=first_df.columns), name='Module DataFrame',
83
+ formatters=bokeh_formatters,
84
+ pagination='local', page_size=20, widths=150)
85
+
86
+ def change_module_widget(event):
87
+ if event.column == 'detail':
88
+ filename = summary_df['filename'].iloc[event.row]
89
+ filepath = os.path.join(node_dir, filename)
90
+ each_module_df = pd.read_parquet(filepath)
91
+ each_module_df_widget.value = each_module_df
92
+
93
+ df_widget = pn.widgets.Tabulator(summary_df, name='Summary DataFrame', formatters=bokeh_formatters,
94
+ buttons={'detail': '<i class="fa fa-eye"></i>'}, widths=150)
95
+ df_widget.on_click(change_module_widget)
77
96
 
78
97
  try:
79
98
  fig, ax = plt.subplots(figsize=(10, 5))
@@ -86,7 +105,8 @@ def node_view(node_dir: str):
86
105
  box_plot_pane = pn.pane.Matplotlib(fig2, tight=True)
87
106
  plot_pane = pn.Row(strip_plot_pane, box_plot_pane)
88
107
 
89
- layout = pn.Column("## Summary distribution plot", plot_pane, "## Summary DataFrame", df_widget)
108
+ layout = pn.Column("## Summary distribution plot", plot_pane, "## Summary DataFrame", df_widget,
109
+ "## Module Result DataFrame", each_module_df_widget)
90
110
  except Exception as e:
91
111
  logger.error(f'Skipping make boxplot and stripplot with error {e}')
92
112
  layout = pn.Column("## Summary DataFrame", df_widget)
@@ -121,6 +121,14 @@ class Evaluator:
121
121
  embedding_models_list = list(chain.from_iterable(
122
122
  map(lambda nodes: extract_values_from_nodes(nodes, 'embedding_model'), node_lines.values())))
123
123
 
124
+ # get embedding batch size in nodes
125
+ embedding_batch_list = list(chain.from_iterable(
126
+ map(lambda nodes: extract_values_from_nodes(nodes, 'embedding_batch'), node_lines.values())))
127
+ if len(embedding_batch_list) == 0:
128
+ embedding_batch = 100
129
+ else:
130
+ embedding_batch = embedding_batch_list[0]
131
+
124
132
  # duplicate check in embedding_models
125
133
  embedding_models_list = list(set(embedding_models_list))
126
134
 
@@ -140,7 +148,7 @@ class Evaluator:
140
148
  else:
141
149
  logger.error(f"embedding_model_str {embedding_model_str} does not exist.")
142
150
  raise KeyError(f"embedding_model_str {embedding_model_str} does not exist.")
143
- vectordb_ingest(collection, self.corpus_data, embedding_model)
151
+ vectordb_ingest(collection, self.corpus_data, embedding_model, embedding_batch=embedding_batch)
144
152
  logger.info(f'VectorDB corpus embedding complete with {embedding_model_str}.')
145
153
  del embedding_model
146
154
  if torch.cuda.is_available():
@@ -107,7 +107,7 @@ async def get_result(prompt: str, client: AsyncOpenAI, model: str, tokenizer: En
107
107
  choice = response.choices[0]
108
108
  answer = choice.message.content
109
109
  logprobs = list(map(lambda x: x.logprob, choice.logprobs.content))
110
- tokens = tokenizer.encode(answer, allowed_special='all')
110
+ tokens = list(map(lambda x: tokenizer.encode(x.token, allowed_special='all')[0], choice.logprobs.content))
111
111
  assert len(tokens) == len(logprobs), "tokens and logprobs size is different."
112
112
  return answer, tokens, logprobs
113
113
 
@@ -15,7 +15,7 @@ from autorag.utils.util import process_batch, openai_truncate_by_token
15
15
  @retrieval_node
16
16
  def vectordb(queries: List[List[str]], top_k: int, collection: chromadb.Collection,
17
17
  embedding_model: BaseEmbedding,
18
- batch: int = 128) -> Tuple[List[List[str]], List[List[float]]]:
18
+ embedding_batch: int = 128) -> Tuple[List[List[str]], List[List[float]]]:
19
19
  """
20
20
  VectorDB retrieval function.
21
21
  You have to get a chroma collection that is already ingested.
@@ -26,7 +26,7 @@ def vectordb(queries: List[List[str]], top_k: int, collection: chromadb.Collecti
26
26
  :param top_k: The number of passages to be retrieved.
27
27
  :param collection: A chroma collection instance that will be used to retrieve passages.
28
28
  :param embedding_model: An embedding model instance that will be used to embed queries.
29
- :param batch: The number of queries to be processed in parallel.
29
+ :param embedding_batch: The number of queries to be processed in parallel.
30
30
  This is used to prevent API error at the query embedding.
31
31
  Default is 128.
32
32
 
@@ -39,7 +39,7 @@ def vectordb(queries: List[List[str]], top_k: int, collection: chromadb.Collecti
39
39
  # run async vector_db_pure function
40
40
  tasks = [vectordb_pure(input_queries, top_k, collection, embedding_model) for input_queries in queries]
41
41
  loop = asyncio.get_event_loop()
42
- results = loop.run_until_complete(process_batch(tasks, batch_size=batch))
42
+ results = loop.run_until_complete(process_batch(tasks, batch_size=embedding_batch))
43
43
  id_result = list(map(lambda x: x[0], results))
44
44
  score_result = list(map(lambda x: x[1], results))
45
45
  return id_result, score_result
@@ -77,8 +77,8 @@ async def vectordb_pure(queries: List[str], top_k: int, collection: chromadb.Col
77
77
 
78
78
 
79
79
  def vectordb_ingest(collection: chromadb.Collection, corpus_data: pd.DataFrame, embedding_model: BaseEmbedding,
80
- batch: int = 128):
81
- embedding_model.embed_batch_size = batch
80
+ embedding_batch: int = 128):
81
+ embedding_model.embed_batch_size = embedding_batch
82
82
  validate_corpus_dataset(corpus_data)
83
83
  ids = corpus_data['doc_id'].tolist()
84
84
 
@@ -75,12 +75,12 @@ def extract_values(node: Node, key: str) -> List[str]:
75
75
  if key not in module.module_param:
76
76
  return []
77
77
  value = module.module_param[key]
78
- if isinstance(value, str):
78
+ if isinstance(value, str) or isinstance(value, int):
79
79
  return [value]
80
80
  elif isinstance(value, list):
81
81
  return value
82
82
  else:
83
- raise ValueError(f"{key} must be str or list, but got {type(value)}")
83
+ raise ValueError(f"{key} must be str,list or int, but got {type(value)}")
84
84
 
85
85
  values = list(map(extract_module_values, node.modules))
86
86
  return list(set(list(itertools.chain.from_iterable(values))))
@@ -44,6 +44,7 @@ def cast_qa_dataset(df: pd.DataFrame):
44
44
  else:
45
45
  raise ValueError(f"generation_gt must be str or list, but got {type(gt)}")
46
46
 
47
+ df = df.reset_index(drop=True)
47
48
  validate_qa_dataset(df)
48
49
  assert df['qid'].apply(lambda x: isinstance(x, str)).sum() == len(df), \
49
50
  "qid must be string type."
@@ -57,6 +58,7 @@ def cast_qa_dataset(df: pd.DataFrame):
57
58
 
58
59
 
59
60
  def cast_corpus_dataset(df: pd.DataFrame):
61
+ df = df.reset_index(drop=True)
60
62
  validate_corpus_dataset(df)
61
63
 
62
64
  def make_datetime_metadata(x):
@@ -0,0 +1,124 @@
1
+ # Hybrid - dbsf
2
+
3
+ The `hybrid-dbsf` module is designed to retrieve passages from multiple retrievals.
4
+
5
+ ## What is dbsf?
6
+
7
+ - Distribution-based Score
8
+ Fusion [(Mazzecchi: blog post)](https://medium.com/plain-simple-software/distribution-based-score-fusion-dbsf-a-new-approach-to-vector-search-ranking-f87c37488b18)
9
+
10
+ DBSF (Distribution-Based Score Fusion) is an algorithm that normalizes search scores from different encoders by
11
+ considering the distribution tails of each embedding, using MinMax scaling with custom feature ranges.
12
+
13
+ ## ❗️Hybird additional explanation
14
+
15
+ By default, `hybrid` is designed to be used without writing target_module_params. Other modules listed in target_modules
16
+ must be included in the config file, and hybrid is calculated based on the best of the results from those modules.
17
+
18
+ Once evaluated to find the optimal pipeline, extracting the pipeline creates a parameter called target_module_params.
19
+ This helps the hybrid work even if you don't include other modules, which is useful in test dataset evaluation and
20
+ deployment situations.
21
+
22
+ Also, target_modules and target_module_params must be in the form of a tuple. By default, tuples don't work in yaml
23
+ files, but AutoRAG specifically uses them. In the AutoRAG config yaml file, a tuple is a tuple of parameters, as opposed
24
+ to a List, which is a list of options for a parameter that you can try for optimization. Note that because we are
25
+ using `ast.literal_eval()`, we have to write tuples as if we were writing them in python.
26
+
27
+ So something like `('bm25', 'vectordb')` with quotes will work.
28
+
29
+ ## 📌 Score Fusion additional explanation
30
+
31
+ `Hybrid-dbsf` module and `Hybrid-rsf` module are similar in that they both use score fusion algorithm.
32
+
33
+ Here is the Score Fusion algorithm's flow:
34
+
35
+ ![Score Fusion](../../_static/score_fusion.png)
36
+
37
+ 1. Get the Min/Max Score
38
+ 2. Apply Min-Max Normalization
39
+ 3. Multiply weights
40
+ 4. Score Fusion
41
+
42
+ There are four main steps in the flow as follows
43
+
44
+ RSF and DBSF differ only in the method for finding the Min-Max Score in step 1 (colored pink in the figure), while steps
45
+ 2, 3, and 4 are the same!
46
+
47
+ Learn how to find the DBSF-specific Min-Max Score !!
48
+
49
+ ### 1. Get the Min/Max Score in DBSF ⭐⭐⭐
50
+
51
+ As the term Distribution Based suggests, DBSF uses a **distribution** to find the Min-Max Score!
52
+
53
+ It uses the normal distribution, which is the distribution we are most familiar with
54
+
55
+ ![Normal Distribution](../../_static/normal_distribution.png)
56
+
57
+ Based on the **“68-95-99.7 rule” or “3-sigma rule”** commonly used in statistics,
58
+ we get `Max Score = mean + 3 * standard deviation`, `Min Score = mean - 3 * standard deviation`!
59
+
60
+ Steps 2, 3, and 4 below are the same as for RSF.
61
+
62
+ ### 2. Apply Min-Max Normalization
63
+
64
+ `scaled_score = (score - min_score) / (max_score - min_score)`
65
+
66
+ Min-Max Normalization is a technique that scales the range of values from 0 to 1.
67
+
68
+ After scaling, the minimum value is 0 and the maximum value is 1.
69
+
70
+ For example, if you normalize a Score of [1, 3, 5], it becomes [0, 0.5, 1].
71
+
72
+ ### 3. Multiply weights
73
+
74
+ Since we are looking at a hybrid retrieval module, we need to multiply each Normalized Score by a Weight.
75
+
76
+ Let's say we have a Score of [0, 0.25, 1] and a Score of [0, 0.5, 1].
77
+
78
+ If Weight is 0.7 and 0.3, we simply multiply the respective Score values by 0.7 and 0.3!
79
+
80
+ ### 4. Score Fusion
81
+
82
+ Score Fusion is literally the process of combining the two weighted scores we got!
83
+
84
+ - id: [`id_1`, `id_2`, `id_3`], Score: [0.1, 0.2, 0.7]
85
+ - id: [`id_2`, `id_3`, `id_4`], Score: [0.3, 0.8, 0.2]
86
+
87
+ Suppose we have the following two results
88
+
89
+ There is only one `id_1` and `id_4`, and two `id_2` and `id_3`.
90
+
91
+ Then we can combine the two results as follows
92
+
93
+ - id_1 : 0.1
94
+ - id_2 : 0.2 + 0.3 = 0.5
95
+ - id_3 : 0.7 + 0.8 = 1.5
96
+ - id_4 : 0.2
97
+
98
+ The example assumes a situation where top_k is 3, so if we pick the top 3 in score order, we get
99
+
100
+ - Id: [`id_3`, `id_2`, `id_4`], Score: [1.5, 0.5, 0.2].
101
+
102
+ ## **Module Parameters**
103
+
104
+ - **Parameters**: `target_modules`, `weights`, `target_module_params`
105
+ - **Purpose**: This module combines different retrieval modules (target_modules) and applies weights to them, adjusting
106
+ their influence on the final retrieval outcome. The `target_module_params` allows for further customization of each
107
+ target module.
108
+
109
+ ```{attention}
110
+ In the config YAML file that you wrote, you don't have to specify the target_module_params.
111
+ It is automatically generated when you run the optimization process.
112
+ ```
113
+
114
+ ## **Example config.yaml**
115
+
116
+ ```yaml
117
+ modules:
118
+ - module_type: hybrid_dbsf
119
+ target_modules: ('bm25', 'vectordb')
120
+ weights:
121
+ - (0.5, 0.5)
122
+ - (0.3, 0.7)
123
+ - (0.7, 0.3)
124
+ ```
@@ -26,6 +26,82 @@ using `ast.literal_eval()`, we have to write tuples as if we were writing them i
26
26
 
27
27
  So something like `('bm25', 'vectordb')` with quotes will work.
28
28
 
29
+ ## 📌 Score Fusion additional explanation
30
+
31
+ `Hybrid-dbsf` module and `Hybrid-rsf` module are similar in that they both use score fusion algorithm.
32
+
33
+ Here is the Score Fusion algorithm's flow:
34
+
35
+ ![Score Fusion](../../_static/score_fusion.png)
36
+
37
+ 1. Get the Min/Max Score
38
+ 2. Apply Min-Max Normalization
39
+ 3. Multiply weights
40
+ 4. Score Fusion
41
+
42
+ There are four main steps in the flow as follows
43
+
44
+ RSF and DBSF differ only in the method for finding the Min-Max Score in step 1 (colored pink in the figure), while steps
45
+ 2, 3, and 4 are the same!
46
+
47
+ Learn how to find the RSF-specific Min-Max Score !!
48
+
49
+ ### 1. Get the Min/Max Score in RSF ⭐⭐⭐
50
+
51
+ As the term Relative suggests, the Min and Max scores for RSF are determined relatively.
52
+
53
+ What does relative mean?
54
+
55
+ It literally means that the largest of the scores will be the Max Score and the smallest will be the Min Score.
56
+
57
+ Let's look at an example, which is much simpler to understand.
58
+
59
+ Let's say Score list: [1, 3, 5].
60
+
61
+ Then the Max value of the score list is 5 and the Min value is 1.
62
+
63
+ Steps 2, 3, and 4 below are the same as for DBSF.
64
+
65
+ ### 2. Apply Min-Max Normalization
66
+
67
+ `scaled_score = (score - min_score) / (max_score - min_score)`
68
+
69
+ Min-Max Normalization is a technique that scales the range of values from 0 to 1.
70
+
71
+ After scaling, the minimum value is 0 and the maximum value is 1.
72
+
73
+ For example, if you normalize a Score of [1, 3, 5], it becomes [0, 0.5, 1].
74
+
75
+ ### 3. Multiply weights
76
+
77
+ Since we are looking at a hybrid retrieval module, we need to multiply each Normalized Score by a Weight.
78
+
79
+ Let's say we have a Score of [0, 0.25, 1] and a Score of [0, 0.5, 1].
80
+
81
+ If Weight is 0.7 and 0.3, we simply multiply the respective Score values by 0.7 and 0.3!
82
+
83
+ ### 4. Score Fusion
84
+
85
+ Score Fusion is literally the process of combining the two weighted scores we got!
86
+
87
+ - id: [`id_1`, `id_2`, `id_3`], Score: [0.1, 0.2, 0.7]
88
+ - id: [`id_2`, `id_3`, `id_4`], Score: [0.3, 0.8, 0.2]
89
+
90
+ Suppose we have the following two results
91
+
92
+ There is only one `id_1` and `id_4`, and two `id_2` and `id_3`.
93
+
94
+ Then we can combine the two results as follows
95
+
96
+ - id_1 : 0.1
97
+ - id_2 : 0.2 + 0.3 = 0.5
98
+ - id_3 : 0.7 + 0.8 = 1.5
99
+ - id_4 : 0.2
100
+
101
+ The example assumes a situation where top_k is 3, so if we pick the top 3 in score order, we get
102
+
103
+ - Id: [`id_3`, `id_2`, `id_4`], Score: [1.5, 0.5, 0.2].
104
+
29
105
  ## **Module Parameters**
30
106
 
31
107
  - **Parameters**: `target_modules`, `weights`, `target_module_params`
@@ -18,9 +18,15 @@ Information about the Embedding model can be found [Supporting Embedding models]
18
18
  Plus, you can learn about how to add custom embedding model at [here](../../local_model.md#add-your-embedding-models).
19
19
  ```
20
20
 
21
+ - **Parameter**: `embedding_batch`
22
+ - **Usage**: It is the batch size of the embedding model. It automatically set to the ingestion process using embedding
23
+ model.
24
+ If you get error on the embedding model, try to lower this parameter.
25
+
21
26
  ## **Example config.yaml**
22
27
  ```yaml
23
28
  modules:
24
29
  - module_type: vectordb
25
30
  embedding_model: openai
31
+ embedding_batch: 64
26
32
  ```
@@ -38,6 +38,7 @@ node_lines:
38
38
  - module_type: bm25
39
39
  - module_type: vectordb
40
40
  embedding_model: openai
41
+ embedding_batch: 256
41
42
  - module_type: hybrid_rrf
42
43
  target_modules: ('bm25', 'vectordb')
43
44
  rrf_k: [3, 5, 10]
@@ -4,6 +4,7 @@ import pathlib
4
4
  import pandas as pd
5
5
  import pytest
6
6
 
7
+ from autorag import dashboard
7
8
  from autorag.dashboard import get_metric_values, make_trial_summary_md
8
9
 
9
10
  root_dir = pathlib.PurePath(os.path.dirname(os.path.realpath(__file__))).parent
@@ -28,5 +29,7 @@ def test_make_trial_summary_md():
28
29
  md_text = make_trial_summary_md(sample_trial_dir)
29
30
  assert bool(md_text)
30
31
 
31
- # def test_dashboard_run():
32
- # dashboard.run(sample_trial_dir)
32
+
33
+ @pytest.mark.skip(reason="Can't stop this test on the github action or pytest cli setup")
34
+ def test_dashboard_run():
35
+ dashboard.run(sample_trial_dir)
@@ -69,7 +69,8 @@ def test_load_node_line(evaluator):
69
69
  assert node.modules[1].module == vectordb
70
70
  assert node.modules[2].module == hybrid_rrf
71
71
  assert node.modules[0].module_param == {'bm25_tokenizer': ['facebook/opt-125m', 'porter_stemmer']}
72
- assert node.modules[1].module_param == {'embedding_model': ['openai', 'openai']}
72
+ assert node.modules[1].module_param == {'embedding_model': ['openai', 'openai'],
73
+ 'embedding_batch': 50}
73
74
  assert node.modules[2].module_param == {
74
75
  'rrf_k': 5, 'target_modules': ('bm25', 'vectordb')
75
76
  }
@@ -12,9 +12,9 @@ from autorag.utils import (validate_qa_dataset, validate_corpus_dataset, cast_qa
12
12
  @pytest.fixture
13
13
  def qa_df():
14
14
  return pd.DataFrame({
15
- 'qid': ['id1', 'id2'],
16
- 'query': ['query1', 'query2'],
17
- 'retrieval_gt': [[['doc1', 'doc3'], ['doc2']], [[]]],
15
+ 'qid': ['id1', 'id2', 'id3'],
16
+ 'query': ['query1', 'query2', 'query3'],
17
+ 'retrieval_gt': [[['doc1', 'doc3'], ['doc2']], [[]], [[]]],
18
18
  'generation_gt': 'answer1',
19
19
  })
20
20
 
@@ -55,6 +55,7 @@ def test_validate_corpus_dataset(corpus_df):
55
55
  # Test cast_qa_dataset
56
56
  def test_cast_qa_dataset(qa_df):
57
57
  # Cast the dataset and check for correct casting
58
+ qa_df.drop(index=1, inplace=True)
58
59
  casted_df = cast_qa_dataset(qa_df)
59
60
  assert all(isinstance(x, list) for x in casted_df['retrieval_gt'])
60
61
  assert all(isinstance(x[0], list) for x in casted_df['retrieval_gt'])
@@ -70,14 +71,12 @@ def test_cast_qa_dataset(qa_df):
70
71
  # Test cast_corpus_dataset
71
72
  def test_cast_corpus_dataset(corpus_df):
72
73
  # Cast the dataset and check for a datetime key in metadata
74
+ corpus_df.drop(index=1, inplace=True)
73
75
  casted_df = cast_corpus_dataset(corpus_df)
74
76
  assert all('last_modified_datetime' in x for x in casted_df['metadata'])
75
77
  assert casted_df['metadata'].iloc[0]['prev_id'] is None
76
78
  assert casted_df['metadata'].iloc[0]['next_id'] == 'doc2'
77
- assert casted_df['metadata'].iloc[1]['test_key'] == 'test_value'
78
- assert casted_df['metadata'].iloc[1]['prev_id'] is None
79
- assert casted_df['metadata'].iloc[1]['next_id'] is None
80
- assert casted_df['metadata'].iloc[2]['last_modified_datetime'] == datetime(2022, 12, 1, 3, 4, 5)
79
+ assert casted_df['metadata'].iloc[1]['last_modified_datetime'] == datetime(2022, 12, 1, 3, 4, 5)
81
80
 
82
81
 
83
82
  def test_validate_qa_from_corpus_dataset(qa_df, corpus_df):
@@ -101,6 +101,11 @@ async def mock_openai_chat_create(self, messages, model, **kwargs):
101
101
  token=' not',
102
102
  logprob=-0.223,
103
103
  top_logprobs=[],
104
+ ),
105
+ ChatCompletionTokenLogprob(
106
+ token="<|end|>",
107
+ logprob=-0.443,
108
+ top_logprobs=[],
104
109
  )
105
110
  ]
106
111
  ),
@@ -11,6 +11,7 @@ node_lines:
11
11
  bm25_tokenizer: [ facebook/opt-125m, porter_stemmer ]
12
12
  - module_type: vectordb
13
13
  embedding_model: [openai, openai]
14
+ embedding_batch: 50
14
15
  - module_type: hybrid_rrf
15
16
  rrf_k: 5
16
17
  target_modules: ('bm25', 'vectordb') # it will select the best result among each module and fuse it.
@@ -1 +0,0 @@
1
- 0.2.3
@@ -1,51 +0,0 @@
1
- # Hybrid - dbsf
2
-
3
- The `hybrid-dbsf` module is designed to retrieve passages from multiple retrievals.
4
-
5
- ## What is dbsf?
6
-
7
- - Distribution-based Score
8
- Fusion [(Mazzecchi: blog post)](https://medium.com/plain-simple-software/distribution-based-score-fusion-dbsf-a-new-approach-to-vector-search-ranking-f87c37488b18)
9
-
10
- DBSF (Distribution-Based Score Fusion) is an algorithm that normalizes search scores from different encoders by
11
- considering the distribution tails of each embedding, using MinMax scaling with custom feature ranges.
12
-
13
- ## ❗️Hybird additional explanation
14
-
15
- By default, `hybrid` is designed to be used without writing target_module_params. Other modules listed in target_modules
16
- must be included in the config file, and hybrid is calculated based on the best of the results from those modules.
17
-
18
- Once evaluated to find the optimal pipeline, extracting the pipeline creates a parameter called target_module_params.
19
- This helps the hybrid work even if you don't include other modules, which is useful in test dataset evaluation and
20
- deployment situations.
21
-
22
- Also, target_modules and target_module_params must be in the form of a tuple. By default, tuples don't work in yaml
23
- files, but AutoRAG specifically uses them. In the AutoRAG config yaml file, a tuple is a tuple of parameters, as opposed
24
- to a List, which is a list of options for a parameter that you can try for optimization. Note that because we are
25
- using `ast.literal_eval()`, we have to write tuples as if we were writing them in python.
26
-
27
- So something like `('bm25', 'vectordb')` with quotes will work.
28
-
29
- ## **Module Parameters**
30
-
31
- - **Parameters**: `target_modules`, `weights`, `target_module_params`
32
- - **Purpose**: This module combines different retrieval modules (target_modules) and applies weights to them, adjusting
33
- their influence on the final retrieval outcome. The `target_module_params` allows for further customization of each
34
- target module.
35
-
36
- ```{attention}
37
- In the config YAML file that you wrote, you don't have to specify the target_module_params.
38
- It is automatically generated when you run the optimization process.
39
- ```
40
-
41
- ## **Example config.yaml**
42
-
43
- ```yaml
44
- modules:
45
- - module_type: hybrid_dbsf
46
- target_modules: ('bm25', 'vectordb')
47
- weights:
48
- - (0.5, 0.5)
49
- - (0.3, 0.7)
50
- - (0.7, 0.3)
51
- ```
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes