🛠️TOOL/🔭Elasticsearch

[Elasticsearch / Seminar] - GenAI Workshop 후기

KangManJoo 2024. 4. 7. 22:55

🚀개요

이번 포스팅에서는 4월 3일 엘라스틱 코리아에서 파트너사를 대상으로 진행한 세미나에 참여하게 되어 다녀온 후기와 배웠던 내용들을 간략하게 남기고자 합니다 🖐️

세미나는 시청에 위치한 에티버스 타워에서 진행되었습니다.
덕분에 오랜만에 숭례문도 보고 왔습니다 ㅎㅎ 뒤쪽으로 SK의 그린빌딩도 보이네요

세미나는 오후 2시 ~ 오후6시까지 진행되었고, 약 70명 이상의 꽤 많은 파트너사 직원들이 참여해주신 행사였습니다.

이번 세미나는 엘라스틱 코리아의 솔루션 아키텍트이신 필립님께서 진행해주셨고, 입문자 수준에서엘라스틱서치와 GenAI에 대한 개요, 그리고 응용을 위한 실습을 위주로 이루어졌습니다.
그 중 제가 이해하고 좋았던 부분들에 대해 공유해보겠습니다.

🖊️Generative AI 소개

GenAI에 대해 설명하기 전에 AI 생태계의 큰 틀을 보겠습니다.

  • 우선 AI와 머신러닝이라는 큰 틀 안에 일종의 ML 모델인 Neural Network라는 기법이 있습니다.
  • Transformer Model은 Neural Network의 한 아키텍처로, 단어 관계와 문맥을 고려하는 언어 분석용 아키텍처입니다.
  • LLM(Large Language Model)은 Transformer Model의 한 범주입니다.
  • 마지막으로 GenAI는 LLM을 응용하여 사람의 프롬프트에 응답하고 콘텐츠를 생성하도록 설계된 LLM 애플리케이션입니다.

Chatgpt, gemini등 채팅 어시스턴트 LLM들은 대화형이고 새 콘텐츠를 생성하는 등 강한 강점을 가지지만, 학습한 데이터만을 사용하고 학습 시점의 데이터만을 사용한다는 큰 단점을 가집니다.
그리고 ChatGPT를 사용해 보신 분들은 다들 많이 겪었을테지만, 같은 질문을 해도 매번 다른 응답을 주고 할루시네이션 현상도 빈번합니다.
추가로 작년 삼성의 ChatGPT 금지령으로 큰 이슈가 되었듯이, 기업에서 가장 우려하는 것은 프라이빗 데이터의 보안과 관련된 이슈입니다.

🤔예시

이러한 문제점들을 파악하기 위해 몇 가지 예제를 진행해보았습니다.

먼저 현재의 영국 총리를 묻는 예제를 진행해보았습니다.


보리스 존슨은 영국의 전 총리로, 학습 시점의 데이터만을 사용한다라는 LLM의 단점을 보여줍니다.

다음으로 나라를 입력하고 수도를 묻는 예제입니다.


위 예시는 할루시네이션 현상을 보여주는 예 입니다.
Freedonia와 Faketopia등 실제로 존재하지 않는 나라들도 마치 존재하는 것처럼 답변을 합니다.

🏃‍♂️문제 극복

위에서 설명한 단점들을 상쇄하기위해서 새로운 아키텍처가 제시됩니다.
위 그림에서 표현한 것처럼 새로운 아키텍처의 많은 분야에서 엘라스틱이 활용 가능합니다.

먼저 임베딩 모델을 생성하고, 벡터 데이터베이스에 저장하는 일련의 과정을 엘라스틱서치에서 처리합니다. 그리고 해당 데이터베이스를 기반으로 답변을 하기 때문에 학습 시점의 데이터를 사용한다는 단점과 할루시네이션의 단점을 극복할 수 있습니다.

또한, LLM Operation 단계에서 로그를 모니터링하고 검증하는 단계에서도 엘라스틱이 활용 가능합니다.



🖊️만물의 벡터화

Transformer 모델은 텍스트 생성 , 요약, 등등의 일을 합니다.
Transformer처럼 신경망에 텍스트를 입력하려면, 텍스트를 숫자로 변환해야 합니다.
이를 우리는 텍스트 벡터화라고 합니다.

모든 LLM은 토큰 수가 제한되어 있습니다. 그렇다면 어떻게 정확한 답변을 빠르게 이끌어 낼 수 이을까요?
이 부분에서 Semantic 검색에서 벡터의 역할에 집중해봅니다.


벡터 임베딩은 의미를 표현합니다.
따라서 텍스트, 이미지, 오디오 등의 모든 데이터는 벡터 임베딩으로 표현이 가능합니다.
이미지의 유사도 등도 모두 벡터값을 사용해 검색이 가능합니다.


위 예시처럼 여러 특징을 각각의 차원으로 표현하여, 유사도를 표현하게 됩니다. 그리고 유사도는 벡터 좌표의 거리가 가까울 수록 높아지게 됩니다.

이러한 벡터 모델은 매우 고차원의 복잡한 관계를 표현할 수 있습니다.
물론 차원이 많아질수록 정확도는 올라가는 대신 속도는 내려가게 되지만, 보통은 4000차원 안에서 해결이 됩니다.


🖊️검색 vs 쿼리의 차이

