RAG 시스템 개발
RAG 시스템 개발 — #RAG #개발자의도구들 #RAG시스템개발 *11월10일에 진행한 내용입니다. 이번 시간에는 RAG 시스템...
#RAG#Naver Blog
#RAG #개발자의도구들 #RAG시스템개발
\*11월10일에 진행한 내용입니다.
이번 시간에는 RAG 시스템 개발에 대해서 알아보겠습니다.
문제1: RAG에 사용할 데이터 셋 구축을 위해 네이버 뉴스 검색 API를 사용하고자 하였습니다. API 구조상 옛날 뉴스 기사를 찾기가 어려웠습니다.
이를 해결하기 위해 뉴스 사이트별 크롤러를 만들어 데이터를 수집하고 메타데이터를 추출(LangChain Loader 사용)하여 MongoDB로 Raw 데이터와 함께 저장하였습니다.
문제2: 암호화폐 가격 데이터를 수집하기 위해 coin compare api를 사용하여 mongoDB에 저장하였습니다.
문제3: MongoDB에 저장된 뉴스 Raw데이터를 청킹 및 임베딩을 진행하여 벡터 DB로 저장해야 합니다.
이를 해결하기 위해 Langchain에서 제공하는 RecursiveSplitter를 사용하여 적절하게 뉴스를 청크로 나누어 저장하였습니다.
RAG 파이프라인
사용자의 쿼리를 바탕으로 특정 시점에 대한 보고서를 작성하고자 하였습니다.
이를 위해서 다음 데이터들이 필요합니다.
- 사용자의 쿼리에서 데이터 추출(코인, 날짜 정보)
- 해당 날짜에 대한 코인 가격정보 검색(MongoDB)
- 해당 날짜 및 쿼리에 대한 뉴스 청크 검색 (벡터 DB)
발견한 새로운 문제:
- 청크로 나눠진 데이터 및 가격 데이터를 그대로 사용하다 보니 입력 크기가 너무 커지게 되었습니다.
- 입력에 8만 토큰이 사용되기도 했습니다.
- 이를 해결하기위해 두가지 전략을 사용하였습니다.
- 최대한 유사한 chunk 만을 사용하기
- top-k나 threshold를 설정합니다.
- 가격 데이터를 가공하여 최소한의 입력 크기로 줄이기
결과:
- 입력 크기가 8만에서 3만으로 줄어들었습니다.
- 여전히 크기 때문에 더 최적화가 필요합니다.






