spring:
# ==========================================
# [1] 애플리케이션 및 인프라 기본 설정
# ==========================================
application:
name: chat # 서비스 애플리케이션 이름
elasticsearch:
uris: http://localhost:9200 # 로컬 도커로 띄운 상용 엘라스틱서치 서버 주소
# ==========================================
# [2] Spring AI 핵심 모듈 설정
# ==========================================
ai:
# (A) OpenAI 및 외부 API 모델 연동
openai:
api-key: ${OPENAI_API_KEY} # 시스템 환경변수에서 API 키를 동적으로 주입
chat:
model: openai/gpt-4.1-nano # 사용할 LLM 모델명
base-url: https://models.github.ai/inference # GitHub Models 프록시 서버 주소
completions-path: /chat/completions # 엔드포인트 세부 경로
# (B) Ollama 로컬 오픈소스 AI 연동
ollama:
init:
pull-model-strategy: when_missing # 로컬에 모델이 없을 때만 자동으로 다운로드(Pull)
chat:
model: hf.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF # 로컬 챗봇용 경량 모델
embedding:
options:
model: bge-m3 # 한국어 성능이 뛰어난 로컬 임베딩 번역기 모델 지정
# (C) 상용 백터 데이터베이스(Elasticsearch) 연동
vectorstore:
elasticsearch:
initialize-schema: true # 서버 구동 시 해당 인덱스가 없으면 자동으로 생성
index-name: spring-ai-document-index # 벡터 데이터가 저장될 엘라스틱서치 인덱스 이름
dimensions: 1024 # bge-m3 모델의 고유 출력 벡터 차원 수 지정 (필수)
similarity: cosine # 벡터 간의 거리(유사도)를 계산할 수학 공식 (코사인 유사도)
# ==========================================
# [3] 디버깅 및 로그 레벨 설정
# ==========================================
logging:
level:
org.springframework.ai.chat.client.advisor: DEBUG # RAG Advisor가 프롬프트를 조립하는 과정을 콘솔에 상세히 출력
# ==========================================
# [4] 비즈니스 로직 및 기능 토글(스위치) 설정
# ==========================================
app:
# RAG 지식 베이스 파일 경로
rag:
documents-location-pattern: classpath:spring-ai-llm.pdf
# 일회성 데이터 수집/가공/적재 파이프라인
etl:
pipeline:
init: true # true: 서버 시작 시 PDF를 읽어 엘라스틱서치에 적재 / false: 가동 중지
# 대화형 커맨드 라인 인터페이스(CLI) 활성화 여부
cli:
enabled: true # 사용 시 주석을 풀고 true로 변경 (자바 코드 @ConditionalOnProperty와 연동)
# 기존 인메모리 벡터스토어 사용 안 함 설정
vectorstore:
in-memory:
enabled: false # 엘라스틱서치를 사용하므로 기존 가짜 메모리 저장소는 비활성화