FinGraph / src /utils /analysis_results.md
dev-yuje's picture
feat: ν™”λ©΄ λ ˆμ΄μ•„μ›ƒ ꡬ성 개편 (GNB, μ‚¬μ΄λ“œλ°”, 메인 챗봇 뢄리) 및 뢄석 리포트 μΆ”κ°€
6c92d06

A newer version of the Gradio SDK is available: 6.16.0

Upgrade

λŒ€μš©λŸ‰ RAG μžλ™ 평가 및 ν’ˆμ§ˆ 검증 λ³΄κ³ μ„œ

μˆ˜ν–‰ μΌμ‹œ: 2026λ…„ 5μ›” 19일
검증 λŒ€μƒ: 22개 μ‹œλ‚˜λ¦¬μ˜€ RAG 질의 μ„ΈνŠΈ (4λŒ€ 핡심 κ³¨λ“œ μ‹œλ‚˜λ¦¬μ˜€ + 18개 도메인/심화 질의)
검증 κ²°κ³Ό: 총 22개 ν…ŒμŠ€νŠΈ 쀑 22개 μ™„μ „ 톡과 (ν†΅κ³Όμœ¨ 100.0%, 평균 μ§€μ—° μ‹œκ°„ 3.96초)


🚨 1. 문제 (Problem)

둜컬 및 μžλ™ν™” ν…ŒμŠ€νŠΈ νŒŒμ΄ν”„λΌμΈ ꡬ동 μ‹œ, Windows PowerShell/CMD ν™˜κ²½μ˜ νŠΉμ • ν•œκΈ€ 인코딩 규격(CP949)으둜 인해 λ‹€μŒκ³Ό 같은 치λͺ…적인 λŸ°νƒ€μž„ ν¬λž˜μ‹œκ°€ λ°œμƒν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ“Š [사전 점검] Neo4j κ·Έλž˜ν”„ ꡬ성 ν˜„ν™©
============================================================
  βœ…  Article (기사): 46개
  ...
UnicodeEncodeError: 'cp949' codec can't encode character '\U0001f4ca' in position 0: illegal multibyte sequence
  • ν˜„μƒ: 이λͺ¨μ§€(πŸ“Š, βœ…, ❌)와 지식 κ·Έλž˜ν”„ 메타데이터가 CLI에 좜λ ₯되던 쀑, 인코딩 뢈일치 였λ₯˜λ‘œ ν…ŒμŠ€νŠΈ μŠ€ν¬λ¦½νŠΈκ°€ 100% κ°•μ œ μ’…λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • 리슀크: CI/CD νŒŒμ΄ν”„λΌμΈμ΄λ‚˜ 둜컬 μœˆλ„μš° ν™˜κ²½ 개발 μ‹œ ν…ŒμŠ€νŠΈ λͺ¨λ“ˆ μžμ²΄κ°€ ν¬λž˜μ‹œλ₯Ό λ‚΄μ–΄ 무쀑단 검증이 μ™„μ „νžˆ μ°¨λ‹¨λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ” 2. 원인 (Cause)

  • Windows 인코딩 바인딩 뢈일치: Windows 운영체제 μ½˜μ†” 및 PowerShell ν™˜κ²½μ€ κΈ°λ³Έ μΈμ½”λ”©μœΌλ‘œ CP949λ₯Ό μ±„νƒν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • μœ λ‹ˆμ½”λ“œ 이λͺ¨μ§€ 직렬화 μ‹€νŒ¨: Python의 κΈ°λ³Έ print() ν•¨μˆ˜λŠ” ν‘œμ€€ 좜λ ₯ 슀트림(sys.stdout)의 인코딩을 따라가기 λ•Œλ¬Έμ—, 4λ°”μ΄νŠΈ μ΄μƒμ˜ UTF-8 μœ λ‹ˆμ½”λ“œ 특수문자(이λͺ¨μ§€ λ“±)λ₯Ό CP949 λ²„νΌλ‘œ κ°•μ œ μΈμ½”λ”©ν•˜λ € μ‹œλ„ν•˜λ©΄μ„œ UnicodeEncodeErrorλ₯Ό μœ λ°œν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ’‘ 3. 해결방법 (Solution)

β‘  ν‘œμ€€ 좜λ ₯ 슀트림 κ°•μ œ UTF-8 λž˜ν•‘ 적용

