File size: 1,763 Bytes
4739096
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import os
from RAG_pipeline_v1.rag_config import RAGConfig
from RAG_pipeline_v1.rag_data_processing import RAGVectorDBPipeline
from RAG_pipeline_v1.rag_pipeline import RAGPipeline
from RAG_pipeline_v1.rag_evaluator import RAGEvaluator


def main():
    """메인 μ‹€ν–‰ ν•¨μˆ˜"""
    
    # ===== ν™˜κ²½ μ„€μ • =====
    print("="*60)
    print("RAG μ‹œμŠ€ν…œ μ΄ˆκΈ°ν™”")
    print("="*60)
    
    os.environ["OPENAI_API_KEY"] = RAGConfig.OPENAI_API_KEY
    
    config = RAGConfig()
    config.validate()
    print(config)
    
    # ===== 1. Vector DB ꡬ좕 (졜초 1회만) =====
    # 주석 ν•΄μ œν•˜μ—¬ μ‹€ν–‰
    # print("\n" + "="*60)
    # print("Vector DB ꡬ좕")
    # print("="*60)
    # db_pipeline = RAGVectorDBPipeline(config)
    # vectorstore = db_pipeline.build()
    # db_pipeline.test_search()
    
    # ===== 2. RAG νŒŒμ΄ν”„λΌμΈ μ΄ˆκΈ°ν™” =====
    print("\n" + "="*60)
    print("RAG νŒŒμ΄ν”„λΌμΈ μ΄ˆκΈ°ν™”")
    print("="*60)
    
    rag = RAGPipeline(config=config)
    
    # ===== 3. ν…ŒμŠ€νŠΈ 쿼리 =====
    print("\n" + "="*60)
    print("ν…ŒμŠ€νŠΈ 쿼리")
    print("="*60)
    
    test_queries = [
        "ν•œμ˜λŒ€ν•™κ΅μ˜ νŠΉμ„±ν™” κ΅μœ‘ν™˜κ²½ ꡬ좕 사업은 λ¬΄μ—‡μΈκ°€μš”?",
        "μž¬λ‚œ μ•ˆμ „ 관리 μ‹œμŠ€ν…œ ꡬ좕 사업은 μ–΄λ–€ 것이 μžˆλ‚˜μš”?",
    ]
    
    for query in test_queries:
        result = rag.generate_answer(query)
        rag.print_result(result)
        print("\n")
    
    # ===== 4. 평가 =====
    print("\n" + "="*60)
    print("μ‹œμŠ€ν…œ 평가")
    print("="*60)
    
    evaluator = RAGEvaluator(rag)
    eval_results = evaluator.evaluate()
    
    print("\n" + "="*60)
    print("βœ… λͺ¨λ“  μž‘μ—… μ™„λ£Œ")
    print("="*60)


if __name__ == "__main__":
    main()