
챗봇이나 검색 엔진을 구축하려는 경우 벡터 데이터베이스에 대한 이야기를 들어보셨을 것입니다.
벡터 데이터베이스는 데이터, 리소스, 쿼리 간의 상호 작용에서 필수적인 역할을 하지만, 이를 다루는 것은 어려울 수 있습니다. 저도 임베딩이나 퍼지 검색과 같은 난해한 용어를 스크롤하며 지나치게 공학을 공부한 것인지 아니면 기본적인 것을 놓친 것인지 확신할 수 없었습니다.
추천할 YouTube 동영상은 누가 결정하나요? 검색 엔진은 오타를 어떻게 극복하나요? Instagram 어떻게 항상 완벽한 푹신한 강아지를 보여주는 것 같나요?
벡터, 유사도, 시맨틱 검색의 세계와 더욱 개인화된 애플리케이션을 구축하는 방법에 대해 알아보세요.
벡터 데이터베이스란 무엇인가요?
벡터 데이터베이스는 데이터의 의미를 포착하는 숫자 표현( 벡터라고 함)의 모음으로 데이터를 저장합니다. 이를 통해 특정 키워드가 아닌 유사성을 기준으로 검색할 수 있습니다.
최신 채팅, 검색, 추천 시스템의 핵심 기술입니다.
벡터 데이터베이스는 어떻게 작동하나요?
벡터 데이터베이스는 텍스트, 이미지, 스프레드시트를 임베딩이라고도 하는 일련의 벡터로 저장합니다. 이러한 각 벡터는 겉으로 보기에는 별 것 아닌 일련의 숫자로 구성되어 있지만, 그 안에는 데이터의 추상적인 의미를 담고 있습니다.
이메일, 회의 기록, 제품 설명 등 이러한 데이터는 일련의 숫자로 대체되는 것이 아니라 색인화됩니다.

이러한 작고 조밀한 임베딩은 정보 검색을 효율적이고 의미 있게 만들어 줍니다. 키워드뿐만 아니라 유사성을 기준으로 항목을 비교할 수 있습니다. 다양한 구성 요소를 살펴보겠습니다.
주요 개념
임베딩 모델이란 무엇인가요?
임베딩 모델은 데이터를 임베딩으로 변환하도록 학습된 머신러닝 모델입니다.
이러한 모델은 데이터를 벡터로 압축(임베딩)한 다음 다시 생성하도록 학습됩니다. 압축된 벡터는 데이터에서 가능한 한 많은 의미 정보를 저장합니다.
즉, 단순히 단어만 저장하는 것이 아니라 그 단어 뒤에 숨은 아이디어도 저장합니다. 예를 들어 임베딩을 통해 이를 캡처할 수 있습니다:
- "강아지 "와 "개" 는 밀접한 관련이 있습니다.
- "비밀번호를 어떻게 재설정하나요?" 는 "내 계정에 로그인할 수 없습니다"와 비슷한 의미입니다.
- "저렴한 노트북" 과 "예산 친화적인 컴퓨터"는 같은 의미입니다.
이러한 종류의 패턴은 AI 에이전트와 검색 엔진이 단순히 키워드를 일치시키는 것이 아니라 의미에 따라 입력을 비교하는 데 도움이 됩니다.
시맨틱 검색이란 무엇인가요?
그렇다면 임베딩의 유사성은 어떻게 비교될까요?
앞서 언급했듯이 임베딩 벡터는 일련의 숫자입니다. 이 숫자는 고차원 공간에서 한 점을 표현한 것입니다. 2D나 3D로 시각화할 수 있지만 384는 어떨까요? X, Y, Z 대신 수백 개의 값이 모여 하나의 고유한 점을 지정합니다.

이 벡터를 사용하면 두 콘텐츠가 단어가 아닌 의미 측면에서 얼마나 "유사한지" 측정할 수 있습니다.
시맨틱 검색은 쿼리를 벡터로 처리하고 데이터베이스에서 가장 가까운 벡터를 검색합니다. 이러한 결과 벡터는 원칙적으로 사용자의 쿼리와 가장 유사한 것이어야 합니다.

