AI로 만든 앱에 검색 기능 추가하기 (사람들이 진짜로 찾을 수 있도록)
AI로 만든 앱에 검색 기능을 추가하려면, 입력하는 대로 목록이 좁혀지는 필터 상자부터 시작하고, 어떤 필드를 검색할지 알려주고, 둘러보기용 카테고리 필터를 추가한 다음, 오타나 의미 기반 검색은 AI 검색을 위해 아껴두세요.
제대로 잘 만든 AI 앱이라면 누구나 한 번은 겪는 순간이 있다. 앱이 가득 차는 순간이다. 레시피가 열두 개일 때는 즐거웠던 레시피 앱이, 삼백 개가 되면 일거리가 된다. 고객이 여덟 명일 때는 깔끔했던 고객 관리 앱이, 이백 명이 되면 끝없는 스크롤이 된다. 뭔가 고장 난 게 아니다. 앱이 쓰이고 있다는 뜻이고, 그게 바로 앱을 만든 목적이다 — 다만 이제 사람들이 원래 하려던 일, 즉 특정 항목 하나를 찾는 일에 너무 오래 걸린다.
바로 이게 앱에 검색 기능을 추가할 때가 됐다는 신호다 — 몇 글자만 입력하면 긴 목록이 찾던 항목 하나로 좁혀지는 상자 말이다. 검색이 멋져 보여서가 아니라, 스크롤은 찾기가 아니기 때문이다. 과하게 만들지 않고 어떻게 추가할지 하나씩 살펴보자. 화려한 버전이 첫 번째 선택으로는 대개 틀린 답이기 때문이다.
앱에 검색 기능을 추가할 때는 언제인가?
스크롤이 필요 이상으로 오래 걸리기 시작하면 알게 된다 — 목록이 몇 개 남짓하던 항목에서 수백 개로 불어났고, 특정 항목 하나를 찾으려면 나머지를 전부 지나쳐야 한다. 여기까지 오는 동안 고장 난 건 없다. 앱이 쓰이고 있었을 뿐이고, 그게 바로 목적이다.
이 문제가 실제로 어떤 모습인지 하나 소개한다. 한 애견 미용사가 고객을 관리하는 앱을 만들었다 — 이름, 강아지 이름, 견종, 어떤 강아지가 드라이어를 싫어하는지에 대한 메모까지. 처음 몇 달은 한눈에 훑을 수 있는 깔끔한 목록이었다. 고객이 이백 명이 됐을 즈음엔, 바로 앞에 손님이 서 있는데 앱을 열어 “벨라 엄마”를 찾으려고 백 개가 넘는 이름을 스크롤로 지나쳐야 했다.
앱은 그녀가 요청한 대로 정확히 작동하고 있었다. 다만 목록이 그 안에서 하나를 찾는 유용한 방법이기를 멈췄을 뿐이다. 검색이 고치는 게 바로 이거다. “눈에 띌 때까지 스크롤하기”를 “몇 글자 입력하면 바로 나오기”로 바꿔준다.
앱이 무언가의 목록을 보여주고 있다면 — 주문, 레시피, 고객, 제품, 메모, 무엇이든 — 그리고 그 목록이 계속 늘어난다면, 언젠가 이 문제에 부딪힌다. 다행인 건, 검색의 첫 번째이자 가장 단순한 버전이 거의 모든 사람에게 이 문제를 해결해준다는 점이다.
AI로 만든 앱에 검색 기능은 어떻게 추가하나?
필터 상자부터 시작하자 — 목록 맨 위에 있는 텍스트 필드로, 입력하는 대로 일치하지 않는 항목을 전부 숨겨준다 — 가장 똑똑한 “AI 검색”이 아니라. 이게 첫 단계의 전부이고, 대부분의 앱에는 이 단계 하나면 충분하다.
AI 빌더에게 검색을 요청할 때는 가장 똑똑한 버전을 요청하고 싶어진다. 의도를 이해하고, 동의어를 처리하고, 관련도 순으로 정렬해주는 버전 말이다. 그 유혹을 참자. 똑똑한 버전은 더 느리고, 운영 비용이 더 들고, 제대로 만들기도 더 어렵다. 그리고 아직은 십중팔구 그게 필요 없다.
“벨라”라고 입력하면 목록이 벨라들로 줄어든다. 그게 전부다. 즉각적이고, 운영 비용도 거의 없고, 사람들이 “검색이 됐으면 좋겠다”고 말할 때 실제로 의미하는 게 바로 이거다.
빌더에게 정확히 이렇게 요청하자. “이 목록 위에 검색 상자를 추가해서, 입력한 내용과 일치하는 항목으로 필터링해줘.” 이게 프로젝트 전체인 경우가 얼마나 많은지 알면 놀랄 것이다.
검색은 실제로 어떤 필드를 봐야 할까?
찾으려는 대상을 실제로 식별해주는 필드 두세 개만 — 모든 항목의 모든 필드가 아니라. 이걸 빌더에게 알려주는 것 하나가 검색을 성가신 것에서 훌륭한 것으로 바꿔주는데, 대부분의 사람들이 이 단계를 건너뛴다.
기본값으로 빌더는 모든 것을 검색할 수도 있다 — 모든 항목의 모든 필드를. 꼼꼼해 보이지만 보통은 더 나쁘다. 앞서 말한 고객 목록을 검색하는데, 강아지 크기에 대한 메모 필드에 “작다”는 단어가 있어서 결과에 걸린다고 상상해보자. 이제 기술적으로는 일치하지만 원하던 게 전혀 아닌 결과들을 뒤져야 한다.
그러니 어떤 필드가 중요한지 구체적으로 정하자. 애견 미용사라면 고객 이름과 강아지 이름이다 — 메모도, 견종도, 예약 이력도 아니다. 레시피 앱이라면 레시피 제목과 주재료 정도지, 조리법 전체가 아니다. 빌더에게 이렇게 알려주자. “검색은 제목과 이름 필드만 봐야 해.” 열두 개 필드를 전부 검색하는 것보다 올바른 필드 두 개를 검색하는 게 언제나 낫다.
검색과 필터, 뭘 먼저 만들어야 할까?
대개는 필터다 — 사람들이 “검색”이라고 부르는 것의 상당수는 사실 “부분집합을 보여줘”이고, 검색 상자는 거기에 맞지 않는 도구이기 때문이다. 비개발자 빌더들이 놀라는 지점이 바로 여기다.
재고가 삼백 개인 리셀러는 보통 타이핑을 하고 싶은 게 아니라 — “판매완료”, “재고있음”, “이번 주 등록” 같은 버튼을 누르고 싶어 한다. 이게 바로 필터다. 이미 관리하고 있는 카테고리로 목록을 좁혀주는 버튼 몇 개나 드롭다운 말이다. 필터는 검색보다 만들기 쉬운 경우가 많고 일상적으로도 더 유용하다. 사람들은 이름으로 특정 항목 하나를 찾는 것보다 상태별로 훑어보는 경우가 훨씬 많기 때문이다.
좋은 원칙은 이거다. “이게 대략 뭐라고 불리는지 안다” 싶을 땐 검색 상자를, “이런 종류를 보여줘” 싶을 땐 필터를 추가하자. 앞서 말한 애견 미용사는 결국 둘 다 원했다 — 손님이 눈앞에 서 있을 때 이름으로 바로 찾아가는 검색 상자, 그리고 한가한 오후에 누구에게 문자를 보낼지 한눈에 보이도록 “미용 예정일 지남”을 걸러주는 필터. 같은 데이터인데 접근하는 방식은 완전히 다른 두 가지다.
하나만 먼저 만들어야 한다면, 사람들이 실제로 앱을 어떻게 쓰는지 지켜보자. “X가 전부 어디 있지”라고 자꾸 묻는다면, 원하는 건 검색 상자가 아니라 필터다.
검색 결과가 없을 때는 무엇을 보여줘야 할까?
빈 화면이 아니라 간결하고 구체적인 메시지다 — “‘zelda’와 일치하는 고객이 없습니다 — 철자를 확인하거나 검색어를 지워보세요” 같은 것. 빈 화면은 “앱이 고장 났다”로 읽힌다. 고장 난 게 아니라 그냥 일치하는 게 없는 건데, 대부분의 사람들이 이 부분을 미리 챙기는 걸 잊는다.
기본값은 흔히 빈 화면이다. 그러니 빌더에게 빈 상태에서 어떤 문구가 나와야 하는지 알려주자. 그 한 문장이 사용자가 “이 앱 고장났나”라고 생각하는 것과 “내가 잘못 입력했나 보다”라고 생각하는 것의 차이를 만든다.
이 김에, 검색을 지우고 전체 목록으로 돌아갈 수 있는 방법이 눈에 잘 띄게 있는지도 확인하자. 상자 안의 작은 “x” 버튼이나 “지우기” 링크면 된다. 생각보다 많은 사람이 빠져나갈 수 없는 검색 안에 갇힌다.
AI 검색이 필요한 건 언제이고, 필터 상자로 충분한 건 언제일까?
느낌이 아니라 구체적인 신호 두 가지다. 오타, 그리고 의미다. 사람들이 “stephanie”를 검색했는데 “Stefanie”를 놓친다면, 철자가 약간 틀려도 결과를 찾아주는 관대한 매칭이 필요하다는 뜻이다. 빌더에게 “철자가 조금 틀려도 결과를 찾아주는 검색”을 요청하자. 그리고 정말로 “청구 문제에 관한 메모를 찾아줘”가 필요하지, “billing이라는 단어를 찾아줘”가 아니라면, 그건 똑똑한 AI 기반 검색의 영역이다 — 단순한 상자가 풀 수 없는 문제를 풀어줄 때는 추가 비용과 복잡성을 들일 가치가 있다.
다만 거기서 시작하지는 말자. 필터링해주는 상자로 시작하고, 오타가 문제가 될 때 관대한 매칭을 더하고, “단어를 일치시키는 것”으로 부족해질 때만 똑똑한 버전을 꺼내 들자. 대부분의 앱은 1단계를 넘어갈 필요가 전혀 없다.
그러니 뭔가를 만들기 전에, 일주일 동안 자신이 직접 만든 앱을 어떻게 쓰는지 지켜보자. 계속 스크롤해서 찾게 되는 것 — 고객이든, 주문이든, 레시피든 — 그게 바로 검색 상자가 존재하는 이유다. 그 한 가지를 위해 먼저 만들면, 그걸 쓰는 거의 모든 사람의 문제를 해결한 셈이다.