랭체인으로 docs gpt 같은 것을 만들어 보고 있습니다.
기본적인 것은 우선 다 학습된 상태인데.. 심화로 가니, 어려운 부분이 조금씩 나오고 있네요.. ㅡ.ㅜ;
우선 파일을 업로드해서 embedding을 시키고 있습니다.
현재 faiss와 openai를 사용해서 시키고 있습니다.
근데, 16메가정도 파일을 임베딩하니.. 1400개정도의 파일이 생성이 되더군요..
최대한 검색이 잘 되게 작게 잘아야 한다고 해서 청크 사이즈는 1000으로 맞춰서 파일이 많을수는 있는데..
100메가 넘어가는 파일을 임베딩하면 대충 만개 이상의 파일이 나오게 되는데, 이게 맞는건가요??
너무 무식해 보여서 다른 방식으로 임베딩을 해야 하지 않을까 생각하는데.. 이게 맞는지 잘못된 방향인지를 모르겠습니다.
혹 관련 자료나 아시는 분 없으신지요??
문서 규모가 적거나 짧은 문장이면 한 600정도 사용하는거 같고, 테스트 해 보고 괜찮다 싶으면 더 자르는거야 그럴수 있는데..
궁금한 것은 100메가나 그 이상 되는 파일들은 어떻게 자르냐는 겁니다..
이런 방법으로 무식하게 수십~수백만개로 짤라야 하는지 맞는지 의구심이 드는 겁니다..
획일적인 chunking은 LLM의 해독력을 떨어뜨립니다. 반드시 문맥을 해치지 않는 contextual한 chunking이 필요합니다. 대량(페이지) 및 대용량의 파일은 개인 영역에선 어렵고 저희 회사도 RAG만 한 1년 넘게 파서 제품화 했습니다.
현재 돌아가는 형국을 보면, 100메가정도 되는 것을 임베딩 하는 것은 일도 아닐거 같은데..
청크말고 다른 방법으로든.. 뭐든 해서요..
요.. 기술적인것을 조금 알고 싶은데, 청크 말고 다른 방법이 있다면 좀 알려주세요.. 이곳에 적기 그러면 쪽지라도..ㅎㅎ
기가급은 되어야 개인이 힘들거나 생각했지.. 메가급에서 개인이 임베딩이나 학습(?) 시키는데 문제가 생길줄은 몰랐습니다.
RAG를 1년동안 했으면 데이타가 어느정도 된다는 말씀인지.. 또한 궁금하네요.. ^^;
관건은 yongth님이 말씀하신 text chunk를 llm이 잘 이해할 수 있게 조각내는 방법과(사용되는 문서 혹은 data 리소스에 따라 상이한 라이브러리 사용 혹은 직접 구현이 필요한 부분입니다.),
embedding 모델의 차이로 보여집니다. dimension에 따른 유사도 검색 결과의 차이가 있습니다. (이 부분도 다양한 모델을 직접 테스트 해보시면 좋을 것 같습니다.)
https://github.com/Filimoa/open-parse
사실 chunking 만으로 되는건 아니고 임베딩, chunking, 검색이 어우러져 더하기가 아닌 곱하기 방식으로 적용되어 모든 과정이 다 중요합니다. 하나라도 퍼포먼스가 낮으면 답변 품질이 떨어지게 돼요. 검색도 여러 방식을 믹스해서 써야해서 커뮤니티에서 공유해 드릴만한 내용이 아니라... ㅠㅠ
좀더 파 봐야겠네요.
저도 빨리 상용화를 하고픈데, 갈길이 머네요.. ㅡ.ㅜ;