가장 가까운 이웃(ANN) 검색
시맨틱 검색은 근사 이웃(ANN) 알고리즘을 사용하여 수행됩니다. ANN의 목표는 "내 데이터베이스에서 내 쿼리와 가장 유사한 벡터는 무엇인가?"라는 질문에 답하는 것입니다.
각각 고유한 강점을 가진 여러 가지 ANN 알고리즘이 있습니다. 예를 들어
계층적 탐색 가능한 작은 세계(HNSW)
HNSW는 지연 시간이 짧은 실시간 검색에 최적화되어 있습니다. 개인화된 콘텐츠 피드와 추천 시스템, 즉 자주 업데이트되는 데이터를 빠르게 검색해야 하는 모든 시나리오에 적합합니다.
반전 파일 인덱스(IVF)
IVF는 대부분 변하지 않는 대규모 데이터에 더 적합합니다. 전자 상거래 카탈로그나 학술 논문 디렉토리를 생각해 보세요.
실제로 알고리즘은 검색을 구현하는 데 사용되는 엔진이나 플랫폼에 숨겨져 있습니다.
벡터 데이터베이스 사용 사례
이제 벡터가 어떻게 생성되고 매칭되는지 이해했으니, 애플리케이션을 구동하는 데 벡터를 사용할 수 있는 다양한 방법을 살펴봅시다.
RAG(검색 증강 세대)
이 LLM 생성 전략이 화제가 되고 있는 데에는 그럴 만한 이유가 있습니다: RAG는 안정적이고 정확하며 구체적인 응답을 제공하며, 이 모든 것이 벡터 DB를 통해 가능하기 때문입니다.
RAG를 사용하면 사용자의 쿼리가 임베드되어 데이터베이스의 나머지 항목과 비교되어 유사한 항목이 있는지 확인합니다. 그런 다음 모델은 응답을 생성할 때 이러한 항목을 참조합니다.
RAG는 모델의 내부 지식이나 대화의 기록에 의존하지 않으며, 이 둘은 모두 거짓이거나 관련성이 없을 수 있습니다.
나폴레옹의 어린 시절에 대한 요약을 요청한다고 가정해 보겠습니다. 모델의 답변은 그럴듯하지만 정확한가요? RAG를 사용하면 쿼리와 관련된 문서가 모델의 응답을 유도하는 데 사용됩니다. 이렇게 하면 기본 리소스를 확인하여 모델 출력을 검증할 수 있습니다.
실제로 어떤 모습인지 궁금하다면 RAG로 챗봇을 구축하기 위한 가이드를 참조하세요.
제품 및 콘텐츠 추천
벡터 데이터베이스는 사용자 쿼리에 응답하는 데만 사용되는 것이 아닙니다. 사용자 경험을 최적화하는 데에도 사용할 수 있습니다.
사용자의 탐색 기록을 추적하고 유사한 항목을 클러스터링하면 기업은 사용자에게 추천할 최적의 제품이나 콘텐츠를 결정할 수 있습니다.
이는 전략적 콘텐츠 추천과 타겟팅 광고라는 알고리즘의 좋은 예입니다.
동영상 공유 플랫폼을 생각해보세요. 모든 동영상에는 데이터베이스에 저장된 고유한 임베딩이 있습니다. 사용자가 하나의 동영상을 시청하면 시스템은 제목이나 태그가 완전히 다르더라도 유사한 콘텐츠가 있는 다른 동영상을 추천해 줍니다.
시간이 지남에 따라 시청 기록은 일종의 개인화된 '클라우드'가 되어 시스템이 사용자의 선호도를 파악하고 다음에 보고 싶은 콘텐츠를 추천하는 데 도움이 됩니다.
기존 데이터베이스에 비해 벡터 DB가 제공하는 이점
이제 벡터 데이터베이스의 사용 방법과 기능에 대해 이해했으니, 챗봇과 검색 엔진에서 벡터 데이터베이스가 어떤 이점을 제공하는지 그 이유에 대해 이야기해 보겠습니다.
1. 챗봇에 더 많은 컨텍스트 제공
LLMs 긴 대화에서 망각과 환각에 빠지기 쉽습니다. 사용자와 개발자는 어떤 정보가 유지되는지 명확하게 파악할 수 없습니다.
RAG와 같은 전략을 사용하면 모델이 쿼리에 대해 데이터베이스를 검색하여 정확한 응답을 제공하는 데 필요한 정보를 찾습니다.
벡터 데이터베이스는 모델을 매번 상기시키고 수정하는 대신 관련 정보를 저장하고 이를 명시적으로 참조합니다.

