LangChain 기반 멀티스텝 AI 흐름 설계 - 100-hours-a-week/6-nemo-wiki GitHub Wiki

1. 배경 및 필요성

우리 서비스는 사용자의 관심사를 파악하여 가장 적합한 모임을 추천하는 개인화 추천 기능을 제공합니다.
특히, 단일 질문 또는 고정된 설문 형식으로는 사용자의 맥락을 충분히 반영하기 어렵기 때문에, 다음과 같은 흐름이 필요합니다:

  • 응답 기반 질문을 통해 관심사 유도
  • 응답 맥락에 따라 다음 질문을 동적으로 생성
  • 응답 전체를 분석하여 관심사 키워드 도출
  • 도출된 키워드 기반으로 벡터 유사도 기반 모임 추천

이를 위해 LangChain 기반 멀티스텝 체인 구조를 설계하였으며, 로컬 모델 중심의 처리 방식으로 진행할 예정입니다.


2. 구현 단계별 아키텍처

MVP 단계 (v1.0)

  • Google Gemini API를 통해 한 줄 소개, 상세 설명, 커리큘럼을 자동 생성
  • 관심사 기반 추천 기능은 아직 미도입
[사용자 입력]
  (모임명, 목적, 카테고리, 기간 등)
        ↓
[Gemini API 호출]
        ↓
[한 줄 소개, 상세 설명, 커리큘럼 응답 반환]
항목 설명
기능 모임 소개 자동 생성
사용 모델 Google Gemini API
처리 구조 단일 입력 → 단일 출력
프레임워크 LangChain 사용 ❌
기술 구조 FastAPI 내부에서 직접 프롬프트 구성 및 API 호출

단순한 구조로 빠른 구현이 가능하며, 유지보수도 용이합니다.

버전업 이후 구조 (v2.0~)

항목 설명
추가 기능 관심사 추출형 질문 챗봇 + 모임 추천 기능
사용 모델 (로컬) 텍스트 생성 모델 (질문 생성 및 관심사 도출), (로컬) 임베딩 모델 (관심사-모임 간 유사도 측정)
프레임워크 LangChain 기반 멀티스텝 체인 도입
데이터 저장소 ChromaDB (벡터 DB 기반 모임 정보 저장 및 검색)

흐름 구조 (v2.0 기준)

[1] 첫 질문 생성 (텍스트 생성 모델) 
     ↓ 
[2] 사용자 응답 → 다음 질문 생성
     ↓ 
[3] 총 6~8개의 질문에 2~5개의 선택지 응답 수집 
     ↓ 
[4] 응답 전체 분석 → 관심사 키워드 도출 
     ↓ 
[5] 키워드 임베딩 → ChromaDB 검색 
     ↓ 
[6] 유사도 기반 모임 3개 추천
  • 질문 생성과 관심사 분석은 텍스트 생성 모델이 담당
  • 추천은 임베딩 모델이 관심사 키워드와 모임 설명 간 유사도 기반으로 수행

3. LangChain 구성

LangChain에서는 여러 모델을 조합하여 다음과 같은 체인을 구성합니다:

✅ 체인 구조 요약

체인 이름 구성 방식 설명
질문 생성 체인 LLMChain 질문을 동적으로 생성
관심사 추론 체인 LLMChain 응답 기록을 바탕으로 관심사 키워드 도출
모임 추천 체인 VectorStoreRetriever 관심사 임베딩 → Chroma 검색 → 유사도 기반 추천

LangChain 내 구성 방법 - 두 개의 모델을 사용하는 멀티스텝 구조

텍스트 생성 모델 (질문 생성 + 관심사 도출)
         ↓
[관심사 키워드]
         ↓
임베딩 모델 (키워드 → 벡터화 → 유사도 기반 추천)
         ↓
ChromaDB에서 관련 모임 3개 추출

4. 설계 의의 및 기대 효과

항목 기대 효과
동적 질문 생성 고정 설문보다 높은 몰입감과 적중률
로컬 실행 기반 API 비용 절감 및 지연 최소화
벡터 검색 활용 모임 추천의 정밀도 향상
체인 구조화 기능별 분리로 유지보수와 테스트 용이