아무것도 모르던 상태에서 RAG 앱을 만들기까지
어제 저는 제가 작성한 NLP 노트 31페이지를 읽으며 시간을 보냈습니다.
하지만 아무것도 이해하지 못했습니다.
문제는 저 자신이라고 생각했습니다. 하지만 아니었습니다. 문제는 제 방식이었습니다. 노트를 읽는 것은 학습이 아닙니다. 제가 가진 노트는 초보자가 아닌 전문가를 위한 것이었습니다.
저는 접근 방식을 바꿨습니다. 읽는 것을 멈췄습니다. 대신 질문을 던졌습니다. 쉬운 예시를 활용했습니다. 개념을 이해하기 전까지는 전문 용어를 사용하지 않기로 했습니다.
하루가 끝날 무렵, 저는 RAG 앱을 구축했습니다. 제가 NLP의 네 가지 핵심 기둥을 학습한 방법은 다음과 같습니다.
- Bag of Words 컴퓨터는 오직 수학만 이해합니다. 텍스트를 처리하려면 단어를 숫자로 변환해야 합니다.
이메일을 스팸인지 아닌지로 분류하고 싶다고 가정해 봅시다. 이메일에 포함된 모든 단어를 나열합니다. 각 단어가 몇 번 나타나는지 셉니다. 이렇게 하면 이메일은 숫자 행렬로 변환됩니다.
결함은 무엇일까요? 단어의 순서를 무시한다는 점입니다. "Dog bites man"과 "man bites dog"는 이 방식에서 동일하게 보입니다.
- TF-IDF Bag of Words는 모든 단어를 동일하게 취급합니다. 하지만 "the"는 "viagra"만큼 중요하지 않습니다.
TF-IDF는 두 가지 규칙을 사용합니다:
- Term Frequency (TF): 한 이메일 내에서 특정 단어가 얼마나 자주 나타나는가.
- Inverse Document Frequency (IDF): 모든 이메일 중에서 특정 단어가 얼마나 희귀한가.
이 수학적 계산은 "the"와 같은 불필요한 단어의 영향력을 줄이고, 중요하고 희귀한 단어를 강조합니다.
- Embeddings Bag of Words는 "money"와 "cash"가 서로 관련이 없다고 생각합니다. Embeddings는 이 문제를 해결합니다.
거대한 지도를 상상해 보세요. 모든 단어는 그 지도 위의 점입니다. 의미가 비슷한 단어들은 서로 가까이 위치합니다. "Money"와 "cash"는 이웃입니다. "Banana"는 멀리 떨어져 있습니다.
컴퓨터는 단어가 함께 등장하는 맥락을 보고 이 위치를 학습합니다. 만약 "money"와 "cash"가 모두 "bank"나 "pay" 근처에서 나타난다면, 컴퓨터는 두 단어를 서로 가까운 곳에 배치합니다.
- RAG (Retrieval-Augmented Generation) 이 모든 것이 하나로 합쳐지는 지점입니다.
파일에 있는 모든 노트가 지도 위의 점이라면, 가장 가까운 점들을 찾아 답변을 얻을 수 있습니다.
RAG 프로세스:
- 질문을 하나의 점으로 변환합니다.
- 지도에서 가장 가까운 노트 점들을 찾습니다.
- 그 노트들을 AI에게 전달합니다.
- AI에게 오직 그 노트들만을 사용하여 답변하도록 지시합니다.
이렇게 하면 AI가 추측하거나 거짓말을 하는 것을 방지할 수 있습니다. AI가 실제 데이터를 사용하도록 강제하는 것입니다.
저는 이 단계들을 사용하여 저의 앱, Synapse를 구축했습니다. 단 하루 만에 아무것도 모르는 상태에서 작동하는 시스템을 만들어냈습니다.
교훈: 읽는 것을 멈추고, 질문을 시작하세요. 어떤 개념을 쉬운 비유로 설명할 수 없다면, 아직 그것을 제대로 아는 것이 아닙니다. 이해했다는 것을 증명하기 위해 무언가를 직접 만들어 보세요.
출처: https://dev.to/sabimantock/from-i-understood-nothing-to-building-a-rag-app-4033
선택 사항 학습 커뮤니티: https://t.me/GyaanSetuAi