Elasticsearch에서 NLP와 벡터 검색으로 챗봇 기능 강화하기

벡터 검색과 NLP가 어떻게 챗봇 기능을 향상시키는지 살펴보고 Elasticsearch가 그 과정을 어떻게 촉진하는지 알아보세요.

벡터 검색부터 강력한 REST API까지, Elasticsearch는 개발자에게 가장 폭넓은 검색 도구 키트를 제공합니다. GitHub의 샘플 노트북을 살펴보고 새로운 기능을 시험해 보세요. 무료 체험판을 시작하거나 지금 바로 Elasticsearch를 로컬에서 실행할 수도 있습니다.

대화형 인터페이스는 한동안 사용되어 왔으며 고객 서비스, 정보 검색, 작업 자동화 등 다양한 작업을 지원하는 수단으로 점점 더 인기를 얻고 있습니다. 일반적으로 음성 어시스턴트나 메시징 앱을 통해 액세스하는 이러한 인터페이스는 사용자가 보다 효율적으로 쿼리를 해결할 수 있도록 사람의 대화를 시뮬레이션합니다.

기술이 발전함에 따라 챗봇은 사용자에게 개인화된 경험을 제공하면서 더 복잡한 작업을 신속하게 처리하는 데 사용됩니다. 자연어 처리(NLP)를 통해 챗봇은 사용자의 언어를 처리하고 메시지의 의도를 파악하여 관련 정보를 추출할 수 있습니다. 예를 들어, 명명된 개체 인식은 텍스트의 주요 정보를 일련의 카테고리로 분류하여 추출합니다. 감정 분석은 감정 어조를 식별하고, 질문은 쿼리에 대한 '답변'을 식별합니다. NLP의 목표는 알고리즘이 인간의 언어를 처리하고 대량의 텍스트에서 관련 구절 찾기, 텍스트 요약, 새롭고 독창적인 콘텐츠 생성 등 기존에는 인간만이 할 수 있었던 작업을 수행할 수 있도록 하는 것입니다.

이러한 고급 NLP 기능은 벡터 검색이라는 기술을 기반으로 합니다. Elastic은 벡터 검색을 기본적으로 지원하여 정확하고 근사한 kNN(k-최근접 이웃) 검색을 수행하고, NLP를 지원하여 사용자 정의 또는 타사 모델을 Elasticsearch에서 직접 사용할 수 있습니다.

이 블로그 게시물에서는 벡터 검색과 NLP가 어떻게 챗봇 기능을 향상시키는지 살펴보고 Elasticsearch가 그 과정을 어떻게 촉진하는지 보여드리겠습니다. 벡터 검색에 대한 간략한 개요부터 시작하겠습니다.

인간은 문자로 된 언어의 의미와 문맥을 이해할 수 있지만, 기계는 그렇지 못합니다. 벡터가 필요한 이유입니다. 기계는 텍스트를 벡터 표현(텍스트의 의미를 수치로 표현한 것)으로 변환함으로써 이러한 한계를 극복할 수 있습니다. 기존 검색과 비교했을 때, 벡터는 빈도에 기반한 키워드와 어휘 검색에 의존하는 대신 숫자 값에 대해 정의된 연산을 사용하여 텍스트 데이터를 처리할 수 있습니다.

이를 통해 벡터 검색은 쿼리 벡터가 주어진 유사성을 나타내기 위해 "임베딩 공간" 의 거리를 사용하여 유사한 개념이나 컨텍스트를 공유하는 데이터를 찾을 수 있습니다. 데이터가 유사하면 해당 벡터도 비슷해집니다.

벡터 검색은 NLP 애플리케이션뿐만 아니라 이미지 및 동영상 처리 등 비정형 데이터가 관련된 다양한 영역에서도 활용되고 있습니다.

챗봇 플로우에서는 사용자의 쿼리에 대해 여러 가지 접근 방식이 있을 수 있으며, 그 결과 더 나은 사용자 경험을 위해 정보 검색을 개선할 수 있는 다양한 방법이 있습니다. 각 대안에는 고유한 장점과 단점이 있으므로 사용 가능한 데이터와 리소스, 교육 시간(해당되는 경우) 및 예상 정확도를 고려하는 것이 중요합니다. 다음 섹션에서는 질문 답변 NLP 모델에 대한 이러한 측면을 다룹니다.

