TL;DR

  • 풀텍스트 검색은 정확한 이름·SKU·제품 코드·브랜드·키워드 검색에 여전히 효과적이지만, 복합적인 쇼핑 질문에 답하려면 여러 검색 방식과 대화 기능을 결합해야 함.
  • 벡터 검색은 제품 설명에 그대로 나오지 않는 의미적 요구를 찾고, 하이브리드 검색은 풀텍스트 검색과 벡터 검색 결과를 결합함.
  • Manticore Conversational Search는 검색 결과를 바탕으로 제품을 설명·비교하고, 대화 맥락을 반영해 후속 질문에 답함.
  • ConvApparel 데이터셋의 82,524개 제품으로 구성한 Manticore Apparel Shop은 검색 결과를 언어 모델의 맥락으로 제공하며, 추천 근거를 제품 데이터와 연결함.
  • 쇼핑 질의 200개를 사용한 벤치마크에서 Manticore는 테스트한 엔진 가운데 Hit@3 0.3650, Hit@5 0.4250, Hit@10 0.5250, MRR 0.2790으로 각 지표에서 가장 높은 점수를 기록함.

단어 검색, 의미 검색, 대화는 서로 다른 작업임

  • 일반적인 온라인 신발 매장에서 사용자가 “젖은 포장도로에서 매일 달릴 검은색 방수 러닝화를 추천해 달라”고 검색하면, 검색 시스템은 색상과 방수 조건, 러닝 목적, 가격·사이즈·재고를 고려하고 적합한 제품을 찾은 뒤 제품 간 차이까지 설명해야 함.
  • Google은 2026년 5월 AI Mode의 월간 사용자 수가 10억 명을 넘어섰으며, 기존 검색에 맞지 않던 더 길고 복잡한 질문이 늘고 있다고 발표함. (Google 블로그)
  • Nike Pegasus 41 black이나 SKU 123456처럼 정확한 제품명·식별자를 찾는 질의는 풀텍스트 검색으로 처리할 수 있으며, 의미 검색은 필요하지 않음.
  • light shoes for long summer walks처럼 제품 카드에 ‘여름’이나 ‘긴 산책’이라는 말이 없더라도 ‘통기성 소재’나 ‘경량 구조’ 같은 설명과 연결해야 하는 질의에는 벡터 검색이 유용함.
  • black Gore-Tex shoes for everyday running처럼 일부 조건은 그대로 유지하고 일부는 사용자의 의도로 해석해야 하는 질의에는 풀텍스트 검색과 벡터 검색을 결과 순위에 결합하는 하이브리드 검색이 적합함.
  • 하이브리드 검색도 결과 목록을 제공하는 데 그치므로, “비에 더 적합한 모델은 무엇인가?” 또는 “그중 120달러 미만은 무엇인가?”와 같은 설명·비교·후속 질문에는 대화 계층이 필요함.

구축한 시스템

  • 의류 선택 대화 데이터셋인 ConvApparel을 정리해 신발·바지·상의·아우터를 포함하는 82,524개 제품을 구성함. 각 제품에는 설명, 카테고리, 이미지, 속성이 포함됨.
  • 이 데이터를 기반으로 Manticore Apparel Shop을 구축함. 사용자가 검은색 방수 러닝화를 요청하면 시스템이 먼저 적합한 제품을 찾고, 언어 모델이 검색 결과를 맥락으로 답변을 생성하며, 인터페이스에는 제품도 함께 표시됨.
  • 시스템은 답변과 데이터의 연결을 유지함. 비에 적합하다고 추천한 제품을 사용자가 직접 열어 주장의 근거를 확인할 수 있어야 함.
  • 언어 모델은 검색을 대체하지 않고 검색 결과를 해석함.
  • 데모는 임의의 제품과 그 제품을 찾을 질의를 생성한 뒤, Manticore에서 같은 질의로 해당 제품이 검색되는 과정을 보여줌: Manticore Apparel Shop.

