포스트

이로운 씨 문제

이로운 씨 문제

이번에 6시간 짜리 RAG 강의를 제작했다. 여기서 했던 단일 프로젝트 중에 가장 컸던 것이다. 준비를 하며 스스로도 많은 것을 배울 수 있었다. 그 중 인상적인 것을 몇 가지 남겨보려고 한다.

RAG에 하이브리드 검색을 붙이자

RAG에서 흔히 적용하는 기법 중에 하이브리드 검색이 있다. 벡터 검색의 단점을 보완하기 위한 방법이다. 전통적인 자연어 검색 방법인 키워드 매칭을 벡터 검색과 함께 하는 것이다. 벡터 검색이 의미 유사도로 검색을 한다면 키워드 매칭은 특정 단어가 등장하는지를 본다.

키워드 매칭을 위해서 한국어는 특수한 전처리를 해줘야 한다. 변형이 많은 한국어의 특성상 같은 의미의 단어가 여러 형태로 나타나기 때문이다. 형태소 분석기를 이용해서 조사, 어미 등을 분리하고 단어의 원형을 복원한다.

RAG는 문서를 바탕으로 한다. 강의에서 사용할 문서를 LLM으로 제작했다. 우연히(?) LLM이 만든 사람 이름 중에 “이로운”이 있었다. 그게 문제가 됐다.

이로운 씨 문제

키워드 검색은 단어를 가지고 검색하는 것이니 사람 이름 등 고유명사로 검색할 때 효율적이다. 그래서 테스트를 위해 “이로운”의 역할이 뭔지 검색을 해봤다. 문서 집합에는 분명 그가 프로젝트 총괄 PM이라고 되어 있었다. 하지만 검색 결과가 나오지 않는다. LLM이 엉뚱한 대답을 한다.
문제를 파기 시작했고 형태소 분석기가 원인임을 찾아냈다. “이로운”을 넣으면 형태소 분석기는 “이롭” + “ㄴ”으로 단어를 나눈다. 처음엔 이게 뭐지? 했었다. NLP에 경험이 있는 사람들에게는 전혀 낯설지 않은 문제일 것이다. 이로운 이라는 단어는 “이롭다”가 형용사로 변형된 것이기 때문이다. 하지만 내가 찾는 “이로운”은 사람 이름이다. 잘라서는 안 된다. 형태소 분석기가 단어를 잘랐기 때문에 검색이 안됐던 것이다.

이건 너무 빈번한 문제이기 때문에 형태소 분석기는 보통 해결책을 가지고 있다. 가장 단순한 것은 자르지 말아야 할 단어를 “사전”으로 등록해두는 것이다. 그래서 사전에 등록했다. 그리고 문제는 해결됐다. “이로운”을 검색하면 내가 예상한 결과가 잘 나온다.

하지만 이 방법은 단점이 있다. 형용사로서의 “이로운”도 사람 이름으로 취급하게 된다는 것이다. 딸려오지 말아야 할 문서도 검색에 걸리게 되는 것이다. 이른바 recall - precision tradeoff 상황이 된다. 하나를 잡으면 하나를 놓치게 되는 상황이다. 하지만 좀 더 생각을 해보면 이것은 문제가 아닐 수 있다. 형용사 “이로운”으로 키워드 검색을 하는 것은 좀 이상하기 때문이다.

근데 이걸로 끝일까? 비슷한 상황은 얼마든지 발생할 수 있다. 같은 단어가 다른 걸 지칭하는 경우는 많기 때문이다. 사람은 어쩌다 헷갈리기는 해도 문맥으로 거의 완벽히 추정을 한다. 자연어 처리 쪽에서는 이게 확률로 바뀐다. 형태소 분석기는 “대충 90%쯤 맞아요” 가 최선인 것이다. 나머지 10%는 어떻게 할까?

사전 등록으로 일단락을 지었지만 기분이 개운치가 않다. 문제가 100% 해결된 느낌이 안 든다. 금융권에서, 애플리케이션 로직을 개발하던 내 입장에서는 이런 불확실한 해결 방법이 결함처럼 느껴진다. 반대로 NLP나 ML 쪽에서는 이런 상황이 일상일 것이다.

비결정적 세계

개발자로서 나의 배경이 결정론적 프로그래밍이 지배적인 금융 도메인이라서 그런 것일수도 있다. 거기서는 99% 확률로 정확한 것은 그냥 결함이라고 한다. 이자 계산이 1% 확률로 틀릴 수 있다는 건 받아들일 수 없는 것이다(물론 가끔 발생하지만..).

흔히 말하는 LLM의 특징 중 비결정적이라는 것이 있다. 내가 만난 문제는 아주 아주 기초적인 수준의 NLP에서 발생하는 것이다. 근간부터 비결정적인 것이다. 아니 그냥 자연어라는 게 내포한 특징이라고 봐야할 것 같다.

AX(AI Transformation)가 현재의 트렌드이다. 그동안 결정론적 IT 세상에 살고 있던 사람들은 이걸 어떻게 받아들일까? 이런 상황이 펼쳐지지 않을까? “이건 왜 안돼?” -> “원래 확률이 80% 정도예요. 얘는 되잖아요. 평가에서도 성능이 좋게 나왔다구요.” -> “그딴 게 어딨어. 결함이네.” -> “아니 이건 원래 확률 모형이라고요!” -> “모르겠고 이거 되게 잡아.” -> 잡으니까 안 잡아야 할 것도 잡힘. -> “이건 또 왜이래?” …

앞으로 AX가, 엔지니어들이 넘어야 할 산이 높아 보인다.

PS. 이 와중에 클로드는 이상한 짓을 한다..

클로드야 왜 그래

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.