2. 오타 허용 검색 결과 만들기
정확한 키워드를 알고 있어도 검색이 번거롭습니다.
골프엔 리트리버 ≠ 골든 리트리버로 검색되지만, 검색 엔진은 더 잘 알고 있을 것입니다.
검색어를 문자 그대로 일치시키는 경우, 오타나 철자가 틀린 단어는 관련 옵션의 자격을 박탈합니다.
검색 쿼리의 의미를 추상화하면 구체적인 철자나 문구는 그다지 중요하지 않습니다.
3. 사용자가 퍼지 검색을 수행할 수 있습니다.
검색은 키워드보다는 ✨바이브✨에 관한 것입니다.
텍스트를 임베딩 벡터로 추상화하면 표현할 수 없는 바이브 공간에 텍스트를 저장할 수 있습니다. 그래서 표면적으로는
"이 근처에서 맛있는 플랫 화이트를 어디서 먹을 수 있나요?"
처럼 보이지 않습니다.
"근처에서 카페인을 보충할 수 있는 최고의 장소",
를 입력해도 검색 엔진에서 모두 동일하게 검색됩니다. 이는 문구가 다르지만 두 문구의 임베딩이 매우 유사하기 때문에 가능합니다.
4. 벡터 DB는 모달리티 간 비교 가능
데이터는 다양한 형태, 크기, 유형으로 존재합니다. 우리는 종종 여러 유형의 데이터를 비교해야 할 필요가 있습니다. 예를 들어 텍스트를 사용하여 제품 이미지를 검색하고 필터링할 수 있습니다.
멀티모달 모델은 텍스트, 이미지, 오디오, 비디오 등 다양한 유형의 데이터를 비교하도록 학습됩니다.
이렇게 하면 콘텐츠에 대해 더 쉽게 이야기할 수 있습니다. 이미지를 설명하여 제품을 찾거나 일반 언어를 사용하여 차트에 대해 질문하세요.
스마트 검색 기능을 갖춘 AI 에이전트를 구축하는 방법
시맨틱 검색을 처음 사용하시는 분이라면 질문이 쇄도할 것입니다:
데이터 준비는 어떻게 하나요?
어떤 데이터를 포함해야 하나요?
어떤 임베딩 모델을 사용해야 하며, 제대로 작동하는지 어떻게 알 수 있나요?
다행히도 모든 것을 미리 알아낼 필요는 없습니다. 다음은 몇 가지 간단한 단계로 시작하는 방법입니다:
1. 사용 사례 정의
간단하고 유용한 것부터 시작하세요. 다음은 몇 가지 예시를 통해 시작해보세요:
- A 리테일 챗봇 은 고객의 필요와 선호도에 따라 적합한 제품을 찾을 수 있도록 도와줍니다. "150달러 미만의 하이킹용 겨울 재킷이 뭐가 좋을까요?"라고 질문해 보세요 .
- A 티켓팅 봇 은 직원의 IT 요청을 실시간으로 분류합니다. "아직 배정되지 않은 VPN 액세스와 관련된 우선 순위가 높은 티켓이 있나요?"라고 질문하세요.
- A 비즈니스 프로세스 자동화 에이전트는 주문 이행을 처음부터 끝까지 관리합니다. "스미스 주문이 아직 배송되었는지, 확인 이메일을 보냈나요?"라고 물어보세요.
이 모든 것은 빠르게 구축할 수 있고 테스트하기 쉬우며 즉시 가치가 있습니다.
2. 플랫폼 선택
벡터 데이터베이스가 혼란스럽거나 추상적으로 느껴진다면, 임베딩과 클러스터링을 백그라운드에서 처리하는 챗봇 플랫폼이 많이 있습니다.
3. 데이터 수집
텍스트 파일, PDF, 스프레드시트 등 이미 가지고 있는 파일부터 시작하세요. 좋은 플랫폼은 서식을 자동으로 처리합니다. 콘텐츠를 업로드하기만 하면 임베딩과 색인 생성은 플랫폼이 알아서 처리합니다.
구체적인 사항은 사용 중인 플랫폼에 따라 다릅니다. 다음은 데이터를 최대한 활용하기 위한 몇 가지 팁입니다.
4. 설명 추가
봇의 용도에 대해 짧고 평이한 언어로 설명하세요.
이는 봇이 사용자와 대화하는 방법, 예상되는 질문의 종류, 참조할 수 있는 데이터 등 봇의 분위기와 기대치를 설정하는 데 도움이 됩니다.
예:
"귀하는 HR 팀의 지원 도우미입니다. 직원들이 정책을 찾고 PTO 및 복리후생에 관한 질문에 답할 수 있도록 도와주세요. 직원 핸드북과 인사 문서에 있는 정보를 활용하세요. 명확하고 정중하게 답변하세요. 모르는 것이 있으면 사용자에게 인사팀에 문의하도록 요청하세요."
5. 테스트 및 조정
실제 쿼리로 설정을 테스트하세요. 고객이 무엇을 질문할지 물어보세요. 결과가 관련성이 있나요? 정확한가요?

필요에 따라 봇을 조정하세요:
- 불완전한 결과인가요? 청크 수를 늘려 더 완전한 응답을 얻으세요.
- 응답이 느리나요? 더 빠른 모델을 선택하세요.
- 잘못된 응답이 있나요? 더 정확한 모델을 사용하거나 관련 데이터를 추가하세요.
플랫폼은 사용자 정의가 가능하므로 일반적으로 사용 가능한 모델을 사용하거나 설명을 변경하는 등 구성만 하면 문제를 해결할 수 있습니다.
더 스마트한 검색 기능 구축
최근 AI의 발전으로 검색 가능한 데이터는 단순히 있으면 좋은 것이 아니라 기본이 되고 있습니다.
더 스마트한 검색 엔진을 구축하기 위해 ANN이나 임베딩을 마스터할 필요는 없습니다. 저희 플랫폼은 시맨틱 검색 및 검색 증강 생성을 위한 플러그 앤 플레이 도구를 제공합니다. 데이터 준비가 필요 없습니다.
지금 바로 구축을 시작하세요. 무료입니다.