Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

interface

Streamlit 기반 Lang2SQL 데이터 분석 도구의 사용자 인터페이스 레이어입니다.

디렉토리 구조

interface/
├── app_pages/                    # Streamlit 페이지들
│   ├── __init__.py
│   ├── chatbot.py                # AI ChatBot 페이지
│   ├── graph_builder.py          # LangGraph 구성 페이지
│   ├── home.py                   # 홈 페이지
│   ├── lang2sql.py               # Lang2SQL 메인 페이지
│   ├── settings.py               # 설정 페이지 (탭 구성)
│   ├── sidebar_components/       # 사이드바 UI 컴포넌트
│   │   ├── __init__.py
│   │   ├── chatbot_session_controller.py
│   │   ├── data_source_selector.py
│   │   ├── db_selector.py
│   │   ├── embedding_selector.py
│   │   ├── llm_selector.py
│   │   └── README.md
│   └── settings_sections/        # 설정 페이지 섹션들
│       ├── __init__.py
│       ├── data_source_section.py
│       ├── db_section.py
│       ├── llm_section.py
│       └── README.md
├── core/                         # 핵심 인터페이스 로직
│   ├── config/                   # 설정 관리
│   │   ├── __init__.py
│   │   ├── models.py             # 설정 데이터 모델
│   │   ├── paths.py              # 파일 경로 관리
│   │   ├── persist.py            # 디스크 저장/로드
│   │   ├── registry_data_sources.py
│   │   ├── registry_db.py
│   │   ├── registry_llm.py
│   │   └── settings.py           # 설정 업데이트 API
│   ├── dialects.py               # SQL 다이얼렉트 프리셋
│   ├── lang2sql_runner.py        # Lang2SQL 실행 래퍼
│   ├── result_renderer.py        # 결과 시각화
│   └── session_utils.py          # 세션 관리
├── pages_config.py               # 페이지 구성
└── streamlit_app.py              # 메인 진입점

아키텍처 개요

┌─────────────────────────────────────────────────────────────────┐
│                        streamlit_app.py                         │
│                    (메인 진입점, 페이지 네비게이션)                    │
└────────────────────────────┬────────────────────────────────────┘
                             │
                    ┌────────┴─────────┐
                    │  pages_config.py │
                    │   (페이지 설정)    │
                    └────────┬─────────┘
                             │
        ┌────────────────────┼────────────────────┐
        │                    │                    │
        ▼                    ▼                    ▼
┌───────────────┐   ┌───────────────┐   ┌───────────────┐
│   home.py     │   │ lang2sql.py   │   │  chatbot.py   │
│  (홈/소개)     │   │ (메인 기능)    │   │  (AI 채팅)     │
└───────────────┘   └───────┬───────┘   └───────────────┘
        │                   │
        │          ┌────────┴────────┐
        │          │                 │
        ▼          ▼                 ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│graph_builder.py│ │ settings.py   │ │sidebar_components│
│  (그래프 구성) │ │ (설정)        │ │   (사이드바)    │
└───────────────┘ └───────┬───────┘ └───────┬───────┘
                          │                 │
                          ▼                 ▼
                  ┌────────────────┐  ┌────────────────┐
                  │settings_sections│  │ core/config/   │
                  │ (설정 UI)      │  │ (설정 관리)    │
                  └────────────────┘  └────────┬───────┘
                                               │
                                               ▼
                                    ┌──────────────────┐
                                    │ core/            │
                                    │ - dialects.py    │
                                    │ - lang2sql_runner│
                                    │ - result_renderer│
                                    │ - session_utils  │
                                    └──────────────────┘

주요 컴포넌트

1. streamlit_app.py

Streamlit 애플리케이션의 메인 진입점입니다.

역할:

  • 애플리케이션 전역 설정 초기화 (제목, 아이콘, 레이아웃)
  • 페이지 네비게이션 구성 및 실행

주요 함수:

  • configure_app(): Streamlit 전역 설정
  • main(): 애플리케이션 진입점

사용 예시:

# streamlit run interface/streamlit_app.py

의존성:

  • interface.pages_config.PAGES: 페이지 목록

2. pages_config.py

Streamlit 페이지 구성 정의 모듈입니다.

역할:

  • 각 페이지의 경로와 제목 정의
  • 네비게이션에 사용되는 페이지 리스트 제공

내용:

  • PAGES: 5개 페이지 정의
    • 홈 (home.py)
    • Lang2SQL (lang2sql.py)
    • 그래프 빌더 (graph_builder.py)
    • ChatBot (chatbot.py)
    • 설정 (settings.py)

