PROJECT/RAG 기반 희귀품종 무화과 챗봇

[AI/RAG] RAG 기반 희귀품종 무화과 LLM 챗봇 프로젝트(1): 프로젝트의 시작과 구상 (AI Agent, RAG 적용)

깃짱 2025. 10. 20. 12:00
반응형

🌏 프로젝트의 시작,,

국내에서 유통되는 무화과의 대부분(무려 95% 이상)은 ‘도핀(Dauphin)’ 품종이다.

도핀은 저장성과 유통성이 좋아 상업적으로는 효율적이지만, 식감이 단단하고 당도가 낮아 집에서 직접 키워 먹는 무화과의 풍미와는 거리가 있다.

 

그래서 최근에는 더 부드럽고 달콤한 품종을 직접 키워보려는 사람들이 많아졌고, 나 역시 ‘즐거운 무화과 생활’이라는 네이버 카페를 통해서 품종 무화과를 접했고 나뭇가지 하나일 뿐인 삽수부터 뿌리를 내리고, 열매를 맺는 과정까지를 즐기는 사람이당.

 

삽수(나뭇가지)에서 뿌리가 나왔다 (=발근)
이렇게 많은 삽수들을 통해서 나무를 얻었다

 

하지만 품종 이름이나 특징이 생소한 경우가 많다.

키우면서 느낀 답답함은, 품종마다 삽목(나뭇가지에서 뿌리를 내리는 과정)에 걸리는 시간이나 뿌리가 난 직후에 식물의 예민도, 햇빛을 선호하는 정도, 물을 선호하는 정도가 제각각인데 이 정보를 찾기가 매우 힘들다는 것이다.

 

무화과 키우기가 취미인 사람들은 굉장히 소수이기 때문에 이러한 희귀 품종들은 검색을 통해서도 제대로 나오지 않으며 무화과 카페 내에서도 영어로 된 해외 도감에 의존하는 경우가 많다. 예를 들어 SV, LSUT, Cicco Nero, BNR, RDB, Hardy Chicago처럼 해외 품종들은 이게 우리 기후에서 잘 자라는지, 혹은 어떤 맛과 숙기(익는 시기)를 가지는지, 인터넷 검색만으로는 정리된 정보를 얻기 어렵다. 또 인터넷 거래를 통해 비싸게 거래되는 삽수의 경우에도 판매자가 판매하는 품종이 제대로 된 품종인지 알기도 어렵다. 삽수를 구매하거나 선물받게 되면 보통 페인트 마커로 (주로 악필로) 종의 이름이 영어 약자로 적힌 경우가 굉장히 많은데, 이 경우까지도 어떤 품종인지 사진을 통해 알아내고 해당 품종을 키울 때의 주의사항에 대해서 자세히 알려줄 수 있으면 좋겠다고 생각했다.

네임펜으로 이름을 적어서 받은 선물

 

페인트마커로 이름을 적어서 받은 선물

 

이런 문제를 해결하기 위해 이번 프로젝트에서는 “무화과 품종에 대해 자유롭게 물어볼 수 있는 AI 챗봇”, 즉 LLM + RAG 기반의 무화과 품종 질의응답 시스템을 직접 구축해보려고 한다.

🌏 프로젝트 구상

✅ AI Agent

RAG 시스템 위에 AI Agent 계층을 추가해, 사용자의 질문 의도를 분류하고 적절한 처리 흐름을 선택하는 구조를 설계한다.

사용자가 질문을 입력하면, 먼저 LLM이 단순히 답을 내기 전에 “이 질문의 유형이 무엇인지”를 판단한다.

[핵심 분류 기준]

  1. 사용자가 특정 품종 이름을 알고있는가?
  2. 그 품종이 실제 존재하는(또는 RAG 데이터에 존재하는) 품종인가?
  3. 현재 질문이 RAG 검색으로 해결 가능한가, 아니면 추가 질의가 필요한가?

이를 통해 Agent는 두 갈래의 주요 행동 방식을 갖는다.

✅ AI Agent 동작 흐름

사용자 입력 → Agent (질문 분석 & 분기) → RAG Search or Clarifying Q → LLM 응답

품종 언급 여부 판단

  • 입력문 분석 단계에서 품종명(Dauphin, Brown Turkey, Violette de Bordeaux 등)이 포함되어 있는지 탐지 (무화과 덕후들의 경우 Hardy Chicago를 HC와 같이 약자로 사용하는 경우가 많기 때문에 이 경우도 특별히 고려해야 한다)
  • 품종명 데이터는 사전에 수집한 품종 리스트(혹은 벡터DB의 key index)에서 식별 가능

[Case A] 품종을 알고 있는 경우

(1) 품종 존재 여부 확인

  • 입력된 품종이 RAG 데이터셋에 존재하지 않거나 유사 오탈자인 경우,
    LLM이 “혹시 이 품종 이름이 ‘Ciccio Vero’이 아니라 ‘Ciccio Nero’을 말씀하신 건가요?” 처럼 정정 제안

(2) 품종이 정확히 존재한다면

  • 질문의 내용이 RAG 기반 검색으로 처리 가능한지 판단
    (예. “BNR은 당도가 높나요?”, “브런즈윅은 제주도 돌담 바로 옆에서 월동이 가능한가요?” 등)
  • 질문의 정보만으로도 응답이 가능하면 RAG retrieval 수행해 context 기반 답변 생성

(3) 추가 정보가 필요한 경우

  • 질문이 모호하거나 “어떤 품종이 제일 맛있나요?”처럼 비교적 문맥이 부족한 경우, Agent가 보충 질문을 던진다.
    (예. “맛 기준이 당도인가요, 식감인가요?”, “지역은 어디 기준인가요?”)

[Case B] 품종을 모르는 경우

  • 질문이 “달콤한 무화과 품종 추천해줘”, “무화과 중에서 단단하지 않은 게 뭐야?” 같은 일반적인 형태라면 품종명을 직접 모르는 상태로 판단
    • Agent가 사용자 요구를 품종 검색 쿼리 형태로 변환 (“달콤한 품종” → sweetness score 높은 품종 리스트 요청)
  • 질문이 (사진과 함께) “이 무화과의 품종은 뭐야?” 라고 물어보면 품종을 모르는 상태로 판단하나, 사진을 통해서 품종을 유추하도록 함.

 

 

 

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!

 

반응형