질문 답변

질문 답변(QA) 모델은 자연어로 묻는 질문에 답변하도록 설계된 NLP 모델의 한 유형입니다. 사용자가 여러 리소스에서 답변을 추론해야 하는 질문이 있는데 문서에 이미 존재하는 목표 답변이 없는 경우, 제너레이티브 QA 모델이 유용할 수 있습니다. 그러나 이러한 모델은 계산 비용이 많이 들고 도메인 관련 학습에 많은 양의 데이터가 필요하기 때문에 도메인 외의 질문을 처리하는 데 특히 유용할 수 있지만 일부 상황에서는 실용성이 떨어질 수 있습니다.

반면에 사용자가 특정 주제에 대해 질문이 있고 실제 답변이 문서에 있는 경우 추출형 QA 모델을 사용할 수 있습니다. 이러한 모델은 소스 문서에서 직접 답변을 추출하여 투명하고 검증 가능한 결과를 제공하므로 간단하고 효율적인 방식으로 질문에 답하고자 하는 기업이나 조직에 보다 실용적인 옵션이 됩니다.

아래 예는 Hugging Face에서 사용할 수 있고 Elasticsearch에 배포된 사전 학습된 추출 QA 모델을 사용하여 주어진 컨텍스트에서 답을 추출하는 방법을 보여줍니다:

학습된 모델을 배포합니다.

추론 수집 파이프라인에 모델을 추가합니다.

사용자 쿼리를 처리하고 정보를 검색하는 다양한 방법이 있으며, 비정형 데이터를 다룰 때는 여러 언어 모델과 데이터 소스를 사용하는 것이 효과적인 대안이 될 수 있습니다. 이를 설명하기 위해 선택한 문서에서 추출한 데이터를 고려한 답변으로 쿼리에 응답하는 데 사용되는 챗봇의 데이터 처리 예시가 있습니다.

위와 같이 챗봇의 데이터 처리는 크게 세 부분으로 나눌 수 있습니다:

  • 벡터 처리: 이 파트에서는 문서를 벡터 표현으로 변환합니다.
  • 사용자 입력 처리: 사용자 쿼리에서 관련 정보를 추출하고 시맨틱 검색 및 하이브리드 검색을 수행하는 부분입니다.
  • 최적화: 이 부분에는 모니터링이 포함되며 챗봇의 안정성, 최적의 성능 및 우수한 사용자 경험을 보장하는 데 매우 중요합니다.

벡터 처리

처리 부분의 첫 번째 단계는 각 문서의 구성 요소를 결정한 다음 각 요소를 벡터 표현으로 변환하는 것입니다. 이러한 표현은 다양한 데이터 형식에 대해 생성할 수 있습니다.

사전 학습된 모델과 라이브러리를 포함하여 임베딩을 계산하는 데 사용할 수 있는 다양한 방법이 있습니다.

이러한 표현에 대한 검색 및 검색의 효과는 기존 데이터와 사용된 방법의 품질 및 관련성에 따라 달라진다는 점에 유의하세요.

벡터가 계산되면 dense_vector 필드 유형으로 Elasticsearch에 저장됩니다.

챗봇 사용자 입력 처리

사용자 입장에서는 질문을 받은 후 질문을 진행하기 전에 가능한 모든 정보를 추출하는 것이 유용합니다. 이는 사용자의 의도를 파악하는 데 도움이 되며, 이 경우 이를 지원하기 위해 NER(Named Entity Recognition) 모델을 사용하고 있습니다. NER은 명명된 엔티티를 식별하고 미리 정의된 엔티티 카테고리로 분류하는 프로세스입니다.

필수 단계는 아니지만 구조화된 데이터나 위 또는 다른 NLP 모델 결과를 사용하여 사용자의 쿼리를 분류하면 필터를 사용하여 kNN 검색을 제한할 수 있습니다. 이렇게 하면 처리해야 하는 데이터의 양을 줄여 성능과 정확도를 향상시킬 수 있습니다.

