고객 상담용 챗봇 만들기
고객 상담용 챗봇 만들기에 대한 개념 및 내용들을 설명드립니다.
여기서는 AI 기반으로 처리하는 방식에 대해 주로 설명을 드릴 예정입니다.
준비사항
- ollama 및 chroma 설치
어떤 model을 사용할 것인가?
- 임베딩 모델 : nomic-embed-text, mxbai-embed-large, ko-sroberta-multitask ...
- LMM 모델 : mistral:7b-instruct .....
개념
1. Embedding
컴퓨터가 이해할 수 없는 텍스트 데이터를, 컴퓨터가 이해하고 계산할 수 있는 숫자들의 목록, 즉 '벡터(Vector)'로 변환하는 과정 또는 그 결과물입니다.
컴퓨터는 '사랑'이라는 단어의 의미를 모릅니다. 하지만 [0.12, -0.45, 0.67, ...] 와 같은 숫자 배열(벡터)은 처리할 수 있습니다.
임베딩의 핵심은, 이 숫자 벡터가 단순히 텍스트를 숫자로 바꾼 것을 넘어, 텍스트의 '의미'와 '문맥'을 그 안에 함축하고 있다는 점입니다.
임베딩을 통해 우리는 텍스트의 '의미'를 가지고 수학적인 계산을 할 수 있게 됩니다. 가장 중요한 계산은 바로 두 벡터 사이의 '거리' 또는 '유사도'를 측정하는 것입니다.
임베딩 과정을 거치면 특정한 text등이 무엇과 유사한지를 숫자로 표현하는데 이것을 크로마에 저장해 둡니다.
규칙 기반(Rule-based)과 AI 기반(AI-based)
우리가 챗봇을 만들때 어떤 식으로 만들것인가를 미리 생각해 두어야 합니다.
규칙 기반 (전통적 Q&A 임베딩)
규칙 기반은 질문과 답변을 미리 정의해두고 이런 질문에는 이런 답변을 하라라고 정의해 두는 것입니다.
그러면 고객이 질문을 하였을 경우 미리 정의된 질문과 고객이 질문한것의 유사도를 확인하여 가장 유사도가 높은것에 대한 답변을 찾아 그 답변을 제공하는 방식입니다.
장점으로는 "예측 가능성 및 제어", "높은 정확도 (정의된 범위 내에서)" 가 있지만 개발시 일일이 질문과 답변을 만들어야 하며 유연성이 부족한 단점이 존재 합니다.
AI 기반 (문서 임베딩)
반면 AI 기반은 개발자가 규칙(질문과 답변)을 직접 만들지 않고, 대신 방대한 양의 데이터(Data)를 AI 모델에게 제공하여 스스로 패턴, 관계, 논리를 학습하게 하는 방식입니다. 시스템은 새로운 입력이 들어왔을 때, 학습한 내용을 바탕으로 통계적으로 가장 그럴듯한 최적의 결과를 '생성(Generate)'하거나 '추론(Infer)'합니다.
장단점으로는 위의 규칙 기반과 반대라고 보시면 됩니다.
규칙 기반과 AI 기반의 결합 (하이브리드 접근법)
현실에서는 이 두 가지를 결합한 하이브리드(Hybrid) 방식이 매우 효과적입니다
AI가 사용자의 자연어 질문 의도를 파악한 후 절대 틀리면 안 되는 정보는 LLM의 추론에 맡기지 않고, 코드에 명시된 규칙에 따라 정확한 데이터를 제공하는 방식입니다.
2. 질문에 대한 처리
이제 기본 데이타가 만들어 졌어면 사용자 질문에 대한 처리를 할 단계입니다.
2.1 질문 embedding
질문도 위와 만찬가지로 embedding 단계를 거칩니다. 그리고 질문에 대한 embedding 결과와 미리 입력된 데이타의 embedding의 유사도를 측정하여 유사도가 높은 결과를 가져오게 됩니다.
3. 답변생성
2번에서 구한 답변을 LMM 모델에 전달하여 답변을 꾸미는 단계입니다.