23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
자연어 검색(Natural Language Search)은 일상 언어로된 질의를 분석하고 이를 기반으로 최적의 검색 결과를 제공하는 기술입니다.
키워드 매칭을 넘어 사용자의 문맥과 의도를 정교하게 해석하는 것이 핵심이며 특히 음성 검색이나 메신저 같은 인터페이스에서 유용하게 활용될 수 있습니다.
이를 구현하기 위해 전통적인 자연어 처리(NLP) 기술은 키워드 중심의 검색 방식에서 벗어나 문맥을 분석하고 사용자의 의도를 파악하기 위해 다양한 접근 방식을 시도해 왔습니다.
그러나 여전히 사용자 질의를 완벽하게 이해하고 정확한 결과를 제공하는 데에는 한계가 있었으며 더욱 정교한 기술 개발이 필요한 상황이었습니다.
최근 대규모 언어 모델(LLM, Large Language Model)의 등장으로 이러한 자연어 검색 패러다임이 급격히 변화하고 있습니다.
LLM은 방대한 데이터를 학습하여 문맥을 이해하고, 복잡한 질의에도 정확한 사용자의 의도를 이해하고 개체를 특정하는데 탁월한 성능을 보여줍니다.
이를 통해 검색 시스템은 단순한 키워드 매칭을 넘어 사용자의 의도를 정교하게 분석하고, 더욱 정확하고 유의미한 결과를 반환할 수 있게 되었습니다.
특히 질의가 길거나 모호한 경우, 연속된 질의가 이어지는 멀티턴(multi-turn)상황에서도 LLM을 활용한 자연어 검색은 기존 기술대비 훨씬 자연스럽고 만족스러운 결과 제공을 가능하게 되었습니다.
이러한 흐름에서 검색서비스팀은 자연어 검색을 매끄럽게 지원하는 뮤직 에이전트, 미디어 에이전트, 증권 에이전트를 상용화하였습니다.
해당 에이전트 서비스들은 과거 키워드 단위의 질의 입력을 넘어 자연어 문장을 입력받아 검색을 수행하고 정해진 작업을 수행하는 기능을 주된 역할로 하고 있습니다.
예를 들어 뮤직 에이전트는 "현재 플레이리스트에 로제의 아파트를 넣어줘" 같은 구체적인 작업을 수행할 수 있으며,
미디어 에이전트는 "오징어게임2의 주연배우와 줄거리를 알고 싶어" 같은 두가지 정보를 동시에 요청하는 복합 질의를 수행할 수 있습니다.
또한 증권 에이전트는 "SK텔레콤 앞으로 전망이 어때?" 같은 다소 모호한 질의에도 사용자가 원하는 정보를 정확하게 답변할 수 있습니다.
검색서비스팀이 개발한 에이전트의 기본적인 구조는 아래와 같습니다.
미디어 에이전트를 예시로 하였으나 다른 에이전트도 이와 유사한 구조로 구성된 점 참고 부탁 드립니다.
아래 에이전트 처리 과정에서 초록색 음영처리된 부분,
즉, 사용자의 자연어 질의를 분석하는 부분과 검색추천 결과를 활용하여 사용자에게 제공될 최종 답변을 생성하는 부분이 LLM이 관여하는 부분으로
에이전트가 자연어 질의를 해석하고 정당한 결과를 반환하는데 핵심적인 역할을 담당합니다.
논리적으로 간단한 구조임에도 불구하고 LLM의 특성으로 인해 에이전트 개발 과정에서 여러 가지 문제에 직면하였습니다.
이러한 문제를 해결하기 위해 다양한 기법과 최적화 방안을 적용하였습니다.
이 중에서 Entity RAG와 Knowledge-aware retrieval를 소개하고자 합니다.
Entity RAG는 LLM의 기본적인 학습 주기로 인해 최신 데이터에 대한 지식이 부족하다는 한계를 넘기 위해 도입하였습니다.
Entity RAG를 통해 LLM은 최신 데이터에 대한 이해 능력을 향상시킬 수 있으며, 극단적으로 표현하여 시스템으로 수초전 인입된 신규 개체도 인식할 수 있는 능력을 갖게 되었습니다.
이를 통해 미디어 에이전트는 이제 막 개봉한 VOD 신작의 제목을 정확하게 인지할 수 있으며, 뮤직 에이전트는 어제 발매된 신곡을 정당한 개체로 인식하여 올바른 답변을 생성할 수 있습니다.
Knowledge-aware retrieval은 사용자의 발화내 포함되어있는 키워드, 테마 등의 지식체계와 실제 검색추천엔진이 보유하고 있는 지식체계의 상이함을 극복하는데 활용됩니다.
이를 통해 사용자가 에이전트에 어떤 테마, 상황, 기분을 제시하더도 이에 걸맞는 최적의 검색추천 결과를 반환할 수 있고,
또한 애매모호한 상황에 대한 질의, 혹은 신조어를 포함하는 질의에 대해서도 최선의 결과를 반환하는 성능을 보여줍니다.
Entity RAG와 Knowledge-aware retrieval에 대해서 자세히 설명을 드리도록 하겠습니다.
LLM은 일반적으로 프롬프트를 활용하여 특정 작업을 수행하도록 명령할 수 있습니다.
프롬프트는 단순한 입력값이 아니라, LLM이 원하는 방식으로 정보를 처리하도록 유도하는 지침 역할을 합니다.
예를 들어 "제시된 문장에서 사용자의 의도와 주요 개체를 식별하라"는 명령을 포함한 프롬프트를 입력하면 LLM은 인입된 문장을 분석하고 의도와 개체를 추출할 수 있습니다.
현재 검색서비스팀의 에이전트에서는 문장형 질의가 인입되면 프롬프트를 활용하여 사용자의 질의 의도와 질의내 개체를 파악하는 작업을 수행합니다.
예를 들어 미디어 에이전트 내에서 의도(intent) 와 개체(entity) 예시는 다음과 같습니다.
의도(intent) | 설명 | 개체(entity) | 설명 |
|---|---|---|---|
search_contents | VOD 검색 의도 | title | 작품명 개체 (예시 : 범죄도시) |
search_youtube | 유튜브 검색 의도 | people_name | 배우, 감독 등 사람이름 개체 (예시 : 마동석) |
free_talk | 에이전트와 자유로운 대화를 의도 | channel | 방송국 채널명 개체 (예시 : KBS, SBS) |
not_support | 에이전트가 지원하지 않는 의도 | price | 작품 가격에 대한 개체 (예시 : 무료, 유료) |
... 이외 다수 ... | ... 이외 다수 ... |
하지만 LLM은 자연어 해석 차원에서 기존 NLP 기반의 의도 및 개체 분류에 비해 압도적인 성능을 발휘하기는 하지만 반대로 최신 데이터에 취약하다는 단점을 갖고 있습니다.
예를 들어 널리 알려진 유명한 배우(ex. 최민식, 톰크루즈)에 대해서는 높은 확률로 배우로 인지하고,
알파벳 대문자 세개 혹은 네개로 구성된 단어(ex. SBS, JTBC)에 대해서는 높은 확률로 채널명으로 인지할 수 있습니다.
하지만 최근에 데뷔한 신인이거나 중의적으로 해결될 수 있는 여지가 있는 표현인 경우 LLM은 의도된 개체명으로 인지하는데 어려움을 겪습니다.
미디어 에이전트 개발 기간동안 곤혹을 치렀던 대표적인 사례는 "고민시" 배우입니다.
비교적 최근에 주목을 받은 배우로 LLM이 충분한 학습데이터를 확보하지 못하였고 중의적으로 해석될 여지가 있는("고민시"라는 단어는 "고민이 있을때"로 해석될 여지가 있습니다)
상대적으로 독특한 이름이기 때문에 LLM이 배우명으로 인지하지 못하고 테마로 인지하는 경향이 있었습니다.
그 외 일반 문장형으로 구성된 영화, 드라마 작품도 이와 유사한 문제가 있었습니다. "악이 도사리고 있을때" 라던지, "누가 사라를 죽였을까?" 같은 작품은 모두 유명한 신규 VOD 작품명이지만
LLM에게 해석을 맡겼을 때 의도하는 대로 작품명으로 인지되지 못하고 상황이나 분위기, 일반 문장으로 인지되는 오류를 보였습니다.
Entity RAG는 이러한 문제를 극복하고자 LLM 프롬프트 내에 의도 및 개체 인식에 도움이 될만한 정보를 삽입하는 행위를 의미합니다.
즉, 기존 검색시스템을 활용하여 사용자 질의에 포함되어있는 유의미한 개체를 가볍게 검색하여 (이러한 가벼운 검색과정을 검색서비스팀에서는 경량검색으로 정의하였습니다)
LLM 분석을 유도하는 정보를 삽입하게 됩니다.
이 과정에서 삽입된 정보가 분석에 너무 깊이 관여하는 경우 LLM의 자유도를 해칠 수 있으며, 자칫 LLM이 아닌 Entity RAG가 선행적으로 정답을 결정하는 행위가 될 수 있습니다.
이를 방지하기 위해 경량검색으로 획득된 정보는 프롬프트 내 가볍게 참고될 수 있도록 개발하였습니다.
LLM의 최신 데이터에 대한 정확도를 향상시키기 위한 방법은 여러가지가 있습니다.
아래는 잘 알려진 여러가지 기법과 각각의 반영주기, 장단점에 대한 비교입니다
방안 | 반영주기 | 장점 | 단점 |
|---|---|---|---|
LLM 파인튜닝 | 주단위 이상 | LLM 자유도가 손상되지 않음 / 오류 케이스에 대한 지속적인 개선으로 지식이 축적됨 | 반영주기가 늦음 / 매 파인튜닝 수행시 기존 시나리오 정상동작 검증에 많은 자원소모 필요함 |
프롬프트 내 few-shot 추가 | 일단위 작업 | LLM 자유도가 손상되지 않음 / 시스템 배포 필요하지만 상대적으로 빠른 반영이 가능함 | Input 토큰의 제한으로 등록 가능한 few-shot의 최대치가 제한되어 있음 / Input 토큰량 증가로 인한 비용 이슈 |
직접적인 운영 | 즉시 반영 | 빠른 반영이 가능함 | LLM 자유도가 손상됨 / 시맨틱 단위의 정확도 향상은 불가능함 |
이처럼 다양한 방법이 LLM의 최신 데이터에 대한 정확도를 향상시키기 위해 활용 가능하지만
반영주기와 LLM의 자유도 손상, 해당 작업에 필요한 자원 소모 등을 고려했을 때 각자 단점을 갖고 있습니다.
경량검색을 활용한 Entity RAG는 위의 일반적인 접근 방안의 단점을 모두 회피할 수 있으면서 동일한 토큰 소모 비용과 즉각적인 반영을 특징으로 합니다.
미디어 에이전트에서 앞서 설명한 "고민시 나오는 아무도 없는 숲속에서 보고 싶어" 질의를 예시로 설명하면 Entity RAG는 다음과 같은 순서로 동작합니다.
발화가 인입되면 검색엔진을 통해 해당 발화내에 최종 개체로 인지해야 할법한 개체 후보군을 추출합니다.
앞선 질의의 경우에는 "고민시"라는 배우명과 "아무도 없는 숲속에서", "아무도 없는 곳"이라는 작품명을 개체 후보군으로 추출합니다.
단, 앞서 기술한대로 이 과정에서 경량검색이 추출한 개체는 LLM이 질의분석이 위해 참고자료로 활용될 뿐 정답을 강제하지 않습니다.
최초 질의 : "고민시 나오는 아무도 없는 숲속에서 보고 싶어"
경량검색 결과
"고민시" → 배우명
"아무도 없는 숲속에서" → 작품명
"아무도 없는 곳" → 작품명
이렇게 추출된 개체 후보군은 아래의 과정을 통해 프롬프트내 삽입되어 활용됩니다.
아래 프롬프트 조각은 발화 분석시에 RAG Information을 참고 해서 의도와 개체를 정의하라는 Instruction 입니다.
또한 다음 프롬프트 조각은 해석에 참고할 RAG Information의 예시를 보여줍니다.
이러한 과정을 통해 프롬프트는 미디어 도메인 내에 의도와 개체를 인식하는데 활용될 수 있는 정보를 참조할 수 있으며, 결론적으로 기존대비 보다 정확한 질의 분석을 수행할 수 있습니다.
이러한 정보의 주입은 검색시스템을 활용하기 때문에 색인 데이터가 추가되는 순간 바로 참조가 가능하고,
의도대로 동작하지 않는 경우 검색시스템만을 제어하여 분석 결과를 원하는 방향으로 유도할 수도 있습니다.
경량 검색을 활용한 Entity RAG 도입은 에이전트의 질의 해석 품질을 전반적으로 향상시킬 수 있습니다. 특히, 신규 콘텐츠 검색 시 그 효과가 더욱 두드러집니다.
따라서 에이전트가 최근 출시 콘텐츠를 기존대비 얼마나 잘 인식하는지를 확인하여 품질 향상 확인을 시도하였습니다.
Entity RAG를 도입하고 특정 일자(2024년 08월 01일) 이후 출시된 콘텐츠 1,150건에 대해 콘텐츠 명 단독 발화를 유입했을 때
이를 정당하게 "콘텐츠 명"으로 인식하는지 정량적으로 체크하였으며 결과는 다음과 같습니다.
아래 수치처럼 Entiy RAG를 활용할 경우 신규 콘텐츠에 대해 더 정확하게 개체 분석이 되는것을 확인할 수 있습니다.
기존 개체 인식율 | Entity RAG 추가 후 개체 인식율 | |
|---|---|---|
인식 적합 비율 | 89.5% | 95.5% |
최종 결과 적합 비율 | 83.91% | 92.96% |
추가로 정성적으로 몇가지 개별 케이스를 확인한 결과는 다음과 같습니다.
"사랑과 우정사이"는 2024년 09월 21일 새롭게 출시된 영화로 2024년 10월 28일 전후에서 비교한 테스트 결과는 아래와 같습니다.
10월 28일 이전까지 "사랑과 우정사이"를 테마로 인지하여 사랑과 우정을 주제로 한 작품 결과 노출되는 상황에서
"사랑과 우정사이"를 올바른 작품명으로 인식하고 해당 VOD 결과 노출하는 결과를 확인할 수 있습니다.
2024년 10월 28일 이전 결과 | 2024년 10월 28일 이후 결과 |
|---|---|
"악이 도사리고 있을 때"는 2024년 10월 09일 새롭게 출시된 드라마로 2024년 10월 28일 전후에서 비교한 테스트 결과는 아래와 같습니다.
10월 28일 이전까지 "악이 도사리고 있을때"를 특정 상황으로 인지하고 공포 장르 작품을 반환하던 상황에서 "악이 도사리고 있을때"를 올바른 작품명으로 인식하고
해당 VOD 결과를 노출하는 결과를 확인할 수 있습니다.
2024년 10월 28일 이전 결과 | 2024년 10월 28일 이후 결과 |
|---|---|
멀티미디어 영역에서 키워드 및 테마 검색추천 질의는 자주 인입되는 고빈도 발화에 해당됩니다.
아래는 2025년 2월 기준 최근 한달간 뮤직/미디어 에이전트에 인입된 상위 Top 발화내 키워드 및 테마 검색추천 질의 비율입니다.
수치에서 알 수 있듯이 에이전트 인터페이스에서 키워드 및 테마성 발화의 유입은 생각보다 높은 것을 알 수 있습니다.
뮤직 에이전트 상위 발화 내 키워드 및 테마 질의 비율 : 47.21%
예시
몽글몽글 마음 설레는 노래 찾아줄래?
달달 청량한 느낌의 곡도 담아줘
꿀꿀한 기분일 때 텐션업되는 노래 있을까?
미디어 에이전트 상위 발화 내 키워드 및 테마 질의 비율 : 34.86%
예시
새해에 어울리는 영화
새해에 몰아보기 좋은 영화
가족과 함께 보기 좋은 영화 추천해줘
이런 상황에서 자연스럽게 사용자가 이해하고 있는 키워드 및 테마 체계와 에이전트가 이해할 수 있는 키워드 및 테마 체계가 상이한 문제가 발생하게 됩니다.
즉, 사용자는 "카페에서 듣기 좋은 노래 들려줘", "주말에 늦잠자고 일어나 보기 좋은 VOD"처럼 본인의 상황에 따라 다양한 표현으로 질의를 할 수 있지만
에이전트가 보유한 지식 체계로는 해당 표현을 이해하지 못할 가능성이 매우 높습니다. 이 때 두 표현/지식 체계간 의미적 연결이 성립되어야 사용자에게 올바른 검색추천 결과를 제시할 수 있습니다.
검색서비스팀에서는 이러한 상이한 지식체계에 의미적 연결을 위해 Knowledge-aware retrieval 를 도입하였습니다.
Knowledge-aware retrieval를 설명하기에 앞서 시맨틱 검색을 간략히 언급할 필요가 있습니다. 시맨틱 검색(의미 기반 검색)은 단순한 키워드 매칭이 아닌
사용자의 검색 의도와 문맥을 이해하여 가장 관련성이 높은 정보를 제공하는 검색 기술입니다.
이를 위해 자연어 처리(NLP), 머신 러닝, 벡터 임베딩, 지식 그래프 등의 다양한 기술이 활용되며, 기존의 키워드 기반 검색은 정확한 단어 일치 여부에 의존하지만,
의미 기반 검색은 단어 간 유사성과 문맥을 고려하여 더욱 정교한 검색 결과를 제공하는 특징을 갖고 있습니다.
뉴스 도메인을 예시로 시맨틱 검색을 활용하는 방안에 가볍게 살펴보겠습니다.
사용자가 뉴스 검색 엔진에서 "AI 기술 발전"을 검색한다고 가정해보겠습니다.
기존의 키워드 검색 방식에서는 "AI", "기술", "발전"이라는 단어가 포함된 기사만 검색될 뿐,
의미적으로 관련이 깊은 "인공지능", "머신러닝", "혁신" 등의 키워드가 포함된 기사는 검색되지 않을 가능성이 큽니다.
그러나 실제로 사용자가 원하는 정보는 이러한 연관 키워드를 포함한 기사일 가능성이 높습니다.
이러한 한계를 극복하기 위해 시맨틱 검색을 적용하면, "AI 기술 발전"을 검색할 때 AI 관련 트렌드, 머신러닝 연구, 산업 혁신 등의 기사까지 확장하여 검색할 수 있습니다.
이를 통해 유사한 의미를 가진 다양한 기사를 추천할 수 있어 검색 경험이 더욱 향상됩니다.
특히, 뉴스 검색이 단순한 정보 검색을 넘어 에이전트 기반의 질의응답 시스템으로 확장된다고 가정하면, 이러한 차이는 더욱 극명해집니다.
특정 질문에 대한 답변을 찾는 경우, 질문에 포함된 키워드가 그대로 포함된 문서를 찾는 것보다, 질문의 의도와 의미적으로 연관된 문서를 검색하는 것이 훨씬 중요합니다.
시맨틱 검색을 활용하면 이러한 시나리오에서도 보다 정확하고 의미 있는 검색 결과를 기대할 수 있습니다.
Knowledge-aware retrieval는 사용자가 이해하고 있는 키워드 및 테마 체계와 에이전트가 이해할 수 있는 키워드 및 테마 체계가 상이한 문제를 해결하기 위해 Semantic Search를 활용합니다.
아래는 Knowledge-aware retrieval 의 동작 방식을 간략히 설명한 그림입니다.
일단 사용자가 "어린시절을 추억하며 들을 수 있는 활력 넘치는 노래 찾아줘"라는 요청을 하였다고 가정하였습니다.
이때 LLM은 해당 발화내에서 유의미한 개체를 찾게 되는데, 이 경우 발화 내 포함된 표현을 기반하여 "어린시절", "추억", "활력 넘치는" 이라는 개체를 추출하였습니다.
사용자에게 정당한 결과를 제시하기 위해 유의미한 개체이지만 해당 개체는 기구축된 음악 검색추천시스템내에 정의되지 않은 어휘라는 문제가 있습니다.
즉, "어린시절", "추억", "활력 넘치는"이란 표현으로 검색추천을 수행할 경우 아무런 결과를 얻지 못하게 됩니다.
이를 해결하고자 검색추천시스템 내에 정의된 어휘로 개체명 시맨틱 엔진을 미리 구축해놓고 개체간 의미 유사성으로 검색추천시스템이 이해할 수 있는 어휘로 변환을 수행하게 됩니다.
이 경우 "학창시절", "1990", "에너지 넘치는" 이라는 개체가 선택되었고 "어린시절", "추억", "활력 넘치는"로 검색추천을 수행하는 대신
"학창시절", "1990", "에너지 넘치는"로 검색추천을 수행하여 정당한 결과를 얻을 수 있습니다.
이러한 과정을 통해 에이전트는 어떤 특수한 키워드 및 테마가 인입되더라도 그에 걸맞는 정당한 결과를 반환할 수 있습니다.
Knowledge-aware retrieval의 유효성은 에이전트로 인입되는 질의의 검색결과 존재 비율에서 정량적으로 확인할 수 있습니다.
현재 에이전트는 자유로운 대화창으로 질의를 입력받고 있기 때문에 상대적으로 긴 질의가 인입되고 저빈도 발화 분포가 매우 높은 특징을 갖고 있지만
뮤직 에이전트와 미디어 에이전트의 결과 제공 비율은 각각 93.5%, 82.6%로 매우 높은 수준임을 확인할 수 있습니다.
뮤직 에이전트 검색결과 존재 비율 : 평균 93.5%
미디어 에이전트 검색결과 존재 비율 : 평균 82.6%
위 내용을 통해 LLM 기술을 통해 자연어 검색을 매끄럽게 지원하는 에이전트의 기본 구조와 개발 과정에 겪은 여러 문제를 해결하기 위해 도입한
Entity RAG와 Knowledge-aware retrieval에 대해 알아보았습니다.
Entity RAG는 현재 미디어 에이전트에 우선 적용되어 있지만 뮤직 에이전트로 확대 적용할 계획을 갖고 있으며,
특정 필드(ex. 작품명, 배우명)에만 국한해서 사용하는 현상황에서 더 많은 필드로 확대 적용하여 보다 합리적인 결과를 내는것을 목표로 하고 있습니다.
Knowledge-aware retrieval 는 현재 에이전트 서비스에 우선 적용되어 있지만, 자연어 입력이 가능한 다양한 검색추천 도메인에서 활용되는 것을 목표로 하고 있습니다.
최근 키워드 검색과 시맨틱 검색을 적절히 융합하여 합리적인 검색결과를 도출하는 경우가 많은데,
이 과정에서 보조적이지만 효율적인 기재로 Knowledge-aware retrieval의 활용가치가 높다고 판단되며
개인화, Multimodality 기술과 적절히 융합해서 더 좋은 검색추천 경험을 제공하는 것을 시도할 예정입니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.