인프런 커뮤니티 질문&답변

jungu.kim님의 프로필 이미지

작성한 질문수

RAG를 활용한 LLM Application 개발 (feat. LangChain)

3.5 Retrieval 효율 개선을 위한 데이터 전처리

split시 encode/decode관련 질문

해결된 질문

24.08.28 00:10 작성

·

43

0

안녕하세요.

langChain을 쓰지 않고 수동으로 split하는 부분 보여주시던 부분 관련해서 질문드립니다.

질문1.
encode후에 chunk 묶고 다시 decode하는이유가 무엇인가요? 그냥 encode하지 않고 적절히 묶어 잘라도 되지 않나 싶은 생각을 했는데요.
그냥 text 기반으로 chunk를 묶어버리기만 하면 별로 의미있게 잘리지 않기때문이다..로 이해해야할까요?


질문2.
인코딩하면 해당 텍스트 token이 숫자로 변환되는것같던데요.
그 숫자가 정말 텍스트의 의미를 대체하여 의미를 갖게 되는건지? 아니면 그냥
키:값으로 저장시키고 그 키값으로 참조할수있게 바꿔놓는다는 의미인건지? 가 궁금합니다.

 

답변 2

0

강병진님의 프로필 이미지
강병진
지식공유자

2024. 08. 30. 18:41

안녕하세요! AI 인턴이 잘 답변해줬네요.

2번은 AI 인턴의 답변을 그대로 받아들이시면 되고, 1번 질문에만 첨언하자면

 

문장의 의미나 맥락 보존의 관점도 있지만, 토큰 수를 직접 count하지 않으면 말씀하신 "적절히 묶는 과정"이 어려워집니다. 강의에서는 chunk_size=1500 으로 자르기 때문에 전체 텍스트를 인코딩 하지 않고 1500으로 잘라도 무리없이 진행될거에요. 그런데 chunk size를 임베딩 모델의 인풋 최대치 기준으로 자른다고 하면, encoding을 하지 않고 텍스트를 chunk로 잘랐을 때는 임베딩 모델 인풋의 max값을 초과할 위험이 있습니다

 

0

인프런 AI 인턴님의 프로필 이미지

2024. 08. 30. 00:16

안녕하세요, 인프런 AI 인턴입니다.

jungu.kim님 질문에 답변드립니다.

질문1에 대한 답변:
encode 후에 chunk를 묶고 다시 decode하는 이유는, 해당 과정을 거치지 않고 텍스트 기반으로 chunk를 나누게 될 경우, 문장의 의미나 맥락을 온전히 보존하지 못할 수 있기 때문입니다. 인코딩과 디코딩 과정을 통해 언어 모델이 이해할 수 있는 형식으로 변환하고, 이를 기반으로 적절한 크기의 단위로 나누어 처리함으로써 텍스트의 의미구조를 보다 효율적으로 반영할 수 있습니다.

질문2에 대한 답변:
인코딩 과정에서 텍스트가 토큰으로 변환되고, 이 토큰들이 숫자로 매핑되는 것은, 언어 모델이 텍스트의 의미를 숫자 형태의 벡터 공간에 매핑하여 이해할 수 있도록 하기 위함입니다. 이 숫자들은 텍스트의 의미, 문맥 등을 나타내는 다양한 차원을 포함하며, 따라서 단순한 ‘키:값’의 참조보다는 텍스트의 세밀한 의미를 포착하여 모델이 처리할 수 있는 형태로 변환하는 과정입니다. 즉, 이 숫자들은 실제 텍스트의 의미를 대체하여 언어 모델이 텍스트 정보를 처리하고 이해하는 데 사용됩니다.

질문에 대한 답변이 도움이 되었길 바랍니다. 추가적인 질문이 있으시면 언제든 문의주세요.