νν 리μΌ
μ΄ νν 리μΌμ μμνκΈ° μ μ AutoRAGλ₯Ό μ€μΉνλμ§ νμΈνμΈμ.
μ€μΉνλ €λ©΄ μ€μΉλ₯Ό νμΈνμΈμ.
Colabμ μ¬μ©νμλμ? Colab νν 리μΌμ μ¬κΈ°μμ νμΈν μ μμ΅λλ€.
νκ° λ°μ΄ν°μ μ€λΉ
λ¨Όμ , RAG νμ΄νλΌμΈμ μν νκ° λ°μ΄ν°μ
λ₯Ό μ€λΉν΄μΌ ν©λλ€.
μ’μ νκ° λ°μ΄ν°μ
λ₯Ό λ§λλ κ²μ΄ μ’μ RAG νμ΄νλΌμΈμ μ»κΈ° μν ν΅μ¬μ
λλ€.
λ°λΌμ νκ° λ°μ΄ν°μ
μ νμ§μ μ§μ€ν΄μΌ ν©λλ€.
μΌλ¨ λ°μ΄ν°μ
κ° ν보λλ©΄ AutoRAGλ₯Ό μ¬μ©ν΄ μ΅μ μ RAG νμ΄νλΌμΈμ μ½κ² μ°Ύμ μ μμ΅λλ€.
λ°λΌμ μ’μ νκ° λ°μ΄ν°μ λ₯Ό λ§λ€κ³ μ νλ μ¬μ©μλ₯Ό μν΄ μ¬κΈ°μμ μμΈν κ°μ΄λλ₯Ό μ 곡νκ³ μμ΅λλ€.
μ΄λ―Έ λ§λ€μ΄μ§ νκ° λ°μ΄ν°μ μ μ¬μ©νκ³ μ νλ μ¬μ©μλ₯Ό μν΄, μ¬κΈ°μμ μμ λ°μ΄ν°μ μ μ 곡νκ³ μμ΅λλ€.
λν, μν λ°μ΄ν°μ
μ νμΈν μ μμ΅λλ€. νκΉ
νμ΄μ€μμ μν λ°μ΄ν°μ
λ₯Ό νμΈν μλ μμ΅λλ€.
νκΉ
νμ΄μ€ λ°μ΄ν°μ
λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ μλμΌλ‘ λ€μ΄λ‘λν μλ μμ΅λλ€.
νλ ¨ λ°μ΄ν°μ
μ ν
μ€νΈ λ°μ΄ν°μ
λ₯Ό λΆν νλ κ²μ μμ§ λ§μΈμ.
λ°μ΄ν°μ
λ₯Ό λΆν νμ§ μλ κ²μ μΌλ°μ μΈ μ€μμ΄μ§λ§, κ³Όμ ν© λ¬Έμ κ° λ°μν μ μμ΅λλ€.
νλ ¨ λ°μ΄ν°μ
μΌλ‘ RAG νμ΄νλΌμΈμ μ΅μ ννκ³ λμ€μ ν
μ€νΈ λ°μ΄ν°μ
μΌλ‘ μ 체 νμ΄νλΌμΈμ νκ°ν κ²μ μ κ·Ή κΆμ₯ν©λλ€.
νκ° λ°μ΄ν°μ λ₯Ό μ€λΉν νμλ λ°μ΄ν°μ μ κ²½λ‘λ₯Ό μΌλμ λμκΈ° λ°λλλ€.
νκ° λ°μ΄ν°μ
κ° λ κ°, μ¦ qa λ°μ΄ν°μ
μ λ§λμΉ λ°μ΄ν°μ
κ° μλμ§ νμΈνμΈμ.
κ·Έλ¦¬κ³ λ°λμ parquet νμμΌλ‘ μ μ₯ν΄μΌ ν©λλ€.
νΉμ μ΄κ³Ό λ°μ΄ν° μ νμ λν΄ μ λͺ¨λ₯΄λ κ²½μ° λ°μ΄ν° ν¬λ§· μΉμ
μ νμΈνμΈμ.
μ΅μ μ RAG νμ΄νλΌμΈ μ°ΎκΈ°
AutoRAGλ‘ μ΅μ μ RAG νμ΄νλΌμΈμ μ°Ύμλ΄
μλ€!
νκ° λ°μ΄ν°μ
μ μ€λΉν νμλ κ΅¬μ± YAML νμΌμ΄ νμν©λλ€.
GitHub 리ν¬μ§ν 리 sample_config
ν΄λμλ 미리 λ§λ€μ΄μ§ κ΅¬μ± YAML νμΌμ΄ λͺ κ° μμ΅λλ€.
μμμ©μΌλ‘ 미리 λ§λ€μ΄μ§ κ΅¬μ± YAML νμΌμ μ¬μ©νλ κ²μ μ κ·Ή κΆμ₯ν©λλ€.
starter.yaml
νμΌμ λ‘컬 νκ²½μ λ€μ΄λ‘λνλ©΄ λͺ¨λ μ€λΉκ° μλ£λ©λλ€.
μμΈν μ€μ κ³Ό μ€νμ μν΄ μ¬μ©μ μ μ κ΅¬μ± yaml νμΌμ μ§μ μμ±νκ³ μΆλ€λ©΄, μ΅μ ν μΉμ μ νμΈνμΈμ.
μμ€ν κ²μ¦
μ΅μ νλ₯Ό μμνκΈ° μ μ μμ€ν
μ μ ν¨μ±μ κ²μ¬ν΄μΌ ν μ μμ΅λλ€.
AutoRAGλ₯Ό μ€νν λ YAML νμΌμ μ€λ₯, νμ΄μ¬ μ’
μμ±, GPU μ€λ₯ λλ μκΈ°μΉ μμ μ€λ₯κ° μμ μ μμ΅λλ€.
λ°λΌμ μ ν¨μ± κ²μ¬λ₯Ό μ€ννλ κ²μ΄ μ’μ΅λλ€.
μ 체 μ΅μ νλ₯Ό μ€ννμ§λ§ μ΅μνμ λΉμ©μΌλ‘ μμ€ν
μ€λ₯λ₯Ό μ°ΎκΈ° μν΄μλ§ μ€νν©λλ€.
cli λͺ λ ΉμΌλ‘ μ ν¨μ± κ²μ¬λ₯Ό μ€νν μ μμ΅λλ€.
autorag validate \
--config your/path/to/default_config.yaml \
--qa_data_path your/path/to/qa.parquet \
--corpus_data_path your/path/to/corpus.parquet
λλ μλμ κ°μ΄ νμ΄μ¬ μ½λλ₯Ό μ¬μ©ν μλ μμ΅λλ€.
from autorag.validator import Validator
validator = Validator(
qa_data_path='your/path/to/qa.parquet',
corpus_data_path='your/path/to/corpus.parquet',
)
validator.validate('your/path/to/default_config.yaml')
AutoRAG μ΅μ ν μ€ν
CLIμμ μλ μ½λλ₯Ό μ€ννλ©΄ AutoRAGκ° μλμΌλ‘ λ°μ΄ν°μ μ νκ°νκ³ λ°μ΄ν°μ μ κ°μ₯ μ ν©ν RAG νμ΄νλΌμΈμ μ°Ύμ΅λλ€.
autorag evaluate \
--config your/path/to/default_config.yaml \
--qa_data_path your/path/to/qa.parquet \
--corpus_data_path your/path/to/corpus.parquet \
--project_dir ./your/project/directory
λλ μλμ κ°μ΄ νμ΄μ¬ μ½λλ₯Ό μ¬μ©ν μλ μμ΅λλ€.
from autorag.evaluator import Evaluator
evaluator = Evaluator(
qa_data_path='your/path/to/qa.parquet',
corpus_data_path='your/path/to/corpus.parquet',
project_dir='your/path/to/project_directory'
)
evaluator.start_trial('your/path/to/config.yaml')
μλ£λλ©΄ νμ¬ λλ ν°λ¦¬μ μμ±λ μ¬λ¬ νμΌκ³Ό ν΄λλ₯Ό λ³Ό μ μμ΅λλ€.
μ΄λ¬ν νμΌκ³Ό ν΄λμλ νκ° κ²°κ³Όμ λ°μ΄ν°μ κ°μ₯ μ ν©ν RAG νμ΄νλΌμΈμ λν λͺ¨λ μ λ³΄κ° ν¬ν¨λμ΄ μμ΅λλ€.
κ°μ₯ λ¨Όμ 보μ΄λ κ²μ μ μ΄λ―Έμ§μμ 3κ³Ό κ°μ΄ μ«μμ μ΄λ¦μ λ΄ ν΄λμΌ μ μμ΅λλ€.
μ΄ ν΄λλ μμμ μ€νν λͺ¨λ κ²°κ³Όκ° λ€μ΄ μλ νκ°ν ν΄λμ
λλ€.
μ΄ μ«μλ νκ°ν λ²νΈμ΄λ©°, νκ°νμ μ€ννλ©΄ trial.json
νμΌμμ νμΈν μ μμ΅λλ€.
κ·Έλ¦¬κ³ κ°μ₯ μ€μν νμΌμ summary.csv
νμΌμ
λλ€.
μ΄λ€ λͺ¨λκ³Ό νλΌλ―Έν°κ° λ°μ΄ν°μ
μ κ°μ₯ μ ν©νμ§ νμΈν μ μμ΅λλ€.
κ·Έλ¦¬κ³ λ
Έλ λΌμΈκ³Ό λ
Έλ ν΄λ μμλ λ§μ μΈλΆ μ λ³΄κ° μμ΅λλ€.
ν΄λ ꡬ쑰μ κ²°κ³Ό νμΌμ λν μμΈν λ΄μ©μ μ¬κΈ°μμ νμΈν μ μμ΅λλ€.
νλ‘μ νΈ λλ ν°λ¦¬λ --project_dir
μ΅μ
λλ project_dir
νλΌλ―Έν°λ‘ μ§μ ν μ μμ΅λλ€.
컀μ€ν
LLM λͺ¨λΈ λλ 컀μ€ν
μλ² λ© λͺ¨λΈμ μΆκ°νλ €λ©΄ νμ΄μ¬ λͺ
λ Ήμ μ¬μ©ν΄μΌ ν©λλ€.
μΆκ° νλ‘μΈμ€κ° νμ΄μ¬ μ½λλ‘ μ€νλμ΄μΌ νκΈ° λλ¬Έμ
λλ€.
컀μ€ν
LLM λλ μλ² λ© λͺ¨λΈμ μΆκ°νλ λ°©λ²μ μ΄ λ¬Έμλ₯Ό μ°Έκ³ νμΈμ.
βtrial μ¬μ© μ€ μ€λ₯κ° λ°μνλ©΄ trialμ λ€μ μμνμΈμ
trial μ¬μ© μ€ μ€λ₯κ° λ°μνλ©΄ trialμ λ€μ μμν μ μμ΅λλ€.
config.yaml
νμΌμ λ¬Έμ κ° μλ κ²½μ°, trail ν΄λμμ config.yaml
νμΌμ μμ ν ν μλ μ½λλ₯Ό μ€ννλ©΄ λ©λλ€.
CLIμμ μλ μ½λλ₯Ό μ€ννλ©΄ AutoRAGκ° μλμΌλ‘ νκ°λ₯Ό λ€μ μμν©λλ€.
autorag restart_evaluate --trial_path your/path/to/trial_folder
λλ μλμ κ°μ΄ νμ΄μ¬ μ½λλ₯Ό μ¬μ©ν μλ μμ΅λλ€.
from autorag.evaluator import Evaluator
evaluator = Evaluator(
qa_data_path='your/path/to/qa.parquet',
corpus_data_path='your/path/to/corpus.parquet'
)
evaluator.restart_trial(trial_path='your/path/to/trial_path')
λ€μ μμνλ €λ trial pathμ First Node Line ν΄λκ° μμ±λμ§ μμ κ²½μ°,
restart_trial λμ start_trial ν¨μκ° μ€νλ©λλ€.
ν΄λΉ trial pathμ μλ‘μ΄ trial ν΄λκ° μμ±λλ κ²μ΄ μλλΌ μλ‘κ² μ¬μμ κ²°κ³Όκ° μμ±λ©λλ€.
λμ보λλ₯Ό μ€ννμ¬ νκ°ν κ²°κ³Ό νμΈνκΈ°
AutoRAG λ²μ 0.2.0κΉμ§λ λμ보λ κΈ°λ₯μ μ¬μ©νμ¬ AutoRAGμ κ²°κ³Όλ₯Ό μ½κ² νμΈν μ μμ΅λλ€.
μλ λͺ
λ Ήμ΄λ‘ λμ보λλ₯Ό μ€νν μ μμ΅λλ€.
autorag dashboard --trial_dir /your/path/to/trial_dir
νμ΄νλΌμΈ μΆμΆ λ° ν μ€νΈ λ°μ΄ν°μ νκ°νκΈ°
μ΄μ μ°Ύμ RAG νμ΄νλΌμΈμΌλ‘ ν
μ€νΈ λ°μ΄ν°μ
μ νκ°ν μ°¨λ‘μ
λλ€. μ΄λ₯Ό μν΄ μ΅μ μ νμ΄νλΌμΈμ μΆμΆνμ¬
μ κ΅¬μ± YAML νμΌμ μ μ₯ν©λλ€.
μλ μ½λλ₯Ό μ¬μ©ν μ μμ΅λλ€.
trial ν΄λλ Evaluator
λ₯Ό μ€ννλ λλ ν°λ¦¬μ μλ€λ κ²μ κΈ°μ΅νμΈμ.
κ·Έλ¦¬κ³ trial ν΄λ μ΄λ¦μ 0, 1, 2, 3 λ±κ³Ό κ°μ μ«μμ
λλ€.
CLIμμ μλ μ½λλ₯Ό μ€ννλ©΄ AutoRAGκ° μλμΌλ‘ μ΅μ μ νμ΄νλΌμΈμ μΆμΆνμ¬ μ YAML νμΌμ μ μ₯ν©λλ€.
autorag extract_best_config \
--trial_path your/path/to/trial_folder \
--output_path your/path/to/pipeline.yaml
λλ μλμ κ°μ΄ νμ΄μ¬ μ½λλ₯Ό μ¬μ©ν μλ μμ΅λλ€.
from autorag.deploy import extract_best_config
pipeline_dict = extract_best_config(trial_path='your/path/to/trial_folder', output_path='your/path/to/pipeline.yaml')
νμ΄νλΌμΈ YAML νμΌμ your/path/to/pipeline.yaml
μμ νμΈν μ μμ΅λλ€.
κ·Έλ° λ€μ ν
μ€νΈ λ°μ΄ν°μ
μΌλ‘ νκ°λ₯Ό λ€μ μ€νν©λλ€.
νκ°λ₯Ό λ€λ₯Έ ν΄λλ‘ μ€νν©λλ€.
λμΌν ν΄λμ μλ λ€λ₯Έ λ°μ΄ν°μ
μΌλ‘ νκ°λ₯Ό μ€ννλ©΄ μ¬κ°ν μ€μλμ΄ λ°μν μ μμ΅λλ€.
autorag evaluate \
--config your/path/to/pipeline.yaml \
--qa_data_path your/path/to/qa_test.parquet \
--corpus_data_path your/path/to/corpus_test.parquet
λ°κ²¬λ RAG νμ΄νλΌμΈμΌλ‘ ν μ€νΈ λ°μ΄ν°μ μ νκ°ν©λλ€.
μ΅μ μ RAG νμ΄νλΌμΈ λ°°ν¬
1. μ½λλ‘ μ€ν
μ°Ύμ μ΅μ μ RAG νμ΄νλΌμΈμ μΆμΆν YAML νμΌλ‘ λ°λ‘ μ¬μ©ν μ μμ΅λλ€.
from autorag.deploy import Runner
runner = Runner.from_yaml('your/path/to/pipeline.yaml')
runner.run('your question')
λλ trial ν΄λλ₯Ό μ¬μ©νμ¬ YAML νμΌμ μΆμΆνμ§ μκ³ νμ΄νλΌμΈμ μ€νν μ μμ΅λλ€.
from autorag.deploy import Runner
runner = Runner.from_trial_folder('/your/path/to/trial_dir')
runner.run('your question')
2. API μλ²λ‘ μ€ν
μ΄ νμ΄νλΌμΈμ API μλ²λ‘ μ€νν μ μμ΅λλ€.
API μλν¬μΈνΈλ μ¬κΈ°μμ νμΈνμΈμ.
from autorag.deploy import Runner
runner = Runner.from_yaml('your/path/to/pipeline.yaml')
runner.run_api_server()
λλ
from autorag.deploy import Runner
runner = Runner.from_trial_folder('/your/path/to/trial_dir')
runner.run_api_server()
autorag run_api \
--config_path your/path/to/pipeline.yaml \
--host 0.0.0.0 --port 8000
νλ‘μ νΈ λλ ν°λ¦¬λ --project_dir
μ΅μ
λλ project_dir νλΌλ―Έν°λ‘ μ§μ ν μ μμ΅λλ€.
3. μΉ μΈν°νμ΄μ€λ‘ μ€ν
λ₯Ό μ ννλ©΄ μ΄ νμ΄νλΌμΈμ μΉ μΈν°νμ΄μ€λ‘ μ€νν μ μμ΅λλ€.
μΉ μΈν°νμ΄μ€λ μ¬κΈ°μμ νμΈνμΈμ.
from autorag.deploy import Runner
runner = Runner.from_yaml('your/path/to/pipeline.yaml')
runner.run_web()
from autorag.deploy import Runner
runner = Runner.from_trial_folder('/your/path/to/trial_dir')
runner.run_web()
CLIλ κ°μνλ μΉ μΈν°νμ΄μ€λ₯Ό μ€ννμ§λ§ μ½λλ κ·ΈλΌλμ€ λ²μ μ λλ€.
autorag run_web --yaml_path your/path/to/pipeline.yaml
autorag run_web --trial_path your/path/to/trial_dir
νλ‘μ νΈ λλ ν°λ¦¬λ --project_dir
μ΅μ
λλ project_dir νλΌλ―Έν°λ‘ μ§μ ν μ μμ΅λλ€.
μμ
λ° νκ° κ²°κ³Όλ₯Ό λ€λ₯Έ μ¬λλ€κ³Ό 곡μ ν΄ λ³΄μμ§ μμΌμκ² μ΄μ?
yaml νμΌ λλ summary.csv
νμΌμ κ°λ¨ν 곡μ ν μ μμ΅λλ€.
μ΄λ₯Ό ν΅ν΄ μ 체 RAG νμ΄νλΌμΈκ³Ό νκ° κ²°κ³Όλ₯Ό λ€λ₯Έ μ¬λλ€κ³Ό 곡μ ν μ μμ΅λλ€.
Discord μ±λμμ μ¬λ¬λΆμ μμ μ μμ λ‘κ² κ³΅μ νμΈμ!
μ¬κΈ°κΉμ§μ
λλ€!
λ°μ΄ν°μ
μ λν μ΅μ μ RAG νμ΄νλΌμΈμ μ±κ³΅μ μΌλ‘ μ°Ύμμ λ°°ν¬νμ΅λλ€.
μ΄μ μ¬μ©μ μ μ κ΅¬μ± νμΌμ λ§λ€κ³ , λ λμ κ΅¬μ± YAML νμΌμ μμ±νκ³ ,
κ·Έλ¦¬κ³ λ λμ κ²°κ³Όλ₯Ό μν΄ λ°λ³΅ν΄μ νκ°ν μ μμ΅λλ€.
λλ AutoRAGλ‘ μ μ½ν μκ°μΌλ‘ μλ‘μ΄ RAG μ νμ μΆμνμΈμ!