- 육아 고민을 하는 사람들이 오은영 박사님과 편하게 상담하는 경험을 제공하는 챗봇
-
소개 및 배경 설명 기존에 오은영 박사님이 상담했던 좋은 컨텐츠가 많이 있는데, 같은 고민을 하는 사람들을 쉽게 찾아보기 어렵고 오은영 박사님과 편하게 상담하는 경험을 제공하기 위해 주제를 선정
-
목표 육아와 관련된 고민을 해결해주는 오은영 박사님 페르소나 구현
- 주 언어 : Python
- 버전 및 이슈관리 : github
- 협업 툴 : slack, zoom
-
LangChain
- LangChain은 자연어 처리 작업을 쉽게 연결할 수 있도록 도와주는 프레임워크입니다. 다양한 NLP 모델과 도구를 통합하여 복잡한 언어 처리 파이프라인을 구성할 수 있습니다. 특히, LangChain은 텍스트 전처리, 문서 분할, 인퍼런스 실행 등 여러 기능을 제공하여 효율적인 워크플로우 구축을 지원합니다.
-
gradio
- Gradio는 간단한 UI를 구현하고 서버를 제공할 수 있는 도구입니다. 이를 통해 AI 모델을 빠르게 프로토타입하고, 사용자와 상호작용할 수 있는 웹 인터페이스를 쉽게 구축할 수 있습니다. Gradio는 사용이 간편하고 직관적인 인터페이스를 제공하여, 모델 개발 및 테스트를 효율적으로 진행할 수 있도록 도와줍니다.
- Model : solar-embedding-1-large
- 이 모델은 대규모 텍스트 데이터를 효율적으로 임베딩할 수 있도록 설계된 NLP 모델입니다. 주로 텍스트의 의미적 유사성을 계산하거나, 텍스트 클러스터링, 검색 엔진의 백엔드에서 활용될 수 있습니다. 이 모델은 대규모 데이터셋에서 우수한 성능을 보여주며, 다양한 언어 처리 작업에 적용 가능합니다.
├── README.md
├── .gitignore
├── main.py
├── chat_history.py
├── llm.py
├── merged_script.txt
├── retriever.py
├── vector_store.py
...
- 역할
- 저장소 설정 및 관리
- main 모듈
- 역할
- 데이터 수집
- retriever 모듈
- 역할
- 편안한 분위기 조성
- Gradio 활용한 인터페이스 구현
- 역할
- 데이터 수집
- LLM 모듈
- 역할
- 기능 단위 구현
- Chat-History 모듈 구현
- 전체 모듈 단위 쪼개기
- 개발 기간 :2024. 08. 12 ~ 2024. 08.16
-----
초기에는 모든 강의를 하나의 스크립트로 통합하고, CharacterTextSplitter를 사용해 청크 단위를 무작위로 설정하여 텍스트를 분할했습니다.
이후 강의별로 청크를 나누는 방안을 고려했으나, 전체 스크립트를 유지하기로 결정했습니다. 이유는 각 강의가 서로 연관된 내용일 수 있으며, 강의 간의 맥락을 유지하여 정보의 흐름이 끊기지 않도록 하는 것이 중요하다고 판단했기 때문입니다.
기존의 청크 방식이 더 유의미한 결과를 제공할 것으로 결론지었습니다.
이를 해결하기 위해, 프롬프트를 “사용자 혹은 금쪽이에 대한 정보가 나온다면, 이전 대화 기록을 살피고 정보가 없다면 다시 질문을 합니다.”라는 방식으로 수정했습니다.
챗봇이 적절하게 이전 대화를 참조하거나, 정보가 없을 경우 새로운 질문을 통해 정확한 답변을 할 수 있도록 개선되었습니다.
기존의 청크 방식이 더 유의미한 결과를 제공할 것으로 결론지었습니다.
프로젝트 초기에 각 기능을 모듈화하여 개발할지, 아니면 일단 기본적인 기능 구현 후 모듈화를 진행할지 고민했습니다.
우리는 후자를 선택하여, 각 기능이 정상적으로 작동하는지 확인한 후에 모듈화를 진행했습니다.
개발 초기 단계에서 모든 팀원이 같은 목표를 이해하고 작업할 수 있었으며, 나중에 모듈화 과정에서도 일관된 코드를 유지할 수 있었습니다.
챗봇 서비스의 완성도를 어느 정도로 설정할지 논의했으며, 회원 식별 등의 복잡한 기능은 포함하지 않기로 결정했습니다.
대신, 간단한 UI 구현과 서버 제공이 가능한 Gradio를 사용하여 신속하게 프로토타입을 완성하고, 사용성을 테스트했습니다.
Gradio는 사용하기 간편하고 직관적인 인터페이스를 제공하여 개발 효율성을 높였습니다.
RAG 프로세스를 이론적으로 배우는 것에서 나아가, 실제 구현을 통해 더 깊이 이해할 수 있었습니다. 팀장 역할을 맡으면서 부족한 부분이 많았지만, 열정적인 팀원들과 활발하게 소통하며 좋은 의사결정을 내릴 수 있었던 것 같습니다. 이 과정에서 팀워크의 중요성을 다시 한번 느낄 수 있었고, 이러한 협업이 우리 팀의 큰 장점이라고 생각합니다.
처음하는 팀프로젝트로 걱정이 앞섰는데, 친절하고 유능한 동료들과 함께 프로젝트를 하게되어 감사했습니다. RAG와 프롬프트 작성을 통해 어떻게하면 좀 더 효과적인 결과를 도출할 수 있는지 알아보는 좋은 기회가 되었습니다
수업 내용을 실제로 구현하면서 RAG와 LLM 기반 챗봇의 기초를 잘 학습할 수 있어서 좋았습니다.
이번 프로젝트를 통해 배운 내용을 실전에 적용하며 벡터 인덱스와 RAG에 대해 깊이 이해할 수 있었고, 강의에서 놓쳤던 부분들을 다시 점검할 수 있어 유익한 경험이었다. 실전 프로젝트를 통해 배운 내용을 내 것으로 만드는 중요성을 깨달았다.
자연어 처리, 데이터 검색, 사용자 인터페이스 설계 등 다양한 기술 영역을 다루어야 했기 때문에, 각 분야에 대한 이해도를 높이고 실력을 키울 수 있는 좋은 기회가 되었습니다.