작동 방식

  • 주요 명령은 CREATE CHAT MODEL과 CALL CHAT(...)임.
  • Conversational Search 모델을 만들 때 사용할 모델과 동작 규칙을 설정함. 예시 설정은 openrouter:google/gemma-4-26b-a4b-it 모델, 60초 제한 시간, 검색 문서 5개 제한, 문서당 최대 3,000자 제한을 사용함.
  • 사용자 지정 프롬프트는 제공된 맥락만 사용하고, 외부 지식이나 근거 없는 가정을 배제하며, 검색 결과가 뒷받침하는 제품만 추천하도록 지정함. 각 추천에는 적합한 이유와 [ref:<id>] 형식의 맥락 출처 ID를 포함하고, 근거가 부족하면 정보가 충분하지 않다고 답하도록 설정함.
  • retrieval_limit은 맥락에 포함할 문서 수를 정하고, max_document_length는 문서마다 가져올 텍스트의 양을 제한함. 맥락이 너무 적으면 적합한 제품을 놓칠 수 있고, 너무 많으면 지연 시간과 질의 비용이 증가함.
  • CALL CHAT(...)으로 사용자 질의, 제품 테이블, 모델 이름, 대화 UUID, 벡터 필드를 지정해 질의함. 같은 대화 UUID로 후속 질의를 보내면 대화 기록을 사용하므로 사용자가 맥락을 반복할 필요가 없음.

HTTP API를 통한 사용

  • Conversational Search는 JSON API로도 제공되며, 요청 경로는 /search임.
  • 요청에는 query, table, model_name, conversation_uuid, vector_field를 포함하는 chat 객체를 전달함.

시스템 응답

  • 응답에는 conversation_uuid, user_query, search_query, responses, sources가 포함됨.
  • search_query는 특히 중요함. “이 중 비에 더 적합한 제품은 무엇인가?”처럼 대화 맥락 없이는 의미가 불완전한 질문에 대해, 시스템이 대화 기록을 바탕으로 완전한 검색 질의를 구성함.
  • 이 값으로 질의에서 답변까지의 전체 흐름을 추적해 디버깅할 수 있음.

검색 작동 방식

  • Conversational Search는 임베딩 필드에 대한 벡터 검색을 사용함.
  • 처리 흐름은 사용자 질문 → 대화 기록 → 검색 질의 → 벡터 검색 → 검색 문서 → 언어 모델 → 답변과 출처 순서임.

검색이 끝나고 대화가 시작되는 지점

  • 풀텍스트 검색은 정확한 질의, 벡터 검색은 의미 기반 질의, 하이브리드 검색은 두 방식의 결합에 적합함.
  • 결과를 설명·비교하거나 조건을 조정해야 하는 경우에는 Conversational Search가 필요함.

품질

  • ConvApparel의 결정론적 쇼핑 질의 200개를 사용한 대화형 검색 품질 벤치마크를 진행함. 생성된 답변의 표현이 아니라 출처로 반환된 제품 ID를 평가함.
  • 현재 실행 결과에서 Manticore는 Hit@3 0.3650, Hit@5 0.4250, Hit@10 0.5250, MRR 0.2790을 기록했으며, 테스트한 엔진 가운데 각 지표에서 가장 높은 점수임.
  • 전체 저장소에는 데이터셋 구축 규칙, 엔진 설정, 스모크 테스트 작업, 원시 결과가 포함됨.

결론

  • 현대 검색은 하나의 알고리즘이 아니라 풀텍스트 검색, 벡터 검색, 하이브리드 검색, Conversational Search라는 여러 계층으로 구성되며, 각 계층은 서로 다른 작업을 담당함.
  • 언어 모델은 검색을 대체하지 않고 그 위에서 작동함. 검색 품질이 낮으면 카탈로그를 제대로 알지 못하면서 말만 많은 상담원이 될 수 있음.
  • Manticore Apparel Shop에서 임의의 제품을 선택하고 관련 질문을 한 뒤, 같은 제품이 검색되고 답변에서 추천되는지 확인할 수 있음. 코드를 살펴보거나 로컬에서 실행하려면 GitHub 저장소를 확인할 수 있음.

함께 읽기

  • Manticore Search 29.0.2: 샤드 테이블 작업 개선 및 더 안전한 유지보수
  • KupujemProdajem이 Manticore Search로 광고 560만 건을 약 10밀리초에 검색하는 방법
  • dict='keywords_32k'로 긴 해시와 ID를 검색하는 방법