AutoRAG 0.2.10__tar.gz → 0.2.12__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.10 → autorag-0.2.12}/AutoRAG.egg-info/PKG-INFO +3 -3
- {autorag-0.2.10 → autorag-0.2.12}/AutoRAG.egg-info/requires.txt +2 -2
- {autorag-0.2.10 → autorag-0.2.12}/PKG-INFO +3 -3
- autorag-0.2.12/autorag/VERSION +1 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/metric/generation.py +11 -4
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/generator/openai_llm.py +2 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/retrieval/bm25.py +35 -6
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/retrieval/run.py +57 -4
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/retrieval/vectordb.py +61 -18
- {autorag-0.2.10 → autorag-0.2.12}/autorag/utils/util.py +16 -0
- {autorag-0.2.10 → autorag-0.2.12}/requirements.txt +2 -2
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/evaluate/metric/test_generation_metric.py +1 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/generator/test_openai.py +2 -2
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/retrieval/test_bm25.py +44 -1
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/retrieval/test_retrieval_base.py +7 -1
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/retrieval/test_vectordb.py +55 -2
- autorag-0.2.10/autorag/VERSION +0 -1
- {autorag-0.2.10 → autorag-0.2.12}/.github/FUNDING.yml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/.github/dependabot.yml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/.github/workflows/publish.yml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/.github/workflows/sphinx.yml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/.github/workflows/test.yml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/.gitignore +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/AutoRAG.egg-info/SOURCES.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/AutoRAG.egg-info/dependency_links.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/AutoRAG.egg-info/entry_points.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/AutoRAG.egg-info/top_level.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/CODE_OF_CONDUCT.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/CONTRIBUTING.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/LICENSE +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/README.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/cli.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/dashboard.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/corpus/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/corpus/langchain.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/corpus/llama_index.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/qacreation/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/qacreation/base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/qacreation/llama_index.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/qacreation/llama_index_default_prompt.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/qacreation/ragas.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/qacreation/simple.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/utils/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/data/utils/util.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/deploy.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/generation.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/metric/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/metric/g_eval_prompts/coh_detailed.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/metric/g_eval_prompts/con_detailed.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/metric/g_eval_prompts/flu_detailed.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/metric/g_eval_prompts/rel_detailed.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/metric/retrieval.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/metric/retrieval_contents.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/metric/util.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/retrieval.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/retrieval_contents.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluation/util.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/evaluator.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/node_line.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/generator/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/generator/base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/generator/llama_index_llm.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/generator/run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/generator/vllm.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passageaugmenter/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passageaugmenter/base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passageaugmenter/pass_passage_augmenter.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passageaugmenter/prev_next_augmenter.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passageaugmenter/run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagecompressor/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagecompressor/base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagecompressor/longllmlingua.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagecompressor/pass_compressor.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagecompressor/refine.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagecompressor/run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagecompressor/tree_summarize.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagefilter/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagefilter/base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagefilter/pass_passage_filter.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagefilter/percentile_cutoff.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagefilter/recency.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagefilter/run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagefilter/similarity_percentile_cutoff.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagefilter/similarity_threshold_cutoff.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagefilter/threshold_cutoff.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/cohere.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/colbert.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/flag_embedding.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/flag_embedding_llm.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/jina.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/koreranker.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/monot5.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/pass_reranker.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/rankgpt.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/sentence_transformer.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/tart/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/tart/modeling_enc_t5.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/tart/tart.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/tart/tokenization_enc_t5.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/time_reranker.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/passagereranker/upr.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/promptmaker/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/promptmaker/base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/promptmaker/fstring.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/promptmaker/long_context_reorder.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/promptmaker/run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/promptmaker/window_replacement.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/queryexpansion/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/queryexpansion/base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/queryexpansion/hyde.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/queryexpansion/multi_query_expansion.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/queryexpansion/pass_query_expansion.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/queryexpansion/query_decompose.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/queryexpansion/run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/retrieval/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/retrieval/base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/retrieval/hybrid_cc.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/nodes/retrieval/hybrid_rrf.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/schema/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/schema/module.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/schema/node.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/strategy.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/support.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/utils/__init__.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/utils/preprocess.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/autorag/web.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/Makefile +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/make.bat +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/requirements.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/CNAME +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/data_creation.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/data_folder.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/dcg.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/f1_score.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/map.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/mrr.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/ndcg.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/ndcg_formula.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/node_folder.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/node_line_folder.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/node_line_summary.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/node_lines.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/node_summary.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/normal_distribution.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/project_folder_example.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/project_folders.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/resources_folder.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/roadmap/RAG_paradigms.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/roadmap/advanced_RAG.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/roadmap/cycle.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/roadmap/merger.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/roadmap/node_line_modular.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/roadmap/policy.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/samsung_sundae.jpeg +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/score_fusion.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/trial_folder.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/trial_json.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/trial_summary.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/_static/web_interface.png +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.data.corpus.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.data.qacreation.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.data.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.data.utils.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.evaluation.metric.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.evaluation.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.nodes.generator.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.nodes.passageaugmenter.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.nodes.passagecompressor.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.nodes.passagefilter.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.nodes.passagereranker.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.nodes.passagereranker.tart.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.nodes.promptmaker.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.nodes.queryexpansion.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.nodes.retrieval.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.nodes.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.schema.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/autorag.utils.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/api_spec/modules.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/conf.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/data_creation/data_format.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/data_creation/ragas.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/data_creation/tutorial.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/deploy/api_endpoint.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/deploy/web.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/evaluate_metrics/generation.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/evaluate_metrics/retrieval.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/evaluate_metrics/retrieval_contents.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/index.rst +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/install.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/local_model.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/generator/generator.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/generator/llama_index_llm.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/generator/openai_llm.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/generator/vllm.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/index.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_augmenter/passage_augmenter.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_augmenter/prev_next_augmenter.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_compressor/longllmlingua.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_compressor/passage_compressor.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_compressor/refine.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_compressor/tree_summarize.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_filter/passage_filter.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_filter/percentile_cutoff.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_filter/recency_filter.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_filter/similarity_percentile_cutoff.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_filter/similarity_threshold_cutoff.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_filter/threshold_cutoff.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/cohere.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/colbert.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/flag_embedding_llm_reranker.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/flag_embedding_reranker.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/jina_reranker.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/koreranker.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/monot5.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/passage_reranker.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/rankgpt.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/sentence_transformer_reranker.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/tart.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/time_reranker.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/passage_reranker/upr.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/prompt_maker/fstring.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/prompt_maker/long_context_reorder.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/prompt_maker/prompt_maker.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/prompt_maker/window_replacement.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/query_expansion/hyde.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/query_expansion/multi_query_expansion.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/query_expansion/query_decompose.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/query_expansion/query_expansion.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/retrieval/bm25.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/retrieval/hybrid_cc.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/retrieval/hybrid_rrf.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/retrieval/retrieval.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/nodes/retrieval/vectordb.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/optimization/custom_config.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/optimization/folder_structure.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/optimization/optimization.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/optimization/strategies.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/roadmap/modular_rag.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/structure.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/troubleshooting.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/docs/source/tutorial.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/pyproject.toml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_config/compact_local.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_config/compact_openai.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_config/config_korean.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_config/extracted_sample.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_config/full.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_config/simple_local.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_config/simple_ollama.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_config/simple_openai.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_dataset/README.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_dataset/eli5/load_eli5_dataset.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_dataset/hotpotqa/load_hotpotqa_dataset.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_dataset/msmarco/load_msmarco_dataset.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/sample_dataset/triviaqa/load_triviaqa_dataset.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/setup.cfg +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/data/corpus/test_base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/data/corpus/test_langchain.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/data/corpus/test_llama_index_corpus.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/data/qacreation/test_base_qacreation.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/data/qacreation/test_llama_index_qacreation.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/data/qacreation/test_ragas_qa_creation.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/data/qacreation/test_simple.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/evaluate/metric/test_retrieval_contents_metric.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/evaluate/metric/test_retrieval_metric.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/evaluate/test_evaluate_util.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/evaluate/test_generation_evaluate.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/evaluate/test_retrieval_contents_evaluate.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/evaluate/test_retrieval_evaluate.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/generator/test_generator_base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/generator/test_llama_index_llm.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/generator/test_run_generator_node.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/generator/test_vllm.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passageaugmenter/test_base_passage_augmenter.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passageaugmenter/test_pass_passage_augmenter.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passageaugmenter/test_prev_next_augmenter.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passageaugmenter/test_run_passage_augmenter.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagecompressor/test_base_passage_compressor.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagecompressor/test_longllmlingua.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagecompressor/test_pass_compressor.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagecompressor/test_refine.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagecompressor/test_run_passage_compressor_node.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagecompressor/test_tree_summarize.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagefilter/test_pass_passage_filter.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagefilter/test_passage_filter_base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagefilter/test_passage_filter_run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagefilter/test_percentile_cutoff.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagefilter/test_recency_filter.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagefilter/test_similarity_percentile_cutoff.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagefilter/test_similarity_threshold_cutoff.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagefilter/test_threshold_cutoff.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_cohere_reranker.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_colbert_reranker.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_flag_embedding.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_flag_embedding_llm.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_jina_reranker.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_koreranker.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_monot5.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_pass_reranker.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_passage_reranker_base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_passage_reranker_run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_rankgpt.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_sentence_transformer.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_tart.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_time_reranker.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/passagereranker/test_upr.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/promptmaker/test_fstring.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/promptmaker/test_long_context_reorder.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/promptmaker/test_prompt_maker_base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/promptmaker/test_prompt_maker_run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/promptmaker/test_window_replacement.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/queryexpansion/test_hyde.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/queryexpansion/test_multi_query_expansion.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/queryexpansion/test_pass_query_expansion.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/queryexpansion/test_query_decompose.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/queryexpansion/test_query_expansion_base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/queryexpansion/test_query_expansion_run.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/retrieval/test_hybrid_base.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/retrieval/test_hybrid_cc.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/retrieval/test_hybrid_rrf.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/nodes/retrieval/test_run_retrieval_node.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/schema/test_module_schema.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/schema/test_node_schema.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/test_cli.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/test_dashboard.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/test_deploy.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/test_evaluator.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/test_strategy.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/test_support.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/test_web.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/utils/test_preprocess.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/autorag/utils/test_util.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/conftest.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/delete_tests.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/mock.py +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/requirements.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/README.md +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/corpus_data_sample.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/data_creation/raw_dir/sample1.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/data_creation/raw_dir/sample2.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/data_creation/raw_dir/sample3.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/full.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/qa_data_sample.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/qa_gen_prompts/prompt1.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/qa_gen_prompts/prompt2.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/qa_gen_prompts/prompt3.txt +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/qa_test_data_sample.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/config.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/generator/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/generator/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/generator/2.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/generator/3.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/generator/4.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/generator/5.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/generator/best_5.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/generator/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/prompt_maker/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/post_retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/pre_retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/passage_compressor/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/passage_reranker/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/retrieval/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/retrieval/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/retrieval/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/retrieval/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/0/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/config.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/pre_retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/retrieve_node_line/passage_filter/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/retrieve_node_line/passage_reranker/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/retrieve_node_line/retrieval/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/retrieve_node_line/retrieval/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/retrieve_node_line/retrieval/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/1/retrieve_node_line/retrieval/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/config.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/post_retrieve_node_line/prompt_maker/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/2.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/pre_retrieve_node_line/query_expansion/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/pre_retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/passage_compressor/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/passage_reranker/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/retrieval/0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/retrieval/1.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/retrieval/best_0.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/retrieval/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/2/retrieve_node_line/summary.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/3/config.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/best.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/data/corpus.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/data/qa.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/resources/bm25_porter_stemmer.pkl +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/data_level0.bin +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/header.bin +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/length.bin +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/resources/chroma/6595d304-5270-4d9f-a267-c191366804ce/link_lists.bin +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/resources/chroma/chroma.sqlite3 +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/result_project/trial.json +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/sample_contents_nqa.csv +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/sample_project/data/corpus.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/sample_project/data/qa.parquet +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/sample_project/resources/bm25_gpt2.pkl +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/sample_project/resources/bm25_porter_stemmer.pkl +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/tests/resources/simple.yaml +0 -0
- {autorag-0.2.10 → autorag-0.2.12}/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
|
+
Version: 0.2.12
|
|
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
|
|
@@ -242,7 +242,7 @@ Requires-Dist: uvicorn
|
|
|
242
242
|
Requires-Dist: torch
|
|
243
243
|
Requires-Dist: sentencepiece
|
|
244
244
|
Requires-Dist: guidance
|
|
245
|
-
Requires-Dist: cohere
|
|
245
|
+
Requires-Dist: cohere<=5.6.2
|
|
246
246
|
Requires-Dist: tokenlog>=0.0.2
|
|
247
247
|
Requires-Dist: aiohttp
|
|
248
248
|
Requires-Dist: bert_score
|
|
@@ -256,7 +256,7 @@ Requires-Dist: llama-index-core>=0.10.1
|
|
|
256
256
|
Requires-Dist: llama-index-readers-file
|
|
257
257
|
Requires-Dist: llama-index-embeddings-openai
|
|
258
258
|
Requires-Dist: llama-index-embeddings-huggingface
|
|
259
|
-
Requires-Dist: llama-index-llms-openai
|
|
259
|
+
Requires-Dist: llama-index-llms-openai>=0.1.26
|
|
260
260
|
Requires-Dist: llama-index-llms-huggingface
|
|
261
261
|
Requires-Dist: llama-index-llms-openai-like
|
|
262
262
|
Requires-Dist: llama-index-llms-ollama
|
|
@@ -20,7 +20,7 @@ uvicorn
|
|
|
20
20
|
torch
|
|
21
21
|
sentencepiece
|
|
22
22
|
guidance
|
|
23
|
-
cohere
|
|
23
|
+
cohere<=5.6.2
|
|
24
24
|
tokenlog>=0.0.2
|
|
25
25
|
aiohttp
|
|
26
26
|
bert_score
|
|
@@ -34,7 +34,7 @@ llama-index-core>=0.10.1
|
|
|
34
34
|
llama-index-readers-file
|
|
35
35
|
llama-index-embeddings-openai
|
|
36
36
|
llama-index-embeddings-huggingface
|
|
37
|
-
llama-index-llms-openai
|
|
37
|
+
llama-index-llms-openai>=0.1.26
|
|
38
38
|
llama-index-llms-huggingface
|
|
39
39
|
llama-index-llms-openai-like
|
|
40
40
|
llama-index-llms-ollama
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: AutoRAG
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.12
|
|
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
|
|
@@ -242,7 +242,7 @@ Requires-Dist: uvicorn
|
|
|
242
242
|
Requires-Dist: torch
|
|
243
243
|
Requires-Dist: sentencepiece
|
|
244
244
|
Requires-Dist: guidance
|
|
245
|
-
Requires-Dist: cohere
|
|
245
|
+
Requires-Dist: cohere<=5.6.2
|
|
246
246
|
Requires-Dist: tokenlog>=0.0.2
|
|
247
247
|
Requires-Dist: aiohttp
|
|
248
248
|
Requires-Dist: bert_score
|
|
@@ -256,7 +256,7 @@ Requires-Dist: llama-index-core>=0.10.1
|
|
|
256
256
|
Requires-Dist: llama-index-readers-file
|
|
257
257
|
Requires-Dist: llama-index-embeddings-openai
|
|
258
258
|
Requires-Dist: llama-index-embeddings-huggingface
|
|
259
|
-
Requires-Dist: llama-index-llms-openai
|
|
259
|
+
Requires-Dist: llama-index-llms-openai>=0.1.26
|
|
260
260
|
Requires-Dist: llama-index-llms-huggingface
|
|
261
261
|
Requires-Dist: llama-index-llms-openai-like
|
|
262
262
|
Requires-Dist: llama-index-llms-ollama
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.2.12
|
|
@@ -6,13 +6,13 @@ from typing import List, Optional
|
|
|
6
6
|
|
|
7
7
|
import evaluate
|
|
8
8
|
import pandas as pd
|
|
9
|
-
from sacrebleu.metrics.bleu import BLEU
|
|
10
9
|
import torch
|
|
11
10
|
from llama_index.core.embeddings import BaseEmbedding
|
|
12
11
|
from llama_index.embeddings.openai import OpenAIEmbedding
|
|
13
12
|
from openai import AsyncOpenAI
|
|
14
13
|
from rouge_score import tokenizers
|
|
15
14
|
from rouge_score.rouge_scorer import RougeScorer
|
|
15
|
+
from sacrebleu.metrics.bleu import BLEU
|
|
16
16
|
|
|
17
17
|
from autorag import embedding_models
|
|
18
18
|
from autorag.evaluation.metric.util import calculate_cosine_similarity
|
|
@@ -65,7 +65,9 @@ def huggingface_evaluate(instance, key: str,
|
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
@convert_inputs_to_list
|
|
68
|
-
def bleu(generation_gt: List[List[str]], generations: [str], tokenize:
|
|
68
|
+
def bleu(generation_gt: List[List[str]], generations: [str], tokenize: Optional[str] = None,
|
|
69
|
+
smooth_method: str = 'exp', smooth_value: Optional[float] = None, max_ngram_order: int = 4,
|
|
70
|
+
trg_lang: str = '', **kwargs) -> List[float]:
|
|
69
71
|
"""
|
|
70
72
|
Computes the BLEU metric given pred and ground-truth.
|
|
71
73
|
|
|
@@ -79,9 +81,10 @@ def bleu(generation_gt: List[List[str]], generations: [str], tokenize: str|None
|
|
|
79
81
|
Because it can be a multiple ground truth.
|
|
80
82
|
:param generations: A list of generations that LLM generated.
|
|
81
83
|
"""
|
|
82
|
-
|
|
84
|
+
bleu_instance = BLEU(tokenize=tokenize, smooth_method=smooth_method, smooth_value=smooth_value,
|
|
85
|
+
max_ngram_order=max_ngram_order, trg_lang=trg_lang, **kwargs)
|
|
83
86
|
|
|
84
|
-
result = list(map(lambda x:
|
|
87
|
+
result = list(map(lambda x: bleu_instance.sentence_score(x[0], x[1]).score, zip(generations, generation_gt)))
|
|
85
88
|
return result
|
|
86
89
|
|
|
87
90
|
|
|
@@ -319,4 +322,8 @@ def bert_score(generation_gt: List[List[str]], generations: List[str],
|
|
|
319
322
|
df['bert_score'] = evaluator.compute(predictions=df['prediction'].tolist(),
|
|
320
323
|
references=df['reference'].tolist(),
|
|
321
324
|
lang=lang, nthreads=n_threads, batch_size=batch)['f1']
|
|
325
|
+
|
|
326
|
+
del evaluator
|
|
327
|
+
if torch.cuda.is_available():
|
|
328
|
+
torch.cuda.empty_cache()
|
|
322
329
|
return df.groupby(level=0)['bert_score'].max().tolist()
|
|
@@ -13,6 +13,8 @@ from autorag.utils.util import process_batch
|
|
|
13
13
|
logger = logging.getLogger("AutoRAG")
|
|
14
14
|
|
|
15
15
|
MAX_TOKEN_DICT = { # model name : token limit
|
|
16
|
+
'gpt-4o-mini': 128_000,
|
|
17
|
+
'gpt-4o-mini-2024-07-18': 128_000,
|
|
16
18
|
'gpt-4o': 128_000,
|
|
17
19
|
'gpt-4o-2024-05-13': 128_000,
|
|
18
20
|
'gpt-4-turbo': 128_000,
|
|
@@ -2,7 +2,7 @@ import asyncio
|
|
|
2
2
|
import os
|
|
3
3
|
import pickle
|
|
4
4
|
import re
|
|
5
|
-
from typing import List, Dict, Tuple, Callable, Union, Iterable
|
|
5
|
+
from typing import List, Dict, Tuple, Callable, Union, Iterable, Optional
|
|
6
6
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
import pandas as pd
|
|
@@ -51,7 +51,8 @@ BM25_TOKENIZER = {
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
@retrieval_node
|
|
54
|
-
def bm25(queries: List[List[str]], top_k: int, bm25_corpus: Dict, bm25_tokenizer: str = 'porter_stemmer'
|
|
54
|
+
def bm25(queries: List[List[str]], top_k: int, bm25_corpus: Dict, bm25_tokenizer: str = 'porter_stemmer',
|
|
55
|
+
ids: Optional[List[List[str]]] = None) -> \
|
|
55
56
|
Tuple[List[List[str]], List[List[float]]]:
|
|
56
57
|
"""
|
|
57
58
|
BM25 retrieval function.
|
|
@@ -74,6 +75,9 @@ def bm25(queries: List[List[str]], top_k: int, bm25_corpus: Dict, bm25_tokenizer
|
|
|
74
75
|
It supports 'porter_stemmer', 'ko_kiwi', and huggingface `AutoTokenizer`.
|
|
75
76
|
You can pass huggingface tokenizer name.
|
|
76
77
|
Default is porter_stemmer.
|
|
78
|
+
:param ids: The optional list of ids that you want to retrieve.
|
|
79
|
+
You don't need to specify this in the general use cases.
|
|
80
|
+
Default is None.
|
|
77
81
|
:return: The 2-d list contains a list of passage ids that retrieved from bm25 and 2-d list of its scores.
|
|
78
82
|
It will be a length of queries. And each element has a length of top_k.
|
|
79
83
|
"""
|
|
@@ -85,6 +89,12 @@ def bm25(queries: List[List[str]], top_k: int, bm25_corpus: Dict, bm25_tokenizer
|
|
|
85
89
|
(f"The bm25 corpus tokenizer is {bm25_corpus['tokenizer_name']}, but your input is {bm25_tokenizer}. "
|
|
86
90
|
f"You need to ingest again. Delete bm25 pkl file and re-ingest it.")
|
|
87
91
|
bm25_instance = BM25Okapi(bm25_corpus["tokens"])
|
|
92
|
+
|
|
93
|
+
if ids is not None:
|
|
94
|
+
score_result = list(map(lambda query_list, id_list: get_bm25_scores(
|
|
95
|
+
query_list, id_list, tokenizer, bm25_instance, bm25_corpus), queries, ids))
|
|
96
|
+
return ids, score_result
|
|
97
|
+
|
|
88
98
|
# run async bm25_pure function
|
|
89
99
|
tasks = [bm25_pure(input_queries, top_k, tokenizer, bm25_instance, bm25_corpus) for input_queries in queries]
|
|
90
100
|
loop = asyncio.get_event_loop()
|
|
@@ -116,10 +126,7 @@ async def bm25_pure(queries: List[str], top_k: int, tokenizer, bm25_api: BM25Oka
|
|
|
116
126
|
:return: The tuple contains a list of passage ids that retrieved from bm25 and its scores.
|
|
117
127
|
"""
|
|
118
128
|
# I don't make queries operation to async, because queries length might be small, so it will occur overhead.
|
|
119
|
-
|
|
120
|
-
tokenized_queries = tokenizer(queries).input_ids
|
|
121
|
-
else:
|
|
122
|
-
tokenized_queries = tokenizer(queries)
|
|
129
|
+
tokenized_queries = tokenize(queries, tokenizer)
|
|
123
130
|
id_result = []
|
|
124
131
|
score_result = []
|
|
125
132
|
for query in tokenized_queries:
|
|
@@ -139,6 +146,28 @@ async def bm25_pure(queries: List[str], top_k: int, tokenizer, bm25_api: BM25Oka
|
|
|
139
146
|
return list(id_result), list(score_result)
|
|
140
147
|
|
|
141
148
|
|
|
149
|
+
def get_bm25_scores(queries: List[str], ids: List[str], tokenizer,
|
|
150
|
+
bm25_api: BM25Okapi, bm25_corpus: Dict) -> List[float]:
|
|
151
|
+
if len(ids) == 0 or not bool(ids):
|
|
152
|
+
return []
|
|
153
|
+
tokenized_queries = tokenize(queries, tokenizer)
|
|
154
|
+
result_dict = {id_: [] for id_ in ids}
|
|
155
|
+
for query in tokenized_queries:
|
|
156
|
+
scores = bm25_api.get_scores(query)
|
|
157
|
+
for i, id_ in enumerate(ids):
|
|
158
|
+
result_dict[id_].append(scores[bm25_corpus['passage_id'].index(id_)])
|
|
159
|
+
result_df = pd.DataFrame(result_dict)
|
|
160
|
+
return result_df.max(axis=0).tolist()
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def tokenize(queries: List[str], tokenizer) -> List[List[int]]:
|
|
164
|
+
if isinstance(tokenizer, PreTrainedTokenizerBase):
|
|
165
|
+
tokenized_queries = tokenizer(queries).input_ids
|
|
166
|
+
else:
|
|
167
|
+
tokenized_queries = tokenizer(queries)
|
|
168
|
+
return tokenized_queries
|
|
169
|
+
|
|
170
|
+
|
|
142
171
|
def bm25_ingest(corpus_path: str, corpus_data: pd.DataFrame, bm25_tokenizer: str = 'porter_stemmer'):
|
|
143
172
|
if not corpus_path.endswith('.pkl'):
|
|
144
173
|
raise ValueError(f"Corpus path {corpus_path} is not a pickle file.")
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import os
|
|
3
3
|
import pathlib
|
|
4
|
+
from copy import deepcopy
|
|
4
5
|
from typing import List, Callable, Dict, Tuple
|
|
5
6
|
|
|
6
7
|
import numpy as np
|
|
@@ -9,6 +10,8 @@ from tqdm import tqdm
|
|
|
9
10
|
|
|
10
11
|
from autorag.evaluation import evaluate_retrieval
|
|
11
12
|
from autorag.strategy import measure_speed, filter_by_threshold, select_best
|
|
13
|
+
from autorag.support import get_support_modules
|
|
14
|
+
from autorag.utils.util import get_best_row, to_list
|
|
12
15
|
|
|
13
16
|
logger = logging.getLogger("AutoRAG")
|
|
14
17
|
|
|
@@ -152,7 +155,8 @@ def run_retrieval_node(modules: List[Callable],
|
|
|
152
155
|
filename_first += len(hybrid_modules)
|
|
153
156
|
else: # for Evaluator
|
|
154
157
|
# get id and score
|
|
155
|
-
ids_scores = get_ids_and_scores(save_dir, [semantic_selected_filename, lexical_selected_filename]
|
|
158
|
+
ids_scores = get_ids_and_scores(save_dir, [semantic_selected_filename, lexical_selected_filename],
|
|
159
|
+
semantic_summary_df, lexical_summary_df, previous_result)
|
|
156
160
|
hybrid_module_params = list(map(lambda x: {**x, **ids_scores}, hybrid_module_params))
|
|
157
161
|
|
|
158
162
|
# optimize each modules
|
|
@@ -237,17 +241,66 @@ def edit_summary_df_params(summary_df: pd.DataFrame, target_modules, target_modu
|
|
|
237
241
|
return summary_df
|
|
238
242
|
|
|
239
243
|
|
|
240
|
-
def get_ids_and_scores(node_dir: str, filenames: List[str]
|
|
244
|
+
def get_ids_and_scores(node_dir: str, filenames: List[str],
|
|
245
|
+
semantic_summary_df: pd.DataFrame,
|
|
246
|
+
lexical_summary_df: pd.DataFrame,
|
|
247
|
+
previous_result) -> Dict[str, Tuple[List[List[str]], List[List[float]]]]:
|
|
248
|
+
project_dir = pathlib.PurePath(node_dir).parent.parent.parent
|
|
241
249
|
best_results_df = list(
|
|
242
250
|
map(lambda filename: pd.read_parquet(os.path.join(node_dir, filename), engine='pyarrow'), filenames))
|
|
243
251
|
ids = tuple(map(lambda df: df['retrieved_ids'].apply(list).tolist(), best_results_df))
|
|
244
252
|
scores = tuple(map(lambda df: df['retrieve_scores'].apply(list).tolist(), best_results_df))
|
|
253
|
+
# search non-duplicate ids
|
|
254
|
+
semantic_ids = deepcopy(ids[0])
|
|
255
|
+
lexical_ids = deepcopy(ids[1])
|
|
256
|
+
|
|
257
|
+
def get_non_duplicate_ids(target_ids, compare_ids) -> List[List[str]]:
|
|
258
|
+
"""
|
|
259
|
+
Get non-duplicate ids from target_ids and compare_ids.
|
|
260
|
+
If you want to non-duplicate ids of semantic_ids, you have to put it at target_ids.
|
|
261
|
+
"""
|
|
262
|
+
result_ids = []
|
|
263
|
+
assert len(target_ids) == len(compare_ids)
|
|
264
|
+
for target_id_list, compare_id_list in zip(target_ids, compare_ids):
|
|
265
|
+
query_duplicated = list(set(compare_id_list) - set(target_id_list))
|
|
266
|
+
duplicate_list = query_duplicated if len(query_duplicated) != 0 else []
|
|
267
|
+
result_ids.append(duplicate_list)
|
|
268
|
+
return result_ids
|
|
269
|
+
|
|
270
|
+
lexical_target_ids = get_non_duplicate_ids(lexical_ids, semantic_ids)
|
|
271
|
+
semantic_target_ids = get_non_duplicate_ids(semantic_ids, lexical_ids)
|
|
272
|
+
|
|
273
|
+
new_id_tuple = ([a + b for a, b in zip(semantic_ids, semantic_target_ids)],
|
|
274
|
+
[a + b for a, b in zip(lexical_ids, lexical_target_ids)])
|
|
275
|
+
|
|
276
|
+
# search non-duplicate ids' scores
|
|
277
|
+
new_semantic_scores = get_scores_by_ids(semantic_target_ids, semantic_summary_df, project_dir, previous_result)
|
|
278
|
+
new_lexical_scores = get_scores_by_ids(lexical_target_ids, lexical_summary_df, project_dir, previous_result)
|
|
279
|
+
|
|
280
|
+
new_score_tuple = (
|
|
281
|
+
[a + b for a, b in zip(scores[0], new_semantic_scores)],
|
|
282
|
+
[a + b for a, b in zip(scores[1], new_lexical_scores)],
|
|
283
|
+
)
|
|
245
284
|
return {
|
|
246
|
-
'ids':
|
|
247
|
-
'scores':
|
|
285
|
+
'ids': new_id_tuple,
|
|
286
|
+
'scores': new_score_tuple,
|
|
248
287
|
}
|
|
249
288
|
|
|
250
289
|
|
|
290
|
+
def get_scores_by_ids(ids: List[List[str]],
|
|
291
|
+
module_summary_df: pd.DataFrame,
|
|
292
|
+
project_dir, previous_result) -> List[List[float]]:
|
|
293
|
+
module_name = get_best_row(module_summary_df)['module_name']
|
|
294
|
+
module_params = get_best_row(module_summary_df)['module_params']
|
|
295
|
+
module = get_support_modules(module_name)
|
|
296
|
+
result_df = module(project_dir=project_dir, previous_result=previous_result, ids=ids, **module_params)
|
|
297
|
+
return to_list(result_df['retrieve_scores'].tolist())
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
def find_unique_elems(list1: List[str], list2: List[str]) -> List[str]:
|
|
301
|
+
return list(set(list1).symmetric_difference(set(list2)))
|
|
302
|
+
|
|
303
|
+
|
|
251
304
|
def get_hybrid_execution_times(lexical_summary, semantic_summary) -> float:
|
|
252
305
|
lexical_execution_time = lexical_summary.loc[lexical_summary['is_best'] == True].iloc[0]['execution_time']
|
|
253
306
|
semantic_execution_time = semantic_summary.loc[semantic_summary['is_best'] == True].iloc[0]['execution_time']
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
from typing import List, Tuple
|
|
2
|
+
from typing import List, Tuple, Optional
|
|
3
3
|
|
|
4
4
|
import chromadb
|
|
5
5
|
import pandas as pd
|
|
6
|
+
from chromadb import GetResult, QueryResult
|
|
6
7
|
from chromadb.utils.batch_utils import create_batches
|
|
7
8
|
from llama_index.core.embeddings import BaseEmbedding
|
|
8
9
|
from llama_index.embeddings.openai import OpenAIEmbedding
|
|
9
10
|
|
|
10
11
|
from autorag.nodes.retrieval.base import retrieval_node, evenly_distribute_passages
|
|
11
12
|
from autorag.utils import validate_corpus_dataset
|
|
12
|
-
from autorag.utils.util import process_batch, openai_truncate_by_token
|
|
13
|
+
from autorag.utils.util import process_batch, openai_truncate_by_token, flatten_apply
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
@retrieval_node
|
|
16
17
|
def vectordb(queries: List[List[str]], top_k: int, collection: chromadb.Collection,
|
|
17
18
|
embedding_model: BaseEmbedding,
|
|
18
|
-
embedding_batch: int = 128
|
|
19
|
+
embedding_batch: int = 128,
|
|
20
|
+
ids: Optional[List[List[str]]] = None) -> Tuple[List[List[str]], List[List[float]]]:
|
|
19
21
|
"""
|
|
20
22
|
VectorDB retrieval function.
|
|
21
23
|
You have to get a chroma collection that is already ingested.
|
|
@@ -29,6 +31,9 @@ def vectordb(queries: List[List[str]], top_k: int, collection: chromadb.Collecti
|
|
|
29
31
|
:param embedding_batch: The number of queries to be processed in parallel.
|
|
30
32
|
This is used to prevent API error at the query embedding.
|
|
31
33
|
Default is 128.
|
|
34
|
+
:param ids: The optional list of ids that you want to retrieve.
|
|
35
|
+
You don't need to specify this in the general use cases.
|
|
36
|
+
Default is None.
|
|
32
37
|
|
|
33
38
|
:return: The 2-d list contains a list of passage ids that retrieved from vectordb and 2-d list of its scores.
|
|
34
39
|
It will be a length of queries. And each element has a length of top_k.
|
|
@@ -36,8 +41,25 @@ def vectordb(queries: List[List[str]], top_k: int, collection: chromadb.Collecti
|
|
|
36
41
|
# check if bm25_corpus is valid
|
|
37
42
|
assert (collection.count() > 0), \
|
|
38
43
|
"collection must contain at least one document. Please check you ingested collection correctly."
|
|
44
|
+
# truncate queries and embedding execution here.
|
|
45
|
+
openai_embedding_limit = 8191
|
|
46
|
+
if isinstance(embedding_model, OpenAIEmbedding):
|
|
47
|
+
queries = list(map(lambda query_list: openai_truncate_by_token(query_list, openai_embedding_limit,
|
|
48
|
+
embedding_model.model_name), queries))
|
|
49
|
+
|
|
50
|
+
query_embeddings = flatten_apply(run_query_embedding_batch, queries, embedding_model=embedding_model,
|
|
51
|
+
batch_size=embedding_batch)
|
|
52
|
+
|
|
53
|
+
# if ids are specified, fetch the ids score from Chroma
|
|
54
|
+
if ids is not None:
|
|
55
|
+
client = chromadb.Client()
|
|
56
|
+
score_result = list(map(
|
|
57
|
+
lambda query_embedding_list, id_list: get_id_scores(id_list, query_embedding_list, collection, client),
|
|
58
|
+
query_embeddings, ids))
|
|
59
|
+
return ids, score_result
|
|
60
|
+
|
|
39
61
|
# run async vector_db_pure function
|
|
40
|
-
tasks = [vectordb_pure(
|
|
62
|
+
tasks = [vectordb_pure(query_embedding, top_k, collection) for query_embedding in query_embeddings]
|
|
41
63
|
loop = asyncio.get_event_loop()
|
|
42
64
|
results = loop.run_until_complete(process_batch(tasks, batch_size=embedding_batch))
|
|
43
65
|
id_result = list(map(lambda x: x[0], results))
|
|
@@ -45,30 +67,20 @@ def vectordb(queries: List[List[str]], top_k: int, collection: chromadb.Collecti
|
|
|
45
67
|
return id_result, score_result
|
|
46
68
|
|
|
47
69
|
|
|
48
|
-
async def vectordb_pure(
|
|
49
|
-
|
|
70
|
+
async def vectordb_pure(query_embeddings: List[List[float]], top_k: int, collection: chromadb.Collection) -> Tuple[
|
|
71
|
+
List[str], List[float]]:
|
|
50
72
|
"""
|
|
51
73
|
Async VectorDB retrieval function.
|
|
52
74
|
Its usage is for async retrieval of vector_db row by row.
|
|
53
75
|
|
|
54
|
-
:param
|
|
76
|
+
:param query_embeddings: A list of query embeddings.
|
|
55
77
|
:param top_k: The number of passages to be retrieved.
|
|
56
78
|
:param collection: A chroma collection instance that will be used to retrieve passages.
|
|
57
|
-
:param embedding_model: An embedding model instance that will be used to embed queries.
|
|
58
79
|
|
|
59
80
|
:return: The tuple contains a list of passage ids that retrieved from vectordb and a list of its scores.
|
|
60
81
|
"""
|
|
61
|
-
# truncate queries if embedding is openai and the query exceeded token limit
|
|
62
|
-
openai_embedding_limit = 8191
|
|
63
|
-
if isinstance(embedding_model, OpenAIEmbedding):
|
|
64
|
-
queries = openai_truncate_by_token(queries, openai_embedding_limit,
|
|
65
|
-
embedding_model.model_name)
|
|
66
|
-
|
|
67
|
-
# embed query
|
|
68
|
-
embedded_queries = list(map(embedding_model.get_query_embedding, queries))
|
|
69
|
-
|
|
70
82
|
id_result, score_result = [], []
|
|
71
|
-
for embedded_query in
|
|
83
|
+
for embedded_query in query_embeddings:
|
|
72
84
|
result = collection.query(query_embeddings=embedded_query, n_results=top_k)
|
|
73
85
|
id_result.extend(result['ids'])
|
|
74
86
|
score_result.extend(result['distances'])
|
|
@@ -107,3 +119,34 @@ def vectordb_ingest(collection: chromadb.Collection, corpus_data: pd.DataFrame,
|
|
|
107
119
|
ids = batch[0]
|
|
108
120
|
embed_content = batch[1]
|
|
109
121
|
collection.add(ids=ids, embeddings=embed_content)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def run_query_embedding_batch(queries: List[str], embedding_model: BaseEmbedding,
|
|
125
|
+
batch_size: int) -> List[List[float]]:
|
|
126
|
+
result = []
|
|
127
|
+
for i in range(0, len(queries), batch_size):
|
|
128
|
+
batch = queries[i:i + batch_size]
|
|
129
|
+
embeddings = embedding_model.get_text_embedding_batch(batch)
|
|
130
|
+
result.extend(embeddings)
|
|
131
|
+
return result
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def get_id_scores(ids: List[str], query_embeddings: List[List[float]],
|
|
135
|
+
collection: chromadb.Collection, temp_client: chromadb.Client) -> List[float]:
|
|
136
|
+
if len(ids) == 0 or ids is None or not bool(ids):
|
|
137
|
+
return []
|
|
138
|
+
|
|
139
|
+
id_results: GetResult = collection.get(ids, include=['embeddings'])
|
|
140
|
+
temp_collection = temp_client.create_collection(name="temp", metadata={"hnsw:space": "cosine"})
|
|
141
|
+
temp_collection.add(ids=id_results['ids'], embeddings=id_results['embeddings'])
|
|
142
|
+
|
|
143
|
+
query_result: QueryResult = temp_collection.query(query_embeddings=query_embeddings, n_results=len(ids))
|
|
144
|
+
assert len(query_result['ids']) == len(query_result['distances'])
|
|
145
|
+
id_scores_dict = {id_: [] for id_ in ids}
|
|
146
|
+
for id_list, score_list in zip(query_result['ids'], query_result['distances']):
|
|
147
|
+
for id_ in list(id_scores_dict.keys()):
|
|
148
|
+
id_idx = id_list.index(id_)
|
|
149
|
+
id_scores_dict[id_].append(score_list[id_idx])
|
|
150
|
+
id_scores_pd = pd.DataFrame(id_scores_dict)
|
|
151
|
+
temp_client.delete_collection("temp")
|
|
152
|
+
return id_scores_pd.max(axis=0).tolist()
|
|
@@ -484,3 +484,19 @@ def convert_inputs_to_list(func):
|
|
|
484
484
|
return func(*new_args, **new_kwargs)
|
|
485
485
|
|
|
486
486
|
return wrapper
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
def get_best_row(summary_df: pd.DataFrame,
|
|
490
|
+
best_column_name: str = 'is_best') -> pd.Series:
|
|
491
|
+
"""
|
|
492
|
+
From summary dataframe, find the best result row by 'is_best' column and return it.
|
|
493
|
+
|
|
494
|
+
:param summary_df: Summary dataframe created by AutoRAG.
|
|
495
|
+
:param best_column_name: The column name that indicates the best result.
|
|
496
|
+
Default is 'is_best'.
|
|
497
|
+
You don't have to change this unless the column name is different.
|
|
498
|
+
:return: Best row pandas Series instance.
|
|
499
|
+
"""
|
|
500
|
+
bests = summary_df.loc[summary_df[best_column_name] == True]
|
|
501
|
+
assert len(bests) == 1, "There must be only one best result."
|
|
502
|
+
return bests.iloc[0]
|
|
@@ -20,7 +20,7 @@ uvicorn # for api server
|
|
|
20
20
|
torch # for monot5 reranker
|
|
21
21
|
sentencepiece # for monot5 reranker
|
|
22
22
|
guidance # for qa data creation
|
|
23
|
-
cohere
|
|
23
|
+
cohere<=5.6.2 # for cohere services
|
|
24
24
|
tokenlog>=0.0.2 # for token logging
|
|
25
25
|
aiohttp # for async http requests
|
|
26
26
|
bert_score # for bert score
|
|
@@ -39,7 +39,7 @@ llama-index-readers-file
|
|
|
39
39
|
llama-index-embeddings-openai
|
|
40
40
|
llama-index-embeddings-huggingface
|
|
41
41
|
# LLMs
|
|
42
|
-
llama-index-llms-openai
|
|
42
|
+
llama-index-llms-openai>=0.1.26
|
|
43
43
|
llama-index-llms-huggingface
|
|
44
44
|
llama-index-llms-openai-like
|
|
45
45
|
llama-index-llms-ollama
|
|
@@ -47,6 +47,7 @@ def ko_base_test_generation_metrics(func, solution, **kwargs):
|
|
|
47
47
|
assert all(list(map(lambda x: x[0] == pytest.approx(x[1], 0.001),
|
|
48
48
|
zip(scores, solution))))
|
|
49
49
|
|
|
50
|
+
|
|
50
51
|
def test_bleu():
|
|
51
52
|
base_test_generation_metrics(bleu, [51.1507, 23.5783, 100.0], lowercase=True)
|
|
52
53
|
|
|
@@ -12,7 +12,7 @@ from tests.mock import mock_openai_chat_create
|
|
|
12
12
|
@patch.object(openai.resources.chat.completions.AsyncCompletions, 'create', mock_openai_chat_create)
|
|
13
13
|
def test_openai_llm():
|
|
14
14
|
openai_original = openai_llm.__wrapped__
|
|
15
|
-
model = "gpt-
|
|
15
|
+
model = "gpt-4o-mini"
|
|
16
16
|
answers, tokens, log_probs = openai_original(prompts, model, batch=1, temperature=0.5, logprobs=False, n=3)
|
|
17
17
|
check_generated_texts(answers)
|
|
18
18
|
check_generated_tokens(tokens)
|
|
@@ -26,7 +26,7 @@ def test_openai_llm_node():
|
|
|
26
26
|
'prompts': prompts,
|
|
27
27
|
'qid': ['id-1', 'id-2', 'id-3']
|
|
28
28
|
})
|
|
29
|
-
result_df = openai_llm(project_dir='.', previous_result=previous_result, llm='gpt-4o')
|
|
29
|
+
result_df = openai_llm(project_dir='.', previous_result=previous_result, llm='gpt-4o-mini')
|
|
30
30
|
check_generated_texts(result_df['generated_texts'].tolist())
|
|
31
31
|
check_generated_tokens(result_df['generated_tokens'].tolist())
|
|
32
32
|
check_generated_log_probs(result_df['generated_log_probs'].tolist())
|
|
@@ -7,8 +7,10 @@ import pytest
|
|
|
7
7
|
|
|
8
8
|
from autorag.nodes.retrieval import bm25
|
|
9
9
|
from autorag.nodes.retrieval.bm25 import bm25_ingest, tokenize_ko_kiwi, tokenize_porter_stemmer, tokenize_space
|
|
10
|
+
from autorag.utils.util import to_list
|
|
10
11
|
from tests.autorag.nodes.retrieval.test_retrieval_base import (queries, project_dir, corpus_df, previous_result,
|
|
11
|
-
base_retrieval_test, base_retrieval_node_test
|
|
12
|
+
base_retrieval_test, base_retrieval_node_test,
|
|
13
|
+
searchable_input_ids)
|
|
12
14
|
|
|
13
15
|
|
|
14
16
|
@pytest.fixture
|
|
@@ -27,12 +29,53 @@ def test_bm25_retrieval(ingested_bm25_path):
|
|
|
27
29
|
base_retrieval_test(id_result, score_result, top_k)
|
|
28
30
|
|
|
29
31
|
|
|
32
|
+
def test_bm25_retrieval_ids(ingested_bm25_path):
|
|
33
|
+
with open(ingested_bm25_path, 'rb') as r:
|
|
34
|
+
bm25_corpus = pickle.load(r)
|
|
35
|
+
original_bm25 = bm25.__wrapped__
|
|
36
|
+
input_ids = [["doc2", "doc3"],
|
|
37
|
+
["doc1"],
|
|
38
|
+
["doc3", "doc4"]]
|
|
39
|
+
id_result, score_result = original_bm25(queries, top_k=3, bm25_corpus=bm25_corpus,
|
|
40
|
+
ids=input_ids)
|
|
41
|
+
assert id_result == input_ids
|
|
42
|
+
assert len(score_result) == 3
|
|
43
|
+
assert len(score_result[0]) == 2
|
|
44
|
+
assert len(score_result[1]) == 1
|
|
45
|
+
assert len(score_result[2]) == 2
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def test_bm25_retrieval_ids_empty(ingested_bm25_path):
|
|
49
|
+
with open(ingested_bm25_path, 'rb') as r:
|
|
50
|
+
bm25_corpus = pickle.load(r)
|
|
51
|
+
original_bm25 = bm25.__wrapped__
|
|
52
|
+
input_ids = [["doc2", "doc3"],
|
|
53
|
+
[],
|
|
54
|
+
["doc3"]]
|
|
55
|
+
id_result, score_result = original_bm25(queries, top_k=3, bm25_corpus=bm25_corpus,
|
|
56
|
+
ids=input_ids)
|
|
57
|
+
assert id_result == input_ids
|
|
58
|
+
assert len(score_result) == 3
|
|
59
|
+
assert len(score_result[0]) == 2
|
|
60
|
+
assert len(score_result[1]) == 0
|
|
61
|
+
assert len(score_result[2]) == 1
|
|
62
|
+
|
|
63
|
+
|
|
30
64
|
def test_bm25_node():
|
|
31
65
|
result_df = bm25(project_dir=project_dir, previous_result=previous_result, top_k=4,
|
|
32
66
|
bm25_tokenizer='gpt2')
|
|
33
67
|
base_retrieval_node_test(result_df)
|
|
34
68
|
|
|
35
69
|
|
|
70
|
+
def test_bm25_node_ids():
|
|
71
|
+
result_df = bm25(project_dir=project_dir, previous_result=previous_result, top_k=4,
|
|
72
|
+
bm25_tokenizer='gpt2', ids=searchable_input_ids)
|
|
73
|
+
assert to_list(result_df['retrieved_ids'].tolist()) == searchable_input_ids
|
|
74
|
+
score_result = to_list(result_df['retrieve_scores'].tolist())
|
|
75
|
+
assert len(score_result) == 5
|
|
76
|
+
assert len(score_result[0]) == 2
|
|
77
|
+
|
|
78
|
+
|
|
36
79
|
def test_bm25_ingest(ingested_bm25_path):
|
|
37
80
|
with open(ingested_bm25_path, 'rb') as r:
|
|
38
81
|
corpus = pickle.load(r)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import pathlib
|
|
3
|
-
|
|
4
3
|
from datetime import datetime
|
|
5
4
|
|
|
6
5
|
import pandas as pd
|
|
@@ -27,6 +26,13 @@ contents = ["This is a test document 1.", "This is a test document 2.", "This is
|
|
|
27
26
|
metadata = [{'datetime': datetime.now()} for _ in range(5)]
|
|
28
27
|
corpus_df = pd.DataFrame({"doc_id": doc_id, "contents": contents, "metadata": metadata})
|
|
29
28
|
|
|
29
|
+
searchable_input_ids = [["aba8293d-2eb9-4a35-8bda-e6c87794c28d", "6f20af70-48b7-4171-a8d7-967ea583a595"],
|
|
30
|
+
["5efb3ac8-04f6-4184-94b3-61cbce080e86", "191c54df-703a-477d-86b6-99183f254799"],
|
|
31
|
+
["99f0e6df-3f03-4bdb-ba24-8f387a783c55", "5b957791-3c7b-4f29-a410-8d005a538855"],
|
|
32
|
+
["fbb8e444-b487-4ba7-9d0b-75b243fd666b", "5efb3ac8-04f6-4184-94b3-61cbce080e86"],
|
|
33
|
+
["1950c5e6-ee53-4b0f-9b32-e01d91d6ce9c", "32207872-dee5-4613-887e-b74fb5c36457"],
|
|
34
|
+
]
|
|
35
|
+
|
|
30
36
|
|
|
31
37
|
def base_retrieval_test(id_result, score_result, top_k):
|
|
32
38
|
assert len(id_result) == len(score_result) == 3
|