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.
- {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/PKG-INFO +1 -1
- {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/SOURCES.txt +2 -0
- {autorag-0.2.3 → autorag-0.2.5}/PKG-INFO +1 -1
- autorag-0.2.5/autorag/VERSION +1 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/dashboard.py +25 -5
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluator.py +9 -1
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/openai_llm.py +1 -1
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/vectordb.py +5 -5
- {autorag-0.2.3 → autorag-0.2.5}/autorag/schema/node.py +2 -2
- {autorag-0.2.3 → autorag-0.2.5}/autorag/utils/preprocess.py +2 -0
- autorag-0.2.5/docs/source/_static/normal_distribution.png +0 -0
- autorag-0.2.5/docs/source/_static/score_fusion.png +0 -0
- autorag-0.2.5/docs/source/nodes/retrieval/hybrid_dbsf.md +124 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/hybrid_rsf.md +76 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/vectordb.md +6 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_config/full.yaml +1 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_dashboard.py +5 -2
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_evaluator.py +2 -1
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/utils/test_preprocess.py +6 -7
- {autorag-0.2.3 → autorag-0.2.5}/tests/mock.py +5 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/simple.yaml +1 -0
- autorag-0.2.3/autorag/VERSION +0 -1
- autorag-0.2.3/docs/source/nodes/retrieval/hybrid_dbsf.md +0 -51
- {autorag-0.2.3 → autorag-0.2.5}/.github/FUNDING.yml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/.github/dependabot.yml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/.github/workflows/publish.yml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/.github/workflows/sphinx.yml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/.github/workflows/test.yml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/.gitignore +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/dependency_links.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/entry_points.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/requires.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/AutoRAG.egg-info/top_level.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/CODE_OF_CONDUCT.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/CONTRIBUTING.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/LICENSE +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/README.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/cli.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/corpus/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/corpus/langchain.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/corpus/llama_index.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/llama_index.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/llama_index_default_prompt.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/ragas.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/qacreation/simple.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/utils/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/data/utils/util.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/deploy.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/generation.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/g_eval_prompts/coh_detailed.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/g_eval_prompts/con_detailed.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/g_eval_prompts/flu_detailed.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/g_eval_prompts/rel_detailed.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/generation.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/retrieval.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/retrieval_contents.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/metric/util.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/retrieval.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/retrieval_contents.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/evaluate/util.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/node_line.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/llama_index_llm.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/generator/vllm.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passageaugmenter/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passageaugmenter/base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passageaugmenter/pass_passage_augmenter.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passageaugmenter/prev_next_augmenter.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passageaugmenter/run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/longllmlingua.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/pass_compressor.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/refine.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagecompressor/tree_summarize.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/pass_passage_filter.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/percentile_cutoff.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/recency.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/similarity_percentile_cutoff.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/similarity_threshold_cutoff.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagefilter/threshold_cutoff.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/cohere.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/colbert.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/flag_embedding.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/flag_embedding_llm.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/jina.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/koreranker.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/monot5.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/pass_reranker.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/rankgpt.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/sentence_transformer.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/tart/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/tart/modeling_enc_t5.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/tart/tart.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/tart/tokenization_enc_t5.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/time_reranker.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/passagereranker/upr.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/promptmaker/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/promptmaker/base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/promptmaker/fstring.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/promptmaker/long_context_reorder.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/promptmaker/run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/hyde.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/multi_query_expansion.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/pass_query_expansion.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/query_decompose.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/queryexpansion/run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/bm25.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/hybrid_cc.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/hybrid_dbsf.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/hybrid_rrf.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/hybrid_rsf.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/nodes/retrieval/run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/schema/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/schema/module.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/strategy.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/support.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/utils/__init__.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/utils/util.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/autorag/web.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/Makefile +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/make.bat +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/requirements.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/data_creation.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/data_folder.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/dcg.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/f1_score.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/map.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/mrr.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/ndcg.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/ndcg_formula.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/node_folder.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/node_line_folder.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/node_line_summary.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/node_lines.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/node_summary.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/project_folder_example.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/project_folders.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/resources_folder.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/RAG_paradigms.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/advanced_RAG.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/cycle.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/merger.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/node_line_modular.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/roadmap/policy.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/samsung_sundae.jpeg +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/trial_folder.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/trial_json.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/trial_summary.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/_static/web_interface.png +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.data.corpus.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.data.qacreation.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.data.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.data.utils.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.evaluate.metric.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.evaluate.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.generator.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.passageaugmenter.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.passagecompressor.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.passagefilter.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.passagereranker.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.passagereranker.tart.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.promptmaker.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.queryexpansion.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.retrieval.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.nodes.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.schema.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/autorag.utils.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/api_spec/modules.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/conf.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/data_creation/data_format.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/data_creation/ragas.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/data_creation/tutorial.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/deploy/api_endpoint.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/deploy/web.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/evaluate_metrics/generation.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/evaluate_metrics/retrieval.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/evaluate_metrics/retrieval_contents.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/index.rst +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/install.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/local_model.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/generator/generator.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/generator/llama_index_llm.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/generator/openai_llm.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/generator/vllm.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/index.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_augmenter/passage_augmenter.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_augmenter/prev_next_augmenter.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_compressor/longllmlingua.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_compressor/passage_compressor.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_compressor/refine.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_compressor/tree_summarize.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/passage_filter.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/percentile_cutoff.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/recency_filter.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/similarity_percentile_cutoff.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/similarity_threshold_cutoff.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_filter/threshold_cutoff.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/cohere.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/colbert.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/flag_embedding_llm_reranker.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/flag_embedding_reranker.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/jina_reranker.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/koreranker.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/monot5.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/passage_reranker.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/rankgpt.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/sentence_transformer_reranker.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/tart.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/time_reranker.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/passage_reranker/upr.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/prompt_maker/fstring.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/prompt_maker/long_context_reorder.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/prompt_maker/prompt_maker.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/query_expansion/hyde.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/query_expansion/multi_query_expansion.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/query_expansion/query_decompose.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/query_expansion/query_expansion.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/bm25.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/hybrid_cc.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/hybrid_rrf.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/nodes/retrieval/retrieval.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/optimization/custom_config.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/optimization/folder_structure.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/optimization/optimization.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/optimization/sample_full_config.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/optimization/strategies.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/roadmap/modular_rag.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/structure.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/troubleshooting.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/docs/source/tutorial.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/pyproject.toml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/requirements.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_config/compact_local.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_config/compact_openai.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_config/config_korean.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_config/extracted_sample.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_config/simple_local.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_config/simple_openai.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_dataset/README.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_dataset/eli5/load_eli5_dataset.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_dataset/msmarco/load_msmarco_dataset.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/sample_dataset/triviaqa/load_triviaqa_dataset.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/setup.cfg +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/corpus/test_base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/corpus/test_langchain.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/corpus/test_llama_index_corpus.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/qacreation/test_base_qacreation.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/qacreation/test_llama_index_qacreation.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/qacreation/test_ragas_qa_creation.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/data/qacreation/test_simple.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/metric/test_generation_metric.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/metric/test_retrieval_contents_metric.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/metric/test_retrieval_metric.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/test_evaluate_util.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/test_generation_evaluate.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/test_retrieval_contents_evaluate.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/evaluate/test_retrieval_evaluate.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/generator/test_generator_base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/generator/test_llama_index_llm.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/generator/test_openai.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/generator/test_run_generator_node.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/generator/test_vllm.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passageaugmenter/test_base_passage_augmenter.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passageaugmenter/test_pass_passage_augmenter.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passageaugmenter/test_prev_next_augmenter.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passageaugmenter/test_run_passage_augmenter.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_base_passage_compressor.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_longllmlingua.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_pass_compressor.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_refine.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_run_passage_compressor_node.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagecompressor/test_tree_summarize.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_pass_passage_filter.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_passage_filter_base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_passage_filter_run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_percentile_cutoff.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_recency_filter.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_similarity_percentile_cutoff.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_similarity_threshold_cutoff.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagefilter/test_threshold_cutoff.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_cohere_reranker.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_colbert_reranker.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_flag_embedding.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_flag_embedding_llm.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_jina_reranker.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_koreranker.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_monot5.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_pass_reranker.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_passage_reranker_base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_passage_reranker_run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_rankgpt.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_sentence_transformer.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_tart.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_time_reranker.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/passagereranker/test_upr.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/promptmaker/test_fstring.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/promptmaker/test_long_context_reorder.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/promptmaker/test_prompt_maker_base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/promptmaker/test_prompt_maker_run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_hyde.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_multi_query_expansion.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_pass_query_expansion.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_query_decompose.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_query_expansion_base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/queryexpansion/test_query_expansion_run.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_bm25.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_hybrid_base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_hybrid_cc.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_hybrid_dbsf.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_hybrid_rrf.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_hybrid_rsf.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_retrieval_base.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_run_retrieval_node.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/nodes/retrieval/test_vectordb.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/schema/test_module_schema.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/schema/test_node_schema.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_cli.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_deploy.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_strategy.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_support.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/test_web.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/autorag/utils/test_util.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/conftest.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/delete_tests.py +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/requirements.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/README.md +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/corpus_data_sample.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/data_creation/raw_dir/sample1.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/data_creation/raw_dir/sample2.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/data_creation/raw_dir/sample3.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/full.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/qa_data_sample.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/qa_gen_prompts/prompt1.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/qa_gen_prompts/prompt2.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/qa_gen_prompts/prompt3.txt +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/qa_test_data_sample.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/config.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/2.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/3.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/4.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/5.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/best_5.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/generator/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/post_retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/pre_retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/retrieval/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/retrieval/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/retrieval/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/retrieval/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/0/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/config.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/pre_retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/passage_filter/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/retrieval/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/retrieval/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/retrieval/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/1/retrieve_node_line/retrieval/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/config.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/post_retrieve_node_line/prompt_maker/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/pre_retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/retrieval/0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/retrieval/1.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/retrieval/best_0.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/retrieval/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/2/retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/3/config.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/best.yaml +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/data/corpus.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/data/qa.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/bm25_porter_stemmer.pkl +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/data_level0.bin +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/header.bin +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/length.bin +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/link_lists.bin +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/resources/chroma/chroma.sqlite3 +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/result_project/trial.json +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/sample_contents_nqa.csv +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/sample_project/data/corpus.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/sample_project/data/qa.parquet +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/sample_project/resources/bm25_gpt2.pkl +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/sample_project/resources/bm25_porter_stemmer.pkl +0 -0
- {autorag-0.2.3 → autorag-0.2.5}/tests/resources/test_bm25_retrieval.pkl +0 -0
|
@@ -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
|
|
@@ -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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
|
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=
|
|
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
|
-
|
|
81
|
-
embedding_model.embed_batch_size =
|
|
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
|
|
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):
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
```
|
|
@@ -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
|
-
|
|
32
|
-
|
|
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]['
|
|
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.
|
autorag-0.2.3/autorag/VERSION
DELETED
|
@@ -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
|
|
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
|
|
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
|
|
File without changes
|