RAG발행일 2025. 12. 18.원본 https://blog.naver.com/jword_/224114542744 ↗

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 파이프라인

이미지

이미지

사용자의 쿼리를 바탕으로 특정 시점에 대한 보고서를 작성하고자 하였습니다.

​

이를 위해서 다음 데이터들이 필요합니다.

  1. 사용자의 쿼리에서 데이터 추출(코인, 날짜 정보)
  2. 해당 날짜에 대한 코인 가격정보 검색(MongoDB)
  3. 해당 날짜 및 쿼리에 대한 뉴스 청크 검색 (벡터 DB)

​

이미지

발견한 새로운 문제:

  • 청크로 나눠진 데이터 및 가격 데이터를 그대로 사용하다 보니 입력 크기가 너무 커지게 되었습니다.
  • 입력에 8만 토큰이 사용되기도 했습니다.
  • 이를 해결하기위해 두가지 전략을 사용하였습니다.
  • 최대한 유사한 chunk 만을 사용하기
  • top-k나 threshold를 설정합니다.
  • 가격 데이터를 가공하여 최소한의 입력 크기로 줄이기

​

결과:

  • 입력 크기가 8만에서 3만으로 줄어들었습니다.
  • 여전히 크기 때문에 더 최적화가 필요합니다.