Skip to content

anxi01/meongmeong-chatbot

Repository files navigation

🐶 Meong-Meong Chatbot 🐾

Meong-Meong Chatbot은 반려견의 성장, 질병 등에 관한 질문에 대해 AI가 맞춤형 답변을 제공하는 반려견 전문 챗봇입니다.

Corpus Data: 반려견 성장 및 질병관련 말뭉치 데이터
Language: Kotlin
Framework: Spring Boot 3.5.6
Spring AI Version: 1.0.3
Vector DB: InMemory
Large Language Model(LLM): gemma3:1b
Embedding Model: nomic-embed-text

🌊 RAG Flow

RAG Flow

💬 주요 기능

  • 🐕 반려견 성장 및 질병 관련 Q&A 제공
  • 🧠 RAG(Retrieval-Augmented Generation) 기반 지식 검색
  • 🔍 유사도 검색을 통해 챗봇 질의와 일치하는 qa_input을 찾고, 해당 qa_outputLLM 컨텍스트로 활용하여 답변 생성

🔧 프로젝트 설정

실행 환경

  • Java: JDK 21 이상
  • Kotlin: 1.9.25

1. Ollama Container 설치 및 LLM, Embedding Model 저장

# Ollama 볼륨 생성
docker volumes create ollama-local

# Ollama 서비스 실행
docker-compose up -d

# --- 추가: 모델 다운로드 명령어 ---
# 실행 중인 Ollama 컨테이너에서 모델 다운로드
docker exec -it meongmeong-chatbot-ollama ollama pull gemma3:1b
docker exec -it meongmeong-chatbot-ollama ollama pull nomic-embed-text
# ----------------------------------

2. Ollama, LLM, Embedding Model 설정

application.yml 파일에 LLM 및 Embedding Model 변경 가능합니다. (ollama 모델 다운로드 필수)

spring:
  ai:
    ollama:
      # 로컬 Docker 컨테이너의 기본 주소
      base-url: your-ollama-url
      chat:
        # LLM 모델 이름 (Ollama에 다운로드된 이름과 일치해야 함)
        model: your-ai-model
      embedding:
        # 임베딩 모델 이름 (Ollama에 다운로드된 이름과 일치해야 함)
        model: your-embedding-model

3. 말뭉치 데이터 저장

AI Hub에서 반려견 성장 및 질병관련 말뭉치 데이터 저장 후, 라벨링 데이터src/main/resources/data 하위에 저장합니다.

4. 프로젝트 빌드 및 실행

# 프로젝트 빌드
./gradlew build

# 애플리케이션 실행
./gradlew bootRun

애플리케이션 실행 이후, 다음 주소에서 접속 가능합니다. Swagger를 통해 API를 쉽게 호출할 수 있습니다.

5. Retrieval-Augmented Generation(RAG) 말뭉치 데이터 로드 및 임베딩 API 호출 예시

curl -X POST "http://localhost:8080/api/v1/rag/ingest-jsons" \
-H "Content-Type: application/json"

6. AI 챗봇 Q&A API 호출 예시

curl -X POST "http://localhost:8080/api/v1/chats/query" \
-H "Content-Type: application/json" \
-d '{"query": "강아지가 숨을 쉬는데 코고는 소리와 비슷하게 들려요. 왜 그럴까요?"}'

✅ 응답 예시

{
  "result": "SUCCESS",
  "data": {
    "answer": "강아지가 숨을 쉬며 코를 고는 소리와 유사하게 들리는 현상은 여러 가지 원인으로 발생할 수 있습니다. 몇 가지 가능한 이유와 추가적인 정보는 다음과 같습니다.\n\n**1. 심장 박동:** 강아지의 심장 박동은 코를 고는 소리와 유사하게 들릴 수 있습니다. 심장 박동이 활발할 때 심장과 관련된 감각적 반응으로 인해 이 현상이 나타날 수 있습니다.\n\n**2. 턱 근육 활성화:** 강아지는 턱 근육을 사용하여 호흡을 조절합니다. 턱 근육이 활성화되면 코를 고는 소리와 유사하게 들리는 현상이 나타날 수 있습니다. 특히, 턱의 움직임을 통해 호흡 패턴이 변화할 때 발생할 수 있습니다.\n\n**3. 스트레스 또는 불안:** 스트레스나 불안과 같이 감정적으로 긴장할 때 강아지는 코를 고는 소리와 유사하게 낼 수 있습니다.\n\n**4. 불편함:** 강아지가 특정 장소나 물체에 불편함을 느끼면 코를 고는 소리와 유사하게 들릴 수 있습니다.\n\n**5. 기타 질환:** 드물지만, 특정 질환이나 상태로 인해 코를 고는 소리가 나타날 수 있습니다. (예: 코막힘, 천두 등)\n\n**추가적으로 고려할 사항:**\n\n*   **동반 증상:** 코를 고는 소리 외에도 다른 증상(예: 짖음, 불안, 근육 경련 등)이 있다면 해당 증상이 더 이상 악화되는지 확인해야 합니다.\n*   **어린 강아지:** 어린 강아지는 심장 박동이나 턱 근육의 활동으로 인해 코를 고는 소리가 더 두드러질 수 있습니다.\n\n**주의사항:**\n\n*   강아지가 코를 고르는 행동을 지속적으로 반복하거나, 다른 불편한 증상을 동반하는 경우 수의사와 상담하는 것이 좋습니다.\n*   최대한 평소에 강아지의 스트레스 요인을 제거하고, 편안하게 지낼 수 있도록 환경을 조성해 주세요.\n\n**마지막으로:** 강아지의 상태를 면밀히 관찰하고, 불편한 경우 즉시 수의사와 상담하여 정확한 원인을 파악하고 적절한 치료를 받는 것이 중요합니다.\n\n**참고:** 이 정보는 일반적인 내용이며, 특정 상황에 대한 의료 조언으로 해석되어서는 안 됩니다. 정확한 진단과 치료는 반드시 수의사와 상담하십시오."
  },
  "error": null
}

📚 Reference

About

반려견 성장 및 질병 말뭉치를 활용한 챗봇 API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages