3. LangChain 기반 멀티스텝 - 100-hours-a-week/6-nemo-wiki GitHub Wiki
1. 배경 및 필요성
네모 서비스는 사용자의 관심사를 파악하여 맞춤형 모임을 추천하는 개인화 추천 기능을 제공합니다.
- 응답 기반 질문을 통해 관심사 유도
- 응답 맥락에 따라 다음 질문을 동적으로 생성
- 응답 전체를 분석하여 관심사 키워드 도출
- 도출된 키워드를 기반으로 유사도 높은 모임 추천
이에 따라 LangChain 기반 멀티스텝 체인 구조를 설계하고 적용하기로 결정하였습니다.
2. 단계별 구현 아키텍처
2.1 MVP 단계 (v1.0)
항목 | 내용 |
---|---|
기능 | 모임 소개글 자동 생성 |
사용 모델 | Google Gemini API |
처리 구조 | 단일 입력 → 단일 출력 |
프레임워크 | LangChain 미사용 |
특징 | FastAPI 내부 프롬프트 구성 및 API 호출만 수행 |
구조 흐름도:
[사용자 입력]
↓
[FastAPI → Gemini API 호출]
↓
[한 줄 소개, 상세 설명, 커리큘럼 생성 결과 반환]
2.2 기능 확장 이후 구조 (v2.0)
항목 | 내용 |
---|---|
추가 기능 | 관심사 추출형 질문 챗봇 + 모임 추천 기능 |
사용 모델 | 로컬 텍스트 생성 모델, 로컬 임베딩 모델 |
프레임워크 | LangChain 기반 멀티스텝 체인 도입 |
데이터 저장소 | ChromaDB (벡터 DB) |
구조 흐름도 (v2.0 기준):
[1] 첫 질문 생성 (텍스트 생성 모델)
↓
[2] 사용자 응답 → 다음 질문 생성
↓
[3] 총 6~8개 질문에 대한 2~5개 선택지 응답 수집
↓
[4] 응답 전체 분석 → 관심사 키워드 도출
↓
[5] 키워드 임베딩 변환 → ChromaDB 검색
↓
[6] 유사도 기반 모임 3개 추천
3. LangChain 구성 체계
3.1 체인 구성 요약
체인 이름 | 구성 방식 | 설명 |
---|---|---|
질문 생성 체인 | LLMChain | 질문을 동적으로 생성 |
관심사 추론 체인 | LLMChain | 응답 기록 기반 관심사 키워드 도출 |
모임 추천 체인 | VectorStoreRetriever | 키워드 임베딩 후 벡터 검색 기반 추천 |
3.2 연결 흐름
텍스트 생성 모델 (질문 생성 + 관심사 도출)
↓
[관심사 키워드]
↓
임베딩 모델 (키워드 → 벡터화)
↓
ChromaDB 검색 (유사도 기반 모임 추천)
4. 멀티스텝 체인 도입 효과
항목 | 기대 효과 |
---|---|
질문의 동적 생성 | 고정 설문 대비 몰입도 및 정확성 향상 |
로컬 실행 기반 구축 | API 비용 절감 및 응답 지연 최소화 |
벡터 검색 활용 | 모임 추천 정밀도 향상 |
체인 기반 구조화 | 기능별 분리로 유지보수성과 확장성 확보 |
5. 결론
현재 네모 서비스의 관심사 기반 모임 추천 기능에는 단일 LLM 호출이 아닌,
LangChain 기반 멀티스텝 체인 구조가 필수적이었습니다.
- 질문을 생성하고
- 응답을 분석해 키워드를 추출하고
- 키워드 기반으로 벡터 검색을 수행하여
- 가장 적합한 모임을 추천하는 복합 프로세스를 자연스럽게 연결
결론적으로, 체인 구조 도입은 추천 정확도 향상, 사용자 경험 개선, 시스템 확장성 강화라는 목표에 명확히 부합합니다.
앞으로 추천 정확도를 더욱 높이기 위해 질문 생성 모델의 품질 개선 및 검색 리랭킹(re-ranking) 적용 등을 추가로 고려할 수 있습니다.