ν…ŒμŠ€νŠΈ ꡬ동 μ§„μž…λΆ€ 및 Smoke Test 슀크립트의 상단에 λ‹€μŒκ³Ό 같은 ν‘œμ€€ 좜λ ₯ 버퍼 λž˜ν•‘ μ½”λ“œλ₯Ό μ‚½μž…ν•˜μ—¬, μ‹œμŠ€ν…œμ˜ μ½˜μ†” 코덱과 λ¬΄κ΄€ν•˜κ²Œ 좜λ ₯ 버퍼λ₯Ό UTF-8둜 μ•ˆμ „ν•˜κ²Œ κ°•μ œ κ΅¬μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

import sys
import io

# Windows ν™˜κ²½μ—μ„œ μœ λ‹ˆμ½”λ“œ 이λͺ¨μ§€ 좜λ ₯ μ‹œ UnicodeEncodeError(cp949) λ°©μ§€λ₯Ό μœ„ν•œ stdout 인코딩 μž¬μ„€μ •
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

β‘‘ Gradio 6.x & 4.x ν•˜μ΄λΈŒλ¦¬λ“œ νŒŒλΌλ―Έν„° λ§€ν•‘

둜컬의 Gradio 6.x λ²„μ „μ—μ„œ theme 및 css 인자λ₯Ό gr.Blocks() μƒμ„±μžμ— 전달할 λ•Œ λ°œμƒν•˜λ˜ Deprecation Warning을 λ°©μ§€ν•˜κΈ° μœ„ν•΄, Gradio 메이저 버전을 λ™μ μœΌλ‘œ κ°μ§€ν•˜μ—¬ 인자λ₯Ό μ „λ‹¬ν•˜λŠ” ꡬ쑰둜 μ •λ°€ λ¦¬νŒ©ν† λ§ν–ˆμŠ΅λ‹ˆλ‹€.

blocks_kwargs = {}
if gradio_major < 5:
    interface_kwargs["theme"] = theme_obj
    blocks_kwargs["theme"] = theme_obj
    blocks_kwargs["css"] = custom_css
elif gradio_major < 6:
    launch_kwargs["theme"] = theme_obj
    blocks_kwargs["theme"] = theme_obj
    blocks_kwargs["css"] = custom_css
else:
    launch_kwargs["theme"] = theme_obj
    launch_kwargs["css"] = custom_css  # 6.x 규격

πŸ“Š 4. μ„±κ³Ό 및 ν’ˆμ§ˆ 뢄석 (Visualization)

λŒ€μš©λŸ‰ 22개 μ‹œλ‚˜λ¦¬μ˜€ ν…μŠ€νŠΈ ν…ŒμŠ€νŠΈ λŸ¬λ„ˆ(extensive_test.py)λ₯Ό 톡해 μˆ˜μ§‘λœ ν’ˆμ§ˆ 데이터 μ‹œκ°ν™” λ¦¬ν¬νŠΈμž…λ‹ˆλ‹€.

πŸ“ˆ RAG ν’ˆμ§ˆ 톡합 μŠ€νƒœμΈ 

  • 총 ν…ŒμŠ€νŠΈ 개수: 22개 질의
  • 평균 응닡 속도 (Latency): 3.96초 (μ΅œμ†Œ 1.79초 ~ μ΅œλŒ€ 9.22초)
  • ν™˜κ° μ œμ–΄ μ„±κ³΅μœ¨ (Hallucination Defense): 100%
  • μ΅œμ’… νŒμ •: 22개 PASS / 0개 PARTIAL / 0개 FAIL
gantt
    title RAG μ‹œλ‚˜λ¦¬μ˜€ μΉ΄ν…Œκ³ λ¦¬λ³„ 평균 μ§€μ—° μ‹œκ°„ (초)
    dateFormat  X
    axisFormat %s초
    
    section Core (핡심 4λŒ€)
    μ‚Όμ„±μ „μž νŠΈλ Œλ“œ      :active, 0, 9.2
    카카였 AI μ„œλΉ„μŠ€    :active, 0, 2.8
    LLM 개발 κΈ°μ—…      :active, 0, 4.4
    졜근 AI λ‰΄μŠ€ μš”μ•½   :active, 0, 2.8
    
    section Company (κΈ°μ—… νŠΉν™”)
    넀이버 νŠΈλ Œλ“œ        : 0, 2.8
    μ—…μŠ€ν…Œμ΄μ§€ Solar    : 0, 1.8
    κΈ€λ‘œλ²Œ κΈ°μ—… 행보     : 0, 4.0
    ν•˜μ΄νΌν΄λ‘œλ°”X        : 0, 2.2
    
    section Tech (기술 νŠΉν™”)
    AI λ°˜λ„μ²΄          : 0, 2.6
    μƒμ„±ν˜• 이미지/λΉ„λ””μ˜€ : 0, 2.2
    AI μ—μ΄μ „νŠΈ        : 0, 4.0
    μžμœ¨μ£Όν–‰/λ‘œλ΄‡      : 0, 2.0
    
    section Finance (금육 도메인)
    금육AI κΈ°μ—…        : 0, 4.7
    λ³΄ν—˜/μžμ‚° AI μ„œλΉ„μŠ€ : 0, 3.8
    ν•€ν…Œν¬ μŠ€νƒ€νŠΈμ—…     : 0, 4.0
    전톡 금육 λ³€ν™”      : 0, 2.1