시맨틱 검색 및 하이브리드 검색

프롬프트는 사용자 쿼리에서 시작되고 챗봇은 가변성과 모호성이 있는 인간의 언어를 처리해야 하므로 시맨틱 검색이 매우 적합합니다. Elasticsearch에서는 쿼리 문자열과 임베딩 모델의 ID를 쿼리 벡터 빌더 객체에 전달하여 한 단계로 시맨틱 검색을 수행할 수 있습니다. 그러면 쿼리를 벡터화하고 kNN 검색을 수행하여 쿼리의 의미에 가장 가까운 상위 k개의 일치 항목을 검색합니다:

엔드투엔드 예제: 텍스트 임베딩 모델을 배포하고 이를 시맨틱 검색에 사용하는 방법. Elasticsearch는 희소 모델인 Okapi BM25의 Lucene 구현을 사용해 텍스트 쿼리의 관련성 순위를 매기고, 고밀도 모델은 시맨틱 검색에 사용합니다. 텍스트 쿼리에서 얻은, 벡터 일치와 일치의 강점을 모두 결합하려면 하이브리드 검색을 수행할 수 있습니다:

희소 모델과 고밀도 모델을 결합하면 최상의 결과를 얻을 수 있는 경우가 많습니다.

희소 모델은 일반적으로 짧은 쿼리와 특정 용어에서 더 나은 성능을 발휘하는 반면, 고밀도 모델은 컨텍스트와 연관성을 활용합니다. 이러한 방법이 서로 어떻게 비교되고 보완되는지 자세히 알아보려면 검색을 위해 특별히 훈련된 두 가지 고밀도 모델과 BM25를 비교하여 벤치마킹해 보세요.

가장 관련성이 높은 결과는 일반적으로 사용자에게 제공된 첫 번째 답변일 수 있으며,_score는 반환된 문서의 관련성을 결정하는 데 사용되는 숫자입니다.

챗봇 최적화

챗봇의 사용자 경험, 성능 및 안정성을 개선하기 위해 하이브리드 스코어링을 적용하는 것 외에도 다음과 같은 접근 방식을 통합할 수 있습니다: 감정 분석: 대화가 전개되는 동안 사용자의 댓글과 반응을 파악하기 위해 감성 분석 모델을 통합할 수 있습니다:

GPT의 기능 : 전반적인 경험을 향상시키기 위한 대안으로, Elasticsearch의 검색 정확도와 OpenAI의 GPT 질문 답변 기능을 결합하여 채팅 완료 API를 활용하여 이러한 상위 k 문서를 컨텍스트로 고려하여 사용자 모델이 생성한 응답으로 돌아갈 수 있습니다. 프롬프트: "이 질문에 답하세요 <user_question> 이 문서만 사용 <top_search_result>"

관찰 가능성: 챗봇의 성능을 보장하는 것은 매우 중요하며, 이를 위해서는 모니터링이 필수적인 요소입니다. 챗봇 상호작용을 캡처하는 로그 외에도 응답 시간, 지연 시간 및 기타 관련 챗봇 메트릭을 추적하는 것이 중요합니다. 이를 통해 패턴과 추세를 파악하고 이상 징후를 탐지할 수 있으며, Elastic Observability 도구를 사용하면 이러한 정보를 수집하고 분석할 수 있습니다.

요약

이 블로그 게시물에서는 NLP와 벡터 검색이 무엇인지 살펴보고 문서의 벡터 표현에서 추출한 데이터를 고려하여 사용자 쿼리에 응답하는 데 사용되는 챗봇의 예를 살펴봅니다.

앞서 살펴본 바와 같이 챗봇은 NLP와 벡터 검색을 사용하여 정형화된 타깃 데이터를 넘어서는 복잡한 작업을 수행할 수 있습니다. 여기에는 여러 데이터 소스 및 형식을 컨텍스트로 사용하여 특정 제품 또는 비즈니스 관련 쿼리에 대한 추천 및 답변을 제공하는 동시에 개인화된 사용자 경험을 제공하는 것도 포함됩니다.

