요즘 뉴스, 유튜브를 보면 첫째도 AI, 둘째도 AI, 셋째도 AI이다. 그만큼 AI가 화두이고, 최신 트렌드인것은 분명하다.
그렇다면 Gen AI가 무엇일까? 나름대로 정의하고 이걸 내재화할 수 있을까에 대한 고민을 하게되었다.
과거에는 GPT를 비롯한 AI 서비스를 이용하면, 내가 바보가 되는게 아닐까? 하는 생각이 있었는데 요즘은 AI 서비스를 이용하는것이 필수라는 생각이 든다.
다만 맹목적으로 AI 서비스를 이용하기보다는 아주 간단하고, 반복적인 일은 AI 서비스로 대체하고, 기획 등과 같은 고도화 된 업무에 많은 시간을 쏟게 되는것 같다.
- 이건 회사와 사람마다 생각이 다른것 같다.
- 일부는 AI에 의존하는것을 아주 반대하는 사람도 있다. 그리고 일부는 반드시 꼭 사용해야 된다는 입장이다.
필자는 후자의 생각에 더 가깝다. 그래서 Gen AI가 뭔지, LLM이 뭔지? 이걸 회사에 내재화할 수 없을지에 대해서 정리를 해보려고 한다.
개인적으로 공부하고 하는것이기 때문에 일부 잘못된 내용이 있을 수 있습니다.
잘못된 내용은 지적해주시면 적극 반영하도록 하겠습니다 :)
Gen AI(Generative AI)
Gen AI는 소위 생성형 인공지능 기술이라고 불린다. 대화, 이미지, 동양상 등 새로운 컨텐츠와 아이디어를 생성하는 AI의 일종이다.
이전에는 단순히 데이터 분류 등 제한적으로 사용되었다면, 최근에 Gen AI는 인간 언어, 프래그래밍 인어, 예술 등 다양하고 복잡한 주제를 학습하여 다양한 목적을 위해 사용된다.
ChatGPT는 안써본 사람이 없을것 같은데, GPT가 대표적인 Gen AI 서비스이다.
- 요즘 GPT는 못하는거싱 없는 수준이다.
- 프로그래밍 언어 생성과 리뷰는 물론이거니와 인간의 영역이라고 생각되었던 음악과 이미지 생성도 잘한다.
LLM(Large Langure Models)
LLM은 대형 언어 모델로 불리며, 자연어를 처리하고 이해하는것을 목적으로 설계되었다. 즉, Gen AI의 한 분야인것이다.
방대한 양의 텍스트 데이터를 학습, 훈련하여 다양한 사용자 질문과 프롬프트에 일관된 응답을 생성하는것이다.
Gen AI와 LLM만 본다면 아주 혁신적인 기술인것 같지는 여기에는 문제점이 존재한다. 많이 들어보셨을 `최신성`과 `환각`이다.
최신성
LLM은 사전에 많은 데이터를 학습하고, 학습한 데이터를 기반으로 사용자 응답을 만들어낸다. 그렇기 때문에 얼마나 최신의 데이터를 학습했는지가 관건이다.
하지만 LLM은 이름에서 알 수 있듯이, `Large`이다. 즉 아주 큰 데이터를 학습하고 많은 파라미터를 가지고 있기 때문에 매일매일 데이터를 학습하여 최신의 모델을 만들어낼 수가 없다.
- 그래서 GPT도 보면 최신의 데이터는 알 수 없는것이다.
물론, 물리적으로 안되는것은 아니다. 아주 큰 컴퓨팅 파워를 가지고 있으면 매일매일 할 수도 있을것 같다.
하지만 비용이 많이 들고 잘못된 데이터 또는 일부 작은 수정이 필요한 경우에도 모델을 처음부터 다시 만들어야 하기 때문에 적절하지 않다.
환각
Halluciation이라고 한다.
최신성을 보장못하는 것은 어느정도 이해할 수 있을것 같은데 환각, 즉 잘못된 데이터를 응답해주는것은 AI 서비스에 큰 단점이라고 생각한다. 아래의 예시를 보면 맥아더 장군과 남북 전쟁은 둘 다 학습된 데이터이지만, 서로 연도가 달라서 매칭이 될 수 없다.
하지만 GPT는 이 둘을 적절하게 연관하여 `마치` 있는 사건인것처럼 말하고 있다.
- 초기 GPT에는 세종대왕 맥북 사건 등 환각이 많았는데 이것도 점차 새로운 모델이 만들어지고 하면서 사라지고있는 추세이다.
그래서 이러한 문제를 해결하기 위해서 Prompt engineering, RAG, Fine-Tuning 등의 기법을 LLM 프로세스에 적용한다.
Prompt, RAG 등은 기존의 Gen AI의 `최신성`과 `환각`의 문제점을 보완하기 위해서 나온 프로세스 또는 기법이라고 생각한다.
새로운 기술이라기 보다는 페르소나를 정의하거나 적절한 응답을 위해 유사성이 있는 컨텍스트를 사용하기 때문이다.
Gen AI 응답 품질 높이는 방법
응답 품질을 높이는 위한 방법은 많이 있지만, 가장 쉬운 Prompt enginerring과 RAG에 대한 개념만 알아보도록 하자!
Prompt engineering
Prompt는 쉽게 말해서 AI 모델에 전달하는 지시어, 페르소나이다.
Prompt engineering은 AI 응답 품질을 높이는 가장 중요하면서 가장 간단한 방법이다.
즉 , Prompt engineering이라고 하는 것은 이러한 페르소나를 미리 정의하여 AI에 전달하는 것이다.
- 아래는 Askup에서 제공하고 있는 Prompt enginnering의 예시이다.
위 예시에서 알 수 있듯이 사용자는 `전화번호`만 질의하였다. 하지만 사용자 입력 데이터 외 여러가지 데이터가 추가된다.
먼저 AI의 페르소나를 정의한다. 페르소나 정의 유/무에 따라서 답변이 차이가 많이 난다.
RAG
검색 증강 생성이라고도 볼리며, 이름에서도 알 수 있듯이 정보 검색 모델 + 생성 모델을 결합한 형태이다.
즉, 데이터를 사전에 벡터화하여 외부 소스에 저장하고, 사용자 질의에 따라 외부 소스에서 유사도 높은 데이터를 검색하여 생성에 이용하는것이다.
기존 LLM이 `생성 시스템`만 담당했다면 RAG는 `정보 검색 시스템` 프로세스가 추가된것이다.
RAG이 없는 경우에는 LLM은 사용자 입력을 사전에 훈련된 정보와 이미 알고있는 데이터를 기반으로 응답을 생성한다.
하지만 RAG이 추가된 이후에는 사용자 입력을 먼저 새로운 데이터 소스에서 검색을 하고, 검색 결과와 사용자 입력을 같이 LLM에 제공한다. 그래서 LLM은 기존의 학습 데이터 + 새로운 지식 데이터를 사용하여 더 좋은 응답을 생성한다.
RAG에서 핵심은 사용자 질의에 대한 유사도 높은 데이터를 외부 지식데이터에서 검색하는것이다.
이때 사용되는 알고리즘은 여러가지가 있는데, 가장 일반적인것이 키워드를 검색하는 Lexical Search와 문맥을 검사하는 Semantic Search와 이다.
Lexical Search
키워드 검색이라고 불리며, 말 그대로 사용자가 입력한 키워드가 얼마나 자주 검색 되는지가 핵심이다.
기존의 검색 기법이나, 유사한 의미의 다른 언어로 사용되는 경우 그리고 단어와 단어 사이의 의미가 충분하지 않으면 검색 결과가 현저하게 떨어지는 문제점이 있다.
예를들어서) 키워드 검색에서는 "강남역 주변 헬스장"과 "강남역 인근 헬스장"은 서로 다른 검색 결과를 제공한다.
"주변"과 "인근"은 같은 의미로 사용되지만 서로 다른 키워드이기 떄문이다.
그래서 나온것이 의미 검색의 Semantic Search이다.
Semantic Search
Semantic Search는 문맥, 의미를 검색하는 기법이다. (자세한건 아직 알 수 없으나..) 기본적으로 텍스트를 벡터화해서 사용한다.
벡터화하기 때문에 유사한 의미의 데이터는 유사한 벡터를 가지게 된다.
벡터화했을 때는 위의 "주변"과 "인근"은 서로 같은 의미이기 때문에 유사한 벡터값을 가지게 된다.
- 중요한것은 어떤 데이터를 벡터화시키고, 어떻게 벡터화 시키고 어떤 알고리즘으로 검색하는 것이 핵심이다.
- 아직 많이 부족한 부분이고, 공부를 하고 있는 중이다...
하지만 Lexical Search 와 Semantic Search의 각 장단점이 있기 때문에 어느한쪽은 선택하기 어렵다.
그래서 요즘은 대부분 Lexical + Semantic을 적절한 가중치를 두어 사용하는 Hybrid Search를 많이 사용한다.
AI, 데이터 벡터화와 각 검색 기법은 이전에 해본적이 없는 영역이라서 모르는것이 투성이고, 이게 맞나? 이렇게 하면 되는가? 하는 생각도 많이 든다. 하지만 AI가 대두되고 강조되고 있는 세상에서 꼭 익혀야할 기술이라고 생각한다.
Gen AI를 사용하면 많은 부분을 대체할 수도 있을것 같고, 기존에는 구현하기 어려웠던것도 쉽게 구현할 수 있다고 한다.
그리고 개발 영역과 프로세스에서도 많은 부분에 혁신을 불러 올 수 있을것 같다.
매트릭스와 같이 AI가 지구를 침공하는 영화를 영화속에서만 봤는데 이제 멀지 않은 미래인것 같다.
지피지기면 백전백승이라고 했다ㅋㅋㅋㅋ 내가 침공당하지 않으려면 적부터 잘 알아햔다.
다음에는 실제로 RAG을 어떻게 구현할 수 있을지에 대해 검토해보고, 작은 PoC를 해볼 예정이다.
어제보다 더 나은 오늘의 내가 되기를
'기술 이모저모 > [Ops] Devops' 카테고리의 다른 글
[AWS][AI] AWS Bedrock KnowledgeBase 사용 방법 (1) | 2024.10.05 |
---|---|
[Finops] AMD vs ARM, AWS Graviton Node (1) | 2024.09.22 |
[LGTM] Observability 기술스택 변경 여정 두번째, PLG 스택 배포 (0) | 2024.03.10 |
[LGTM] Observability 기술스택 변경 여정 첫번째 (0) | 2024.03.09 |
[MSA] MSA 구조란 무엇이고, 왜 다들 열광하는가? (2) | 2024.01.07 |