사용처:

  • streamlit_app.py (line 9, 37)

3. app_pages/

Streamlit 애플리케이션의 각 페이지 모듈들입니다.

3.1. home.py

홈 페이지로 Lang2SQL 도구 소개 및 사용 방법 안내를 제공합니다.

주요 내용:

  • 도구 소개 및 환영 메시지
  • 사용 방법 가이드
  • 주요 기능 링크 안내

사용처:

  • pages_config.py (line 18)

3.2. lang2sql.py

Lang2SQL 메인 페이지로 자연어 질의를 SQL 쿼리로 변환하고 결과를 시각화합니다.

┌──────────────────────────────────────────────────────────────┐
│                        🔍 Lang2SQL                           │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌──────────────────┐            ┌───────────────────────┐ │
│  │   Sidebar        │            │    Main Area          │ │
│  │                  │            │                       │ │
│  │ ┌──────────────┐ │            │ ┌───────────────────┐ │ │
│  │ │Data Source   │ │            │ │쿼리 입력 영역        │ │ │
│  │ │Selector      │ │            │ │                   │ │ │
│  │ └──────────────┘ │            │ │"고객 데이터를..."    │ │ │
│  │ ──────────────── │            │ └───────────────────┘ │ │
│  │ ┌──────────────┐ │            │                       │ │
│  │ │LLM Selector  │ │            │ ┌───────────────────┐ │ │
│  │ └──────────────┘ │            │ │DB 선택 및 관리      │ │ │
│  │ ──────────────── │            │ └───────────────────┘ │ │
│  │ ┌──────────────┐ │            │                       │ │
│  │ │Embedding Sel.│ │            │ [검색기 유형]          │ │
│  │ └──────────────┘ │            │ [Top-N 개수]          │ │
│  │ ──────────────── │            │ [모델 실행 장치]        │ │
│  │ ┌──────────────┐ │            │                       │ │
│  │ │DB Selector   │ │            │   [쿼리 실행]         │ │
│  │ └──────────────┘ │            │                       │ │
│  │ ──────────────── │            │ ┌───────────────────┐ │ │
│  │ Output Settings  │            │ │  결과 표시 영역     │ │ │
│  │ □ Token Usage    │            │ │  - SQL 쿼리        │ │ │
│  │ □ Result Desc    │            │ │  - 결과 테이블      │ │ │
│  │ □ Show SQL       │            │ │  - 차트           │ │ │
│  │ ...              │            │ └───────────────────┘ │ │
│  │ ──────────────── │            │                       │ │
│  │ 워크플로우 선택     │            └───────────────────────┘ │
│  │ ○ 기본            │                                      │
│  │ ○ 확장            │                                      │
│  └──────────────────┘                                      │
└──────────────────────────────────────────────────────────────┘

주요 기능:

  • 사이드바 설정: 데이터 소스, LLM, Embedding, DB 선택
  • 출력 옵션 설정 (토큰 사용량, SQL 표시, 차트 등)
  • 워크플로우 선택 (기본/확장)
  • 자연어 질의 입력 및 SQL 변환 실행
  • DB 다이얼렉트 선택 및 편집
  • 검색기 유형 및 Top-N 설정
  • 결과 시각화 (테이블, 차트)

주요 함수:

  • 페이지 레벨에서 직접 실행되는 Streamlit UI 코드

사용 모듈:

  • interface.core.dialects: 다이얼렉트 프리셋
  • interface.core.lang2sql_runner: Lang2SQL 실행
  • interface.core.result_renderer: 결과 시각화
  • interface.core.session_utils: 그래프 초기화
  • interface.app_pages.sidebar_components: 사이드바 컴포넌트

의존성:

  • engine.query_executor.execute_query: 실제 쿼리 실행

3.3. graph_builder.py

LangGraph 워크플로우를 구성하고 세션에 적용하는 페이지입니다.