πŸ“‹ 22개 쿼리 검증 데이터 ν…Œμ΄λΈ”

ID μΉ΄ν…Œκ³ λ¦¬ RAG 검증 질문 λ‹΅λ³€ 길이 μ§€μ—° μ‹œκ°„ ν™˜κ° λ°©μ–΄ μ—¬λΆ€ νŒμ •
1 Core μ‚Όμ„±μ „μžμ˜ 졜근 AI 기술 νŠΈλ Œλ“œλŠ”? 51자 9.22초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
2 Core μΉ΄μΉ΄μ˜€κ°€ 개발 쀑인 AI μ„œλΉ„μŠ€ λͺ©λ‘μ„ μ•Œλ €μ€˜ 58자 2.75초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
3 Core μ–΄λ–€ 기업이 LLM κΈ°μˆ μ„ κ°œλ°œν•˜λ‚˜μš”? 204자 4.42초 ℹ️ 좜처 인용 PASS
4 Core 졜근 AI κ΄€λ ¨ λ‰΄μŠ€ 기사λ₯Ό μš”μ•½ν•΄μ€˜ 31자 2.84초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
5 Company λ„€μ΄λ²„μ˜ μ΅œμ‹  AI μ„œλΉ„μŠ€ νŠΈλ Œλ“œλŠ”? 51자 2.81초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
6 Company μ—…μŠ€ν…Œμ΄μ§€μ˜ LLM λͺ¨λΈ 솔라(Solar)에 λŒ€ν•œ 졜근 동ν–₯ 59자 1.79초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
7 Company κ΅¬κΈ€μ΄λ‚˜ λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈ λ“± κΈ€λ‘œλ²Œ κΈ°μ—…μ˜ 졜근 AI ν–‰λ³΄λŠ”? 60자 4.00초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
8 Company 넀이버가 κ°œλ°œν•˜κ³  μžˆλŠ” μ΄ˆκ±°λŒ€ AI ν•˜μ΄νΌν΄λ‘œλ°”X에 λŒ€ν•œ κΈ°μ‚¬λŠ”? 63자 2.23초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
9 Tech AI λ°˜λ„μ²΄ 뢄야와 κ΄€λ ¨λœ 기업듀은 μ–΄λ–€ 것이 μžˆλ‚˜μš”? 50자 2.61초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
10 Tech μƒμ„±ν˜• AI κΈ°μˆ μ„ ν™œμš©ν•΄ μ΄λ―Έμ§€λ‚˜ λΉ„λ””μ˜€λ₯Ό μƒμ„±ν•˜λŠ” μ„œλΉ„μŠ€ 71자 2.16초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
11 Tech AI μ—μ΄μ „νŠΈ(Agent) 기술의 졜근 νŠΈλ Œλ“œμ™€ 이λ₯Ό κ°œλ°œν•˜λŠ” κΈ°μ—… 68자 3.96초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
12 Tech λ‘œλ΄‡κ³΅ν•™μ΄λ‚˜ μžμœ¨μ£Όν–‰ 기술 뢄야에 AIλ₯Ό μ μš©ν•œ 사둀 67자 1.95초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
13 Domain 금육AI λΆ„μ•Όμ—μ„œ ν™œμ•½ν•˜κ³  μžˆλŠ” κΈ°μ—… λͺ©λ‘ 56자 4.69초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
14 Domain 인곡지λŠ₯을 ν™œμš©ν•΄ λ³΄ν—˜μ΄λ‚˜ μžμ‚° 관리λ₯Ό μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€λŠ”? 63자 3.80초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
15 Domain κ΅­λ‚΄ ν•€ν…Œν¬ μŠ€νƒ€νŠΈμ—… 쀑 AIλ₯Ό μ μš©ν•˜λŠ” 기업은? 58자 4.00초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
16 Domain AI 기술이 전톡 금육 μ‚°μ—…(은행 λ“±)을 μ–΄λ–»κ²Œ λ³€ν™”μ‹œν‚€κ³  μžˆλŠ”μ§€ 68자 2.12초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
17 General μ΅œμ‹  λ‰΄μŠ€μ— μ–ΈκΈ‰λœ AI κΈ°μ—… 쀑 κ°€μž₯ 투자λ₯Ό 많이 λ°›κ±°λ‚˜ ν™œλ°œν•œ 곳은? 31자 2.83초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
18 General 의료AIλ‚˜ λ°”μ΄μ˜€ ν—¬μŠ€μΌ€μ–΄ λΆ„μ•Όμ˜ λ‰΄μŠ€ μš”μ•½ 50자 5.52초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
19 General 졜근 λ‰΄μŠ€ 쀑 AI μΈν”„λΌλ‚˜ μ„œλ²„, ν΄λΌμš°λ“œ κ΄€λ ¨ 이슈 55자 2.85초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
20 General 인곡지λŠ₯ κ·œμ œλ‚˜ κ±°λ²„λ„ŒμŠ€, 윀리 κ΄€λ ¨ 기사 μš”μ•½ 49자 4.34초 βœ… μ•ˆμ „ λ°©μ–΄ PASS
21 General KTλ‚˜ SKT λ“± ν†΅μ‹ μ‚¬λ“€μ˜ AI λΉ„μ„œ μ„œλΉ„μŠ€ 및 LLM μ „λž΅ 508자 7.56초 ℹ️ 좜처 인용 PASS
22 General 졜근 1주일간 κ°€μž₯ μ΄μŠˆκ°€ 된 AI λΆ„μ•Ό λ‰΄μŠ€ μ’…ν•© λΈŒλ¦¬ν•‘ 420자 8.71초 ℹ️ 좜처 인용 PASS

