시맨틱 검색Semantic Search
글자가 아니라 뜻이 가까운 것을 찾는 검색
- 시맨틱 검색은 글자가 겹치는 것이 아니라 뜻이 가까운 것을 찾아 줘요.
- 문서와 질문을 각각 뜻을 담은 숫자 묶음으로 바꿔 두고, 그 자리들이 얼마나 가까운지 재요.
- 문서 쪽 계산은 미리 해 둬요. 검색할 때는 질문만 바꿔 비교하니까 빠르게 돌아가요.
- 표현이 달라도 찾아 주는 대신, 품번·사람 이름·숫자처럼 정확히 맞아야 하는 것에는 약해요.
- 그래서 실무에서는 글자 검색과 뜻 검색을 함께 돌리고 결과를 합쳐요.
목차
1비유로 이해하기
서랍에 명함첩이 하나 있어요. 가나다순으로 꽂아 두면 이름을 알 때만 찾을 수 있어요. 작년에 지붕 고쳐 준 사장님을 찾으려는데 이름이 기억나지 않으면 첩을 처음부터 넘겨야 해요.
그래서 명함을 꽂을 때 뒷면에 무엇을 해 주는 사람인지 적어 두고, 비슷한 일끼리 같은 칸에 모아 두기로 해요. 방수와 누수와 옥상 공사는 한 칸에, 전기와 배선은 다른 칸에요. 이제 "천장에서 물이 떨어져요"를 들고 서랍을 열면 이름을 몰라도 손이 그 칸으로 가요.
명함에 "누수"라는 글자가 한 번도 안 적혀 있어도 상관없어요. 이 방식은 적힌 글자가 아니라 하는 일이 얼마나 가까운지로 칸을 정하니까요.
2자세히 알아보기
글자가 아니라 뜻으로 찾아요
예전 검색은 글자가 겹치는지를 봤어요. "누수 수리"라고 쳐야 그 글자가 든 문서가 나왔어요. 같은 일을 "물이 샌다"라고 적은 문서는 글자가 하나도 안 겹쳐서 뒤로 밀렸어요.
시맨틱 검색은 질문과 문서를 각각 뜻을 담은 숫자 묶음으로 바꾼 뒤 그 묶음끼리 견줘요. 같은 뜻을 다르게 쓴 문서, 오탈자가 있는 문서, 심지어 다른 언어로 쓴 문서까지 같은 칸으로 모여요.
질문을 길게 던져도 괜찮다는 점도 달라요. "지난달에 산 세탁기가 배수할 때만 소리가 나요" 같은 문장을 그대로 넣어도 되는 이유는, 검색어를 낱말로 쪼개 세지 않기 때문이에요.
자리는 미리 잡아 둬요
검색할 때마다 문서를 전부 읽는다면 너무 느려요. 그래서 문서 쪽은 미리 숫자 묶음으로 바꿔 저장해 둬요. 문서를 넣거나 고칠 때 한 번만 계산하면 돼요.
검색이 들어오면 그때 계산하는 것은 질문 하나뿐이에요. 그 질문의 자리와 가까운 문서들을 저장해 둔 것들 중에서 고르면 끝이에요. 전부와 일일이 견주지 않고 가까운 후보만 빠르게 좁히는 방법도 함께 써요.
미리 계산해 둔 값은 바꾼 모델과 짝이에요. 문서를 바꾸는 모델을 새것으로 갈면 예전에 저장해 둔 값은 쓸 수 없어서 전부 다시 계산해야 해요.
가까움은 방향으로 재요
두 자리가 얼마나 가까운지는 어떻게 정할까요. 흔히 쓰는 방법은 거리를 재는 대신 같은 쪽을 보고 있는지를 보는 거예요. 두 화살표가 나란하면 가깝고, 서로 다른 쪽을 보면 멀어요.
길이를 빼고 방향만 보는 데에는 이유가 있어요. 같은 내용을 짧게 쓴 글과 길게 쓴 글은 화살표 길이가 달라져요. 길이를 그대로 세면 긴 문서만 계속 위로 올라와요. 방향만 보면 길이와 상관없이 내용이 비슷한 쪽이 올라와요.
이 방식을 코사인 유사도라고 불러요. 시맨틱 검색이 내놓는 순위는 결국 이 자로 잰 결과예요.
잘하는 것과 못하는 것
뜻으로 찾기가 늘 이기는 것은 아니에요. 뜻이 비슷하다는 것은 딱 맞는다는 뜻이 아니거든요. 부품 번호나 계좌번호, 사람 이름처럼 한 글자만 달라도 다른 것이 되는 검색에서는 뜻 검색이 오히려 헤매요.
부정 조건도 약해요. "고양이가 없는 사진"과 "고양이 사진"은 뜻의 자리가 아주 가까워요. 나온 결과가 반대인데도 위쪽에 올라와요.
새로 생긴 말이나 회사 안에서만 쓰는 줄임말도 어려워요. 모델이 학습할 때 본 적 없는 말은 어느 칸에 넣어야 할지 애매해서 엉뚱한 이웃과 묶여요.
두 방식을 함께 돌려요
그래서 실무에서는 하나만 쓰지 않아요. 글자로 찾는 검색과 뜻으로 찾는 검색을 같이 돌리고, 두 결과를 합쳐 순위를 다시 매겨요. 품번을 넣으면 글자 쪽이 정확히 잡아 주고, 풀어 쓴 질문에는 뜻 쪽이 힘을 내요.
합친 뒤에 한 번 더 걸러 주기도 해요. 상위 후보 수십 건만 뽑아 더 꼼꼼한 모델로 다시 줄 세우는 방식이에요. 처음부터 전부를 꼼꼼히 보는 것보다 훨씬 싸게 정확도를 올릴 수 있어요.
AI가 자료를 찾아 읽고 답하는 구조에서도 이 검색이 앞단에 놓여요. 앞에서 엉뚱한 문서를 집어 오면 뒤에서 아무리 잘 읽어도 답이 어긋나요.
3조금 더 정확하게
문서와 질문을 숫자 묶음으로 바꾸는 일을 임베딩이라고 하고, 그렇게 만든 묶음을 모아 두고 가까운 것을 빠르게 찾아 주는 저장소를 벡터 데이터베이스라고 불러요. 후보를 좁힐 때는 전부와 견주는 대신 가까운 것들만 근사로 추려 내는 방법을 써요. 정확도를 조금 내주고 속도를 크게 얻는 거래예요.
비유가 어긋나는 지점도 있어요. 명함첩의 칸은 사람이 이름을 붙여 나눈 것이지만, 시맨틱 검색에는 이름 붙은 칸이 없어요. 있는 것은 좌표와 거리뿐이고, 칸처럼 보이는 것은 가까운 것들이 모여 있는 상태일 뿐이에요. 그래서 왜 이 문서가 위에 올라왔는지 설명하기 어려워요. 글자 검색은 어느 낱말이 겹쳤는지 짚어 줄 수 있지만, 뜻 검색은 숫자가 가까웠다는 말밖에 할 수 없어요. 또 명함첩은 한 사람을 한 칸에 넣지만, 긴 문서는 통째로 한 자리에 담기지 않아서 문단 단위로 잘라 각각 자리를 잡아 둬요. 어디서 자르느냐가 검색 결과를 꽤 크게 바꿔요.
4직접 해보기
5흔한 오해
시맨틱 검색이 질문을 이해한다고 생각하기 쉽지만, 실제로는 질문과 문서의 자리가 얼마나 가까운지를 잴 뿐이에요.
뜻으로 찾으니 글자 검색보다 항상 낫다고 여기기 쉽지만, 실제로는 품번이나 이름처럼 정확히 맞아야 하는 검색에서는 더 헤매요.
문서를 넣어 두면 알아서 최신으로 유지된다고 생각하기 쉽지만, 실제로는 문서를 고치거나 모델을 바꾸면 저장해 둔 값을 다시 계산해야 해요.
7한 줄 요약
그러니까시맨틱 검색은 글자가 겹치는 문서 대신 뜻의 자리가 가까운 문서를 찾아 주는 검색이에요.
잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정2026-09-02