┌──────────────────────────────────────────────────────────────┐
│                   LangGraph 구성 UI                           │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌────────────────────────────────────────────────────────┐ │
│  │  프리셋 선택:  ○ 기본  ○ 확장  ○ 커스텀                    │ │
│  └────────────────────────────────────────────────────────┘ │
│                                                              │
│  ┌────────────────────────────────────────────────────────┐ │
│  │  커스텀 옵션:                                           │ │
│  │  ☑ PROFILE_EXTRACTION 포함                              │ │
│  │  ☑ CONTEXT_ENRICHMENT 포함                              │ │
│  │  ☑ QUERY_MAKER 포함                                     │ │
│  └────────────────────────────────────────────────────────┘ │
│                                                              │
│  ┌────────────────────────────────────────────────────────┐ │
│  │  GET_TABLE_INFO 설정:                                   │ │
│  │  - 테이블 검색기: [벡터 검색 (기본) ▼]                   │ │
│  │  - 검색할 테이블 정보 개수: [====●====] 5               │ │
│  │  - 모델 실행 장치: [cpu ▼]                             │ │
│  └────────────────────────────────────────────────────────┘ │
│                                                              │
│  ┌────────────────────────────────────────────────────────┐ │
│  │  실행 순서:                                             │ │
│  │  GET_TABLE_INFO → PROFILE_EXTRACTION → ...             │ │
│  └────────────────────────────────────────────────────────┘ │
│                                                              │
│  ┌────────────────────────────────────────────────────────┐ │
│  │  그래프 생성:                                           │ │
│  │  ℹ️ 그래프가 세션에 적용되었습니다.                       │ │
│  │  [세션 그래프 새로고침]                                 │ │
│  └────────────────────────────────────────────────────────┘ │
│                                                              │
│  ┌────────────────────────────────────────────────────────┐ │
│  │  현재 세션 그래프 설정 (expander)                        │ │
│  └────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘

주요 기능:

  • 프리셋 선택: 기본, 확장, 커스텀
  • 노드 시퀀스 구성 (GET_TABLE_INFO → PROFILE → CONTEXT → QUERY_MAKER)
  • GET_TABLE_INFO 설정 (검색기, Top-N, 장치)
  • 그래프 세션에 적용 및 새로고침
  • 현재 그래프 설정 확인

주요 함수:

  • build_selected_sequence(): 프리셋에 따른 노드 시퀀스 생성
  • build_state_graph(): StateGraph 빌더 생성
  • render_sequence(): 시퀀스를 문자열로 변환

사용 모듈:

  • utils.llm.graph_utils.base: 노드 정의 및 그래프 유틸

3.4. chatbot.py

AI ChatBot 페이지로 LangGraph 기반 대화형 인터페이스를 제공합니다.

┌──────────────────────────────────────────────────────────────┐
│                     🤖 AI ChatBot                            │
├───────────────────────────┬──────────────────────────────────┤
│  Sidebar                  │  Chat Area                       │
│                           │                                  │
│ ┌───────────────────────┐ │ ┌─────────────────────────────┐ │
│ │Data Source Selector   │ │ │ 안녕하세요! 무엇을... 🤖      │ │
│ └───────────────────────┘ │ └─────────────────────────────┘ │
│ ───────────────────────── │                                 │
│ ┌───────────────────────┐ │ ┌─────────────────────────────┐ │
│ │LLM Selector           │ │ │ 사용자: 데이터베이스 테이블... │ │
│ └───────────────────────┘ │ └─────────────────────────────┘ │
│ ───────────────────────── │                                 │
│ ┌───────────────────────┐ │ ┌─────────────────────────────┐ │
│ │Embedding Selector     │ │ │ Assistant: 관련 테이블은...  │ │
│ └───────────────────────┘ │ │ 🤖 모델: gpt-4o-mini         │ │
│ ───────────────────────── │ └─────────────────────────────┘ │
│ ┌───────────────────────┐ │                                 │
│ │DB Selector            │ │ ┌─────────────────────────────┐ │
│ └───────────────────────┘ │ │ 사용자: [입력 중...]         │ │
│ ───────────────────────── │ └─────────────────────────────┘ │
│ 🤖 ChatBot 설정           │                                 │
│ ┌───────────────────────┐ │                                 │
│ │ Thread ID: uuid...    │ │                                 │
│ │ [새 세션 시작]         │ │                                 │
│ └───────────────────────┘ │                                 │
│ ───────────────────────── │                                 │
│ 대화 기록:                │                                 │
│ - Thread ID              │                                 │
│ - 메시지 목록 (JSON)       │                                 │
└───────────────────────────┴─────────────────────────────────┘

주요 기능:

  • OpenAI 기반 대화형 AI 채팅
  • 사이드바 설정: 데이터 소스, LLM, Embedding, DB
  • Thread ID 기반 세션 관리
  • 대화 기록 표시 및 관리
  • 신규 세션 시작 기능

주요 함수:

  • initialize_session_state(): 세션 상태 초기화 및 ChatBot 인스턴스 생성