엘라스틱서치는 벡터 데이터베이스 기반 검색 엔진이고, 검색과 쿼리는 엄연히 다릅니다.
검색에는 랭킹이 존재합니다. 포팅을 하지 않는 이상, 쿼리로는 어떤 데이터를 먼저 보여줄 지에 대한 정량값이 없습니다.

그러나 검색은 벡터값이 일치하는 정도에 따라 응답의 랭킹이 정해지게 됩니다.
따라서 사용자는 조금 더 자신의 의도에 적합한 답변을 먼저 얻을 수 있고, 정확히 일치하지 않더라도 리턴값이 존재합니다.


🖊️엘라스틱서치를 활용한 보안 문제 해결

앞서 언급한 프라이빗 데이터의 보안과 관련된 이슈입니다. 문서로 명시되어 있지 않다면, 써드 파티 AI 서비스는 학습을 위해서 사용자의 모든 프롬프트를 기록할 가능성이 높습니다.
따라서 채팅 어시스턴트 LLM의 보안 문제는 다양하게 존재합니다.

그렇다면 Man-in-the-middle, Data Spill, Mosaic effect등 다양한 문제에 어떻게 대응할 수 있을까요 ?

현재로서는 데이터를 최소화 하거나 제한하고, 권한이 있는 유저만 사용이 가능하게 하거나, 내부적으로 프라이빗 모델을 호스팅하는 등의 대처법이 존재합니다.
그러나 Public train된 chatGPT 등의 대형 LLM 모델의 능력을 도메인 Knowledge로 학습한 small LLM , private LLM으로 따라잡기는 여전히 쉽지 않습니다.


엘라스틱서치에서는 이러한 문제들을 해결하기 위해 위와 같은 아키텍처를 제공합니다.
유저의 질문을 받으면 엘라스틱서치 내부 데이터를 기반으로 Context Window를 생성하고, 이를 기존 질문과 다시 결합해 써드파티 LLM등으로 전달하여 최종 답변을 얻어냅니다.

물론 모든 데이터베이스를 벡터화하는데에는 청킹 전략이 필요합니다.
청크를 만들 때와 가지고 올 때 토큰 오버랩등의 테크닉을 사용해서 완전한 아이디어, 주제 전환, 문맥 단서를 포착할 확률을 높일 수 있습니다.

🤔예시


RAG의 작동 방식은 위와 같습니다. 사용자의 질문에 대해 벡터 검색을 실시하고, 기존의 질문과 조합해 LLM에게 전달하고 답변을 생성해냅니다.


이 과정에서 LLM 캐싱을 사용해 비슷한 질문에 대해서는 RAG를 매번 시행하지 않고 성능 향상을 이끌어냅니다.



🖊️엘라스틱서치 vs 벡터 데이터베이스

그렇다면 엘라스틱서치와 다른 벡터 데이터베이스와의 차별점은 무엇일까요?
그것은 바로 다른 벡터 데이터베이스는 임베딩을 생성하는 기술이 없지만, 엘라스틱서치에는 존재한다는 것입니다.

여기에는 큰 장점들이 있습니다. 만약 임베딩 기술이 없다면, 입력이 들어왔을 때 쿼리를 임베딩하려면 오픈 서치등의 외부서비스를 사용하게 되고, 해당 벡터로 벡터 데이터베이스에서 검색을 하고, 다시 해당 벡터 데이터를 외부서비스에서 원문 데이터로 바꾸는 등의 작업이 필요합니다.

여기서 성능과 리소스의 차이가 발생하게 됩니다.



🖊️엘라스틱서치의 3가지 검색 방법

 

✅BM25 - 모든 검색을 Semantic으로 대체 가능한가

BM25 기반의 고전 검색은 특정 영역에서는 여전히 유효합니다.
Dates, Geospatial 데이터 등 인덱스 Intersection 및 구조화된 필터의 경우나, bool 조합 혹은 fuzzy logic, 그리고 Keyword 검색 시에는 여전히 BM25 기반 검색을 사용하게 됩니다.

✅Dense Vectors - 자료형에 구애받지 않는 검색

Dense Vector는 텍스트만 지원하는 Sparse Vector와 다르게 자료형에 관계없이 검색이 가능합니다.
kNN+filter를 활용해 검색 결과를 제한할 수도 있으므로, 이런 부분에서 다른 벡터 데이터베이스와 차별점을 가집니다.

보안 : filter에는 doc level security 라는 필터가 존재하는데, 해당 필터는 사용자의 권한에 따른 각 도큐먼트의 검색 가능 여부를 결정할 수 있습니다.

개인화 : 또한 hit로부터 세컨더리 user behavior 벡터 모델을 사용하여 최적의 개인화 match 식별이 가능합니다.

✅ELSER - Elastic Learned Sparse EncodeR

ELSER는 모든 도메인에서 즉시 사용 가능합니다.
개발자가 자체 모델을 학습시킬 필요 없이 시멘틱 검색을 구현할 수 있고, 여러 도메인에 대한 범용성을 가집니다.
그러나 아직까지는 한국어 지원 모델이 존재하지 않습니다. (개발 로드맵에는 있다고 합니다. 언제가 될지는 모르나... )



📜후기

실습 위주의 세미나였지만 LLM 모델과 엘라스틱서치에 대한 전반적인 개요와 기술의 흐름 또한 알 수 있었습니다.
이번 세미나 진행을 맡아주신 필립님께 다시 한 번 감사드리고, 또 좋은 기회가 생겨 참여할 수 있으면 좋을 것 같습니다 . 🤗