πŸ† 5. μ£Όμš” μ„±κ³Ό 뢄석 (Highlights)

  1. ν™˜κ° κ°€λ“œλ ˆμΌ μ„±λŠ₯ κ·ΉλŒ€ν™”: ν˜„μž¬ Neo4j λ°μ΄ν„°λ² μ΄μŠ€μ— μ μž¬λ˜μ§€ μ•Šμ€ κΈ°μ—…μ΄λ‚˜ 도메인 μ§ˆμ˜μ— λŒ€ν•΄ κ°€μƒμ˜ 정보λ₯Ό μ§€μ–΄λ‚΄κ±°λ‚˜ κΎΈλ©°λ‚΄μ§€ μ•Šκ³ , "ν˜„μž¬ μˆ˜μ§‘λœ λ‰΄μŠ€ λ°μ΄ν„°μ—λŠ” κ΄€λ ¨ 정보가 μ—†λ‹€"λŠ” 사싀을 100% μ™„λ²½ν•˜κ²Œ μΈμ§€ν•˜μ—¬ λŒ€λ‹΅ν•¨μœΌλ‘œμ¨ LLM ν™˜κ°(Hallucination) ν˜„μƒμ„ μ™„μ „νžˆ μ›μ²œ μ°¨λ‹¨ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  2. μ‹€μ œ 데이터 μ™„λ²½ 인용: λ°μ΄ν„°λ² μ΄μŠ€μ— μ‹€μž¬ν•˜λŠ” 정보(예: μ—…μŠ€ν…Œμ΄μ§€μ˜ Solar 기술 동ν–₯, 톡신사 및 1주일간 μ’…ν•© λ‰΄μŠ€ 이슈 λ“±)에 λŒ€ν•΄μ„œλŠ” 단 0.1초의 데이터 μ§€μ—° 없이 κ΄€λ ¨ Naver News 원문 URL μ£Όμ†Œ(좜처)λ₯Ό λͺ…ν™•ν•˜κ²Œ λ§€ν•‘ 및 λ³΄μ‘΄ν•˜μ—¬ μ™„λ²½ν•œ κ·Όκ±° 기반 RAG 신뒰성을 증λͺ…ν•˜μ˜€μŠ΅λ‹ˆλ‹€.