사용 모듈:

  • utils.llm.chatbot.ChatBot: ChatBot 핵심 로직
  • interface.app_pages.sidebar_components: 사이드바 컴포넌트
  • interface.core.config.load_config: 설정 로드

제약사항:

  • 현재 OpenAI만 지원
  • OpenAI API 키 필수

3.5. settings.py

설정 페이지로 데이터 소스, LLM, DB 설정을 탭으로 관리합니다.

┌──────────────────────────────────────────────────────────────┐
│                        ⚙️ 설정                               │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌──────────┬──────────┬──────────┐                         │
│  │데이터 소스 │  LLM     │   DB     │                         │
│  └──────────┴──────────┴──────────┘                         │
│                                                              │
│  [선택된 탭 내용 표시]                                        │
│                                                              │
└──────────────────────────────────────────────────────────────┘

주요 기능:

  • 3개 탭으로 구성: 데이터 소스, LLM, DB
  • 각 탭은 settings_sections 모듈 사용
  • 세션 우선 설정 반영

사용 모듈:

  • interface.app_pages.settings_sections: 각 설정 섹션

3.6. sidebar_components/

사이드바에서 사용되는 설정 선택 컴포넌트들입니다.

모듈 구조:

  • data_source_selector.py: 데이터 소스 선택 (DataHub/VectorDB)
  • llm_selector.py: LLM 프로파일 선택
  • embedding_selector.py: Embedding 프로파일 선택
  • db_selector.py: DB 프로파일 선택
  • chatbot_session_controller.py: ChatBot 세션 관리

사용처:

  • lang2sql.py: 메인 페이지 사이드바
  • chatbot.py: ChatBot 페이지 사이드바

자세한 내용: sidebar_components/README.md 참고


3.7. settings_sections/

설정 페이지의 각 섹션 UI 모듈들입니다.

모듈 구조:

  • data_source_section.py: DataHub/VectorDB 관리
  • llm_section.py: LLM 및 Embedding 설정
  • db_section.py: DB 연결 설정

사용처:

  • settings.py: 설정 페이지 탭 내용

자세한 내용: settings_sections/README.md 참고


4. core/

핵심 인터페이스 로직을 담당하는 모듈들입니다.

4.1. dialects.py

SQL 다이얼렉트 프리셋 정의 및 관리 모듈입니다.

주요 내용:

  • DialectOption: SQL 엔진 특성 데이터클래스
    • name: 엔진 표시 이름
    • supports_ilike: ILIKE 지원 여부
    • hints: 자주 쓰이는 함수 목록
  • PRESET_DIALECTS: 9개 SQL 엔진 프리셋
    • PostgreSQL, ClickHouse, Trino, Snowflake, Redshift
    • BigQuery, MSSQL, Oracle, DuckDB

사용처:

  • lang2sql.py (line 19, 85-124): DB 선택 및 편집 UI

4.2. lang2sql_runner.py

Lang2SQL 실행 래퍼 모듈입니다.

주요 함수:

  • run_lang2sql(): 자연어 질의를 SQL로 변환 후 실행

파라미터:

  • query: 자연어 질문
  • database_env: 데이터베이스 환경 이름
  • retriever_name: 검색기 유형
  • top_n: 검색할 테이블 정보 개수
  • device: 모델 실행 장치

사용처:

  • lang2sql.py (line 139-145): 쿼리 실행

의존성:

  • engine.query_executor.execute_query: 실제 실행 로직

4.3. result_renderer.py

Lang2SQL 실행 결과 시각화 모듈입니다.

주요 함수:

  • display_result(): Streamlit UI로 결과 출력

표시 항목:

  • Question Gate 결과
  • 문서 적합성 평가
  • 토큰 사용량
  • SQL 쿼리 및 해석
  • 결과 설명
  • 재해석된 질문
  • 참고 테이블 목록
  • 쿼리 실행 결과 테이블
  • 결과 차트 (Plotly)

사용 모듈:

  • infra.observability.token_usage.TokenUtils: 토큰 사용량
  • utils.databases.DatabaseFactory: DB 커넥터
  • utils.llm.llm_response_parser.LLMResponseParser: SQL 파싱
  • utils.visualization.display_chart.DisplayChart: 차트 생성

사용처:

  • lang2sql.py (line 146): 결과 표시

4.4. session_utils.py

Streamlit 세션 상태에서 그래프 빌더를 초기화하는 모듈입니다.

주요 함수:

  • init_graph(): 그래프 초기화 및 세션 상태 갱신