사용 사례는 고객의 문의를 지원하는 고객 서비스 제공부터 단계별 안내, 권장 사항 제안 또는 작업 자동화를 통해 개발자의 문의를 돕는 것까지 다양합니다. 목표와 기존 데이터에 따라 다른 모델과 방법을 활용하여 더 나은 결과를 달성하고 전반적인 사용자 경험을 개선할 수도 있습니다.

다음은 유용할 수 있는 주제에 대한 몇 가지 링크입니다:

  1. 자연어 처리(NLP)를 배포하는 방법: 시작하기
  2. Elasticsearch의 이미지 유사도 검색 개요
  3. ChatGPT와 Elasticsearch: OpenAI와 개인 데이터의 만남
  4. OpenTelemetry와 Elastic을 통한 OpenAI API 및 GPT 모델 모니터링
  5. IT 리더가 검색 환경을 개선하기 위해 벡터 검색이 필요한 5가지 이유

Elasticsearch에 NLP와 기본 벡터 검색을 통합하면 속도, 확장성, 검색 기능을 활용하여 정형 또는 비정형 데이터에 관계없이 대량의 데이터를 처리할 수 있는 매우 효율적이고 효과적인 챗봇을 만들 수 있습니다.

시작할 준비가 되셨나요? Elastic Cloud 무료 체험판을 시작하세요.

이 블로그 게시물에서는 해당 소유자가 소유하고 운영하는 타사 생성 AI 도구를 사용했거나 참조했을 수 있습니다. Elastic은 타사 도구에 대한 어떠한 통제권도 없으며 해당 도구의 콘텐츠, 운영 또는 사용에 대해 어떠한 책임이나 의무도 지지 않으며 그러한 도구의 사용으로 인해 발생할 수 있는 손실이나 손해에 대해서도 책임을 지지 않습니다. 개인 정보, 민감한 정보 또는 기밀 정보가 포함된 AI 도구를 사용할 때는 주의를 기울여 주세요. 제출하는 모든 데이터는 AI 학습 또는 기타 목적으로 사용될 수 있습니다. 회원님이 제공한 정보가 안전하게 보호되거나 기밀로 유지된다는 보장은 없습니다. 사용하기 전에 생성 AI 도구의 개인정보 보호 관행과 이용 약관을 숙지해야 합니다.

Elastic, Elasticsearch 및 관련 상표는 미국 및 기타 국가에서 Elasticsearch N.V.의 상표, 로고 또는 등록 상표입니다. 기타 모든 회사 및 제품명은 해당 소유자의 상표, 로고 또는 등록 상표입니다.

챗봇을 최적화하는 방법

1

GPT의 기능을 활용하세요: 채팅 완료 API를 활용하여 상위 k개의 문서를 컨텍스트로 고려하여 사용자 모델에서 생성된 응답으로 돌아가도록 Elasticsearch의 검색 정확도와 OpenAI의 GPT 질문 답변 기능을 결합합니다.

2

감성 분석 통합하기: 감성 분석 모델을 통합하여 대화가 전개될 때 사용자의 댓글과 반응을 파악할 수 있습니다.

3

관찰 가능성: 챗봇 상호작용을 캡처하는 로그 외에도 응답 시간, 지연 시간 및 기타 관련 챗봇 메트릭을 추적하는 것이 중요합니다. 이를 통해 패턴과 추세를 파악하고 이상 징후를 감지할 수도 있습니다.

관련 콘텐츠

최첨단 검색 환경을 구축할 준비가 되셨나요?

충분히 고급화된 검색은 한 사람의 노력만으로는 달성할 수 없습니다. Elasticsearch는 여러분과 마찬가지로 검색에 대한 열정을 가진 데이터 과학자, ML 운영팀, 엔지니어 등 많은 사람들이 지원합니다. 서로 연결하고 협력하여 원하는 결과를 얻을 수 있는 마법 같은 검색 환경을 구축해 보세요.

직접 사용해 보세요