안녕하세요.

최근 RAG 관련 연구개발 중 문득 든 생각에 질문드리고자 합니다.


보통 RAG Basic한 것은, 문서가 기니 이걸 청크로 잘라서 요약&오버랩 등등 으로 

처리하곤 하는데 경우에 따라서 반드시 청크할 필요가 있나? 싶어서 의문이 들었습니다.

예를 들어 뉴스의 경우 :

- 사용자 질문 :  a 의 한달간 발생한 것들 중 이슈가 될만한 뉴스 알려줘 

- RAG 내부 동작 (간략) :  1) A와 한달간을 정규화 (SQL 쿼리를 위한 A, 한달간 데이터 포맷)->  뉴스 DB(일반 db)에 있는 해당 a 키워드의 한달 (24-03-30 ~ 24-04-30) 의 뉴스 데이터 (본문) 추출

 2) 임베딩 모델로 벡터화 (벡터 db에 저장)

  - 뉴스 본문이므로 청크할 필요가 적음 (Input 길이보다 대부분 짧으므로)

 3) 이슈가 될만한 뉴스 알기 위해 랭킹 알고리즘 혹은 LLM 프롬포트로 상위 문서 찾기 (상위 문서 K = 3)

 4) 상위 문서 3개 추출 후, LLM 활용해서 답변 요약 생성 


예를 들어 설명하였으나, 혹시 저 과정이 틀린점이 없는지도 질문 드립니다. 

그리고 벡터DB화 할때, 저 방식은 번거로운거 같은데  뉴스를 수집하고 바로 벡터 DB화 시키고 쿼리 단계에서 일반 DB (SQL문 가능한 오라클DB 또는 MYSQL) 은 사용하지 않나요?  쿼리 단계에서  키워드 / 날짜 / 토픽 (혹은 의도) 로 추출 할 필요가 있는데, 이걸 임베딩만으로 부랴부랴 하기엔 불안해서 필터링 작업 (NER 등) 을 사용해서 추출한 후 쿼리에 맞게 정규화해서 하는게 낫지 않을까 싶어서요. 


혹시 경험 있으신분들 조언 부탁드립니다. 

요약하자면, 

1) 청크를 반드시 해야하는지 (상황에 따라)

2) 벡터 DB 선후에 대해서 

3) 질문 단계에서 필터링 작업을 쓰는게 더 좋은지 


입니다. 논문 참고할시 보통 저러는거 같은데 1,2)은 명확히 알기가 어렵더군요 실무적으로 확인하고 싶어서...