파라미터:

  • use_enriched: 확장 그래프 사용 여부

반환값:

  • 그래프 유형 문자열 ("확장된" 또는 "기본")

사용처:

  • lang2sql.py (line 72, 76): 그래프 초기화

의존성:

  • utils.llm.graph_utils.enriched_graph: 확장 그래프
  • utils.llm.graph_utils.basic_graph: 기본 그래프

4.5. config/

설정 관리 패키지로 데이터 소스, DB, LLM, Embedding 설정을 관리합니다.

아키텍처:

config/
├── models.py                    # 데이터 모델 정의
│   ├── Config                   # 전역 설정
│   ├── DataHubSource           # DataHub 소스
│   ├── VectorDBSource          # VectorDB 소스
│   ├── DataSourcesRegistry     # 데이터 소스 레지스트리
│   ├── DBConnectionProfile     # DB 프로파일
│   ├── DBConnectionsRegistry   # DB 레지스트리
│   ├── LLMProfile              # LLM 프로파일
│   ├── LLMRegistry             # LLM 레지스트리
│   ├── EmbeddingProfile        # Embedding 프로파일
│   └── EmbeddingRegistry       # Embedding 레지스트리
│
├── paths.py                     # 파일 경로 관리
│   ├── get_registry_file_path()      # 데이터 소스 레지스트리 경로
│   ├── get_db_registry_file_path()   # DB 레지스트리 경로
│   ├── get_llm_registry_file_path()  # LLM 레지스트리 경로
│   └── get_embedding_registry_file_path()  # Embedding 레지스트리 경로
│
├── persist.py                   # 디스크 저장/로드
│   ├── save_registry_to_disk()       # 데이터 소스 저장
│   ├── load_registry_from_disk()     # 데이터 소스 로드
│   ├── save_db_registry_to_disk()    # DB 저장
│   ├── load_db_registry_from_disk()  # DB 로드
│   ├── save_llm_registry_to_disk()   # LLM 저장
│   ├── load_llm_registry_from_disk() # LLM 로드
│   ├── save_embedding_registry_to_disk()   # Embedding 저장
│   └── load_embedding_registry_from_disk() # Embedding 로드
│
├── settings.py                  # 설정 업데이트 API
│   ├── load_config()                   # 설정 로드
│   ├── update_datahub_server()        # DataHub 서버 업데이트
│   ├── update_data_source_mode()      # 데이터 소스 모드 업데이트
│   ├── update_vectordb_settings()     # VectorDB 설정 업데이트
│   ├── update_llm_settings()          # LLM 설정 업데이트
│   ├── update_embedding_settings()    # Embedding 설정 업데이트
│   └── update_db_settings()           # DB 설정 업데이트
│
├── registry_data_sources.py     # 데이터 소스 레지스트리 관리
│   ├── get_data_sources_registry()    # 레지스트리 조회
│   ├── add_datahub_source()           # DataHub 추가
│   ├── update_datahub_source()        # DataHub 업데이트
│   ├── delete_datahub_source()        # DataHub 삭제
│   ├── add_vectordb_source()          # VectorDB 추가
│   ├── update_vectordb_source()       # VectorDB 업데이트
│   └── delete_vectordb_source()       # VectorDB 삭제
│
├── registry_db.py               # DB 레지스트리 관리
│   ├── get_db_connections_registry()  # 레지스트리 조회
│   ├── add_db_connection()            # DB 추가
│   ├── update_db_connection()         # DB 업데이트
│   └── delete_db_connection()         # DB 삭제
│
├── registry_llm.py              # LLM/Embedding 레지스트리 관리
│   ├── get_llm_registry()             # LLM 레지스트리 조회
│   ├── save_llm_profile()             # LLM 프로파일 저장
│   ├── get_embedding_registry()       # Embedding 레지스트리 조회
│   └── save_embedding_profile()       # Embedding 프로파일 저장
│
└── __init__.py                  # 패키지 공개 API

설정 우선순위:

  1. 세션 상태 (st.session_state)
  2. 환경 변수 (os.getenv)
  3. 기본값

저장 위치:

  • 기본: ./config/ 디렉토리
  • 환경 변수로 오버라이드 가능:
    • LANG2SQL_REGISTRY_PATH
    • LANG2SQL_DB_REGISTRY_PATH
    • LANG2SQL_LLM_REGISTRY_PATH
    • LANG2SQL_EMBEDDING_REGISTRY_PATH

사용 예시:

from interface.core.config import load_config, get_data_sources_registry

# 설정 로드
config = load_config()

# 레지스트리 조회
registry = get_data_sources_registry()

# DataHub 추가
from interface.core.config import add_datahub_source
add_datahub_source(
    name="Production",
    url="http://datahub.prod:8080",
    faiss_path="./prod/faiss",
    note="프로덕션 DataHub"
)

전체 데이터 흐름

┌────────────────────────────────────────────────────────────┐
│                     사용자 입력                              │
│              (자연어 질의, 설정 변경 등)                       │
└──────────────────────┬─────────────────────────────────────┘
                       │
                       ▼
┌────────────────────────────────────────────────────────────┐
│                  Streamlit UI Layer                         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │ app_pages/  │  │  core/      │  │   config/   │        │
│  │ - lang2sql  │  │ - runner    │  │ - settings  │        │
│  │ - chatbot   │  │ - renderer  │  │ - registry  │        │
│  │ - settings  │  │ - dialects  │  │ - persist   │        │
│  └─────────────┘  └─────────────┘  └─────────────┘        │
└──────────────────┬─────────────────────────────────────────┘
                   │
                   ▼
┌────────────────────────────────────────────────────────────┐
│                  Business Logic Layer                       │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │  engine/    │  │ utils/llm/  │  │ utils/data/ │        │
│  │ - executor  │  │ - graph     │  │ - databases │        │
│  │             │  │ - factory   │  │ - hub       │        │
│  └─────────────┘  └─────────────┘  └─────────────┘        │
└──────────────────┬─────────────────────────────────────────┘
                   │
                   ▼
┌────────────────────────────────────────────────────────────┐
│                Data & External Services                     │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │ DataHub     │  │  Database   │  │  LLM APIs   │        │
│  │ VectorDB    │  │  (DBs)      │  │  (OpenAI,   │        │
│  │             │  │             │  │   AWS, etc) │        │
│  └─────────────┘  └─────────────┘  └─────────────┘        │
└────────────────────────────────────────────────────────────┘
                   │
                   ▼
┌────────────────────────────────────────────────────────────┐
│                     결과 반환                               │
│              (SQL, 테이블, 차트, 설명 등)                      │
└────────────────────────────────────────────────────────────┘

주요 설정 파일

설정은 JSON 파일로 ./config/ 디렉토리에 저장됩니다.

  • data_sources.json: DataHub/VectorDB 레지스트리
  • db_connections.json: DB 프로파일 레지스트리
  • llm_profiles.json: LLM 프로파일 레지스트리
  • embedding_profiles.json: Embedding 프로파일 레지스트리

예시: data_sources.json

{
  "datahub": [
    {
      "name": "Local DataHub",
      "url": "http://localhost:8080",
      "faiss_path": "./dev/table_info_db",
      "note": "로컬 개발 환경"
    }
  ],
  "vectordb": [
    {
      "name": "Local FAISS",
      "type": "faiss",
      "location": "./dev/faiss_db",
      "collection_prefix": null,
      "note": "로컬 벡터 DB"
    }
  ]
}

사용 방법

애플리케이션 실행

# 메인 애플리케이션 실행
streamlit run interface/streamlit_app.py

# 또는
python -m interface.streamlit_app

설정 관리

from interface.core.config import (
    load_config,
    get_data_sources_registry,
    add_datahub_source,
    update_db_settings,
)

# 설정 로드
config = load_config()

# DataHub 추가
add_datahub_source(
    name="Production",
    url="http://datahub.prod:8080",
    faiss_path="./prod/faiss"
)

# DB 설정 업데이트
update_db_settings(
    db_type="postgresql",
    values={"host": "localhost", "port": "5432", "user": "admin"},
    secrets={"password": "secret"}
)

의존성

주요 패키지:

  • streamlit: UI 프레임워크
  • pandas: 데이터 처리
  • plotly: 차트 시각화
  • langchain_core: LLM 메시지 처리

프로젝트 내부 모듈:

  • engine.query_executor: 쿼리 실행
  • utils.llm: LLM 관련 유틸리티
  • utils.data: 데이터 관련 유틸리티
  • utils.databases: 데이터베이스 유틸리티
  • infra.observability: 모니터링 및 관찰성

참고 문서

  • app_pages/sidebar_components/README.md: 사이드바 컴포넌트 상세
  • app_pages/settings_sections/README.md: 설정 섹션 상세
  • README_UPDATE_CONDITION.md: 문서 업데이트 가이드