2026. 11. 06. · 노성산 (대표)
GEO(생성형 AI 검색 최적화)에서 내 글이 AI 답변에 인용되려면 먼저 질문과 뜻이 가까운 문단으로 뽑혀야 하고 이 첫 관문을 점검하는 방법이 임베딩 유사도 측정입니다. 0.82라는 점수 하나로는 내 문단이 잘 쓰였는지 알 수 없습니다. 같은 질문에 실제로 인용된 경쟁 문단을 같은 모델로 재고 내 문단의 순위와 1위와의 점수 차이로 판단합니다.

질문과 문단을 숫자 벡터로 바꾼 뒤 두 벡터의 방향이 얼마나 가까운지 잰 값이 임베딩 유사도입니다. 보통 -1에서 1 사이의 코사인 유사도를 쓰고 AI 검색은 이 값이 높은 문단부터 후보로 올립니다. 임베딩 유사도 측정은 바로 이 후보 단계를 점검합니다.
표현이 달라도 뜻이 같으면 가깝게 잡힙니다. 임베딩 모델 선택 가이드의 예시에서 'Spark 성능 튜닝'과 'Apache Spark 최적화 방법'은 약 0.92가 나왔지만 'Python 웹 개발 Django'와는 약 0.35에 그쳤습니다. 의미로 매칭되는 원리는 퍼지 매칭과 시맨틱 검색 글에 더 자세합니다.
후보는 수백 토큰짜리 조각 단위로 고르며 Anthropic은 약 800토큰 청크를 예로 듭니다. Google Search Central에 따르면 AI 개요와 AI Mode는 질문을 하위 주제로 쪼개 여러 검색을 동시에 돌리는 쿼리 팬아웃을 쓸 수 있습니다. 원래 질문 하나만 재면 하위 질문에서 잡히는 문단을 놓칩니다.
임베딩은 여러 관문 가운데 하나입니다. 실제 검색은 'Error code TS-999' 같은 정확한 표기를 잡는 BM25를 더하고 리랭커로 다시 거릅니다. Anthropic 구조에서는 후보 150개 가운데 20개만 모델에 넘어가는데요. 내부 평가에서 상위 20개 청크의 검색 실패율은 5.7%에서 문맥 임베딩만으로 3.7%(35% 감소), BM25를 더해 2.9%(49% 감소), 리랭킹까지 더해 1.9%(67% 감소)로 낮아졌습니다.
튜토리얼 코드에 흔한 threshold=0.8이나 0.95는 특정 모델과 데이터에서 나온 예시값입니다. 모델마다 점수가 몰리는 구간이 달라서 기준은 같은 모델 안의 순위로 잡아야 합니다.
OpenAI 개발자 커뮤니티에는 text-embedding-ada-002에서 관련 없는 문장끼리도 코사인 유사도가 0.68~0.7 이상 나온다는 사례가 여러 번 올라왔습니다. 같은 문장이 BERT 계열 모델에서는 0.06~0.23이었습니다. 벡터가 공간 한쪽으로 몰리는 비등방성(anisotropy) 때문에 점수가 좁은 폭에 모이는 현상입니다. ada-002에 맞춘 기준점을 쓰던 팀이 text-embedding-3-small로 옮기자 점수가 전반적으로 낮아지고 순서도 일관되지 않았다는 사례도 있습니다. Netflix 연구진은 ACM Web Conference 2024에서 학습 때의 정규화 방식에 따라 코사인 유사도가 임의적인 값이 될 수 있음을 수학적으로 보였습니다.
외부 도구로 잰 절대 점수는 ChatGPT·Perplexity·Google이 검색 단계에서 매기는 점수와 1:1로 맞물리지 않습니다. 그래서 지오랭크는 같은 모델 안에서 내 문단의 순위, 1위 문단과의 점수 차이, 그 질문에 답하려고 쓴 문단이 내 문단 중 1위인지를 확인합니다.
임베딩 유사도 측정은 질문 × 문단 점수 행렬을 만들어 질문별 순위표로 읽는 작업입니다. 내 문단과 경쟁 문단은 같은 모델·같은 분할 기준으로 재야 점수끼리 비교할 수 있습니다.
np.dot(q_vecs, p_vecs.T)처럼 내적만으로 코사인 값이 나옵니다.한국어 문서라면 MTEB-ko-retrieval 결과가 모델 선택의 참고가 됩니다.
| 모델 | MTEB-ko-retrieval nDCG@10 |
|---|---|
| KURE-v2 | 0.8160 |
| KURE-v1 | 0.7616 |
| BGE-m3-ko | 0.7547 |
| BAAI/bge-m3 | 0.7509 |
| KoE5 | 0.7337 |
단어를 세는 TF-IDF는 한국어에서 조사·어미가 붙으면 같은 단어도 다른 토큰으로 봐서 뜻이 같아도 유사도가 0이 나올 수 있습니다. 정확한 표기 일치는 BM25 관점에서 따로 확인하고 측정일·모델명(버전)·분할 기준·질문 수·문단 수를 기록해 둡니다.
세무법인 A사는 순위표가 가리킨 문단부터 고쳐 4개월 만에 4개 LLM 평균 AI 가시성을 8%에서 66%로 끌어올렸습니다. 질문별 순위가 오른 만큼 실제 답변 속 인용도 늘었습니다.
수도권에서 상속·증여·양도소득세를 주로 다루는 A사는 칼럼 54편을 발행했지만 '집 한 채 팔 때 세금 안 내는 조건', '부모님 집 상속받으면 세금 얼마' 같은 질문의 AI 답변에는 거의 나오지 않았습니다. 착수 첫 주 GRank Pilot으로 측정해 보니 같은 질문에는 경쟁 세무법인 3곳과 세무 정보 매체의 문단이 반복해서 인용되고 있었습니다.
지오랭크는 인용된 경쟁 문단 URL을 모두 확보하고 원래 질문 12개에 보유 기간·주택 수·지역 조건을 바꾼 변형·하위 질문 24개를 더해 36개 질문 세트를 만들었습니다. 칼럼을 H2·H3 경계로 자르고 한국어 특화 모델과 text-embedding-3-small로 순위표를 만들자 A사 답 문단이 경쟁 문단보다 위에 있는 질문은 6개뿐이었습니다. 원인은 세 가지로 좁혀졌습니다. 칼럼이 '1세대 1주택 비과세 특례 요건' 같은 세법 용어로만 쓰여 고객 질문과 어긋났고 여러 질문에서 법인 소개 문단이 답 문단보다 먼저 잡혔습니다. 평균 8,000자 칼럼 한 편이 비과세·감면·신고 기한을 함께 다루다 보니 한 문단이 여러 질문에서 1위를 차지하기도 했습니다.
실행은 순위표가 가리킨 문단부터 했습니다. 핵심 칼럼 14편을 질문 하나에 하나씩 답하는 패시지 41개로 나누고 각 문단 첫 문장에 결론을 두었습니다. 세법 용어 옆에 고객 표현을 함께 적고 '해당 요건' 같은 지시어 대신 세목명과 조건(보유 기간·양도가액·조정대상지역 여부)을 직접 넣었습니다. 담당 세무사의 자격과 경력은 저자 엔티티로 구조화했고 FAQPage·Article 스키마와 dateModified를 적용한 뒤 IndexNow로 색인을 제출했습니다. 이후 매주 같은 모델과 질문 세트로 다시 쟀습니다. 순위가 상위권에 오른 문단은 문장 다듬기를 멈추고 실제 사례 수치와 외부 세무 매체 기고로 근거를 보강했습니다.
4개월 뒤 답 문단이 경쟁 문단보다 위에 있는 질문은 36개 중 29개가 됐습니다. 같은 모델 기준 답 문단의 평균 유사도는 0.63에서 0.77로 올랐고 하위 질문 커버리지는 21%에서 71%로 넓어졌습니다. 실제 답변에서는 실행 3주 만에 Perplexity가 먼저 A사 칼럼을 인용했고 Gemini·Claude·ChatGPT가 뒤를 이었습니다.
A사 대표 세무사는 "질문마다 우리 문단이 몇 위인지부터 보여 주는 곳은 처음이었습니다. 요즘은 ChatGPT에 물어보고 찾아오셨다는 분들이 많은데 이미 믿고 오시는 터라 대부분 바로 상담 예약으로 이어집니다"라고 말했습니다.
임베딩 유사도 측정 순위표의 모양을 보면 문단이 빠지는 원인을 대부분 짐작할 수 있습니다. 수정은 결론을 첫 문장에 두고 '이것', '해당 서비스' 대신 제품·브랜드 이름을 쓰고 질문의 조건(가격대·지역·대상)을 문단에 넣는 순서로 합니다.
| 순위표 패턴 | 원인 | 처방 |
|---|---|---|
| 내 문단이 모두 경쟁 문단보다 아래 | 업계 용어가 고객 질문 표현과 어긋남 | 고객이 실제로 묻는 말로 바꿈 |
| 도입부·회사 소개 문단이 답 문단보다 위 | 결론이 글 뒤쪽에 묻힘 | 답 문단 첫 문장에 결론 배치 |
| 한 문단이 여러 질문에서 1위 | 여러 주제가 섞여 벡터가 흐려짐 | 주제별로 문단 분리 |
| 모델마다 순위가 크게 다름 | 대명사·생략이 많아 떼어 읽으면 모호함 | 회사명·기간·조건을 문단에 명시 |
| 고유명사·모델명·오류 코드 질문에서 낮음 | 임베딩보다 BM25가 잘 잡는 영역 | 정확한 표기를 그대로 넣음 |
첫 번째 패턴은 용어를 고객 표현으로 바꾸기만 해도 순위가 움직이곤 합니다. 뜻이 같은 표현끼리는 점수가 높게 묶이기 때문입니다. KDD 2024에 발표된 GEO 연구는 콘텐츠 수정으로 AI 답변 속 노출을 최대 40%까지 높였고 효과는 분야마다 달랐습니다. 반대로 질문 문장을 그대로 복사하거나 키워드를 반복하면 점수는 조금 올라도 글이 읽기 어려워집니다. 지오랭크가 기업부설연구소의 GEO 알고리즘 연구와 E-E-A-T·엔티티 설계를 바탕으로 '유사도 진단 → 콘텐츠 수정 → 4개 LLM 반복 측정' 순서를 지키는 이유입니다.
유사도는 상위권인데 인용되지 않는다면 검색 이후 단계를 봐야 합니다. Google Search Central은 색인되어 있고 스니펫으로 노출될 수 있는 페이지만 AI 개요와 AI Mode의 링크가 될 수 있다고 밝혔습니다. 색인과 크롤링 접근을 먼저 확인하고 그다음 근거·출처 표기·권위를 살핍니다.
AI 답변은 같은 질문에도 매번 달라지므로 인용 여부는 같은 질문을 여러 번 반복해 언급률과 인용률로 확인합니다. 지오랭크는 실제 인용 출처 URL과 플랫폼별 언급률, 수정 전후 비교 기간, 유사도 순위 변화를 한곳에 묶어 기록하고 인용 변화는 GRank Scanner로 따로 추적합니다. 유사도 순위로 고칠 문단을 고르고 성과는 실제 AI 답변의 인용 변화로 판단합니다.
OpenAI 임베딩은 길이가 1이 되도록 정규화되어 있어 코사인 유사도와 유클리드 거리의 순위가 같게 나옵니다. OpenAI는 코사인 유사도를 권장합니다. 어느 쪽을 쓰든 한 방식으로 통일해 같은 조건에서 순위를 비교하면 됩니다.
AI가 학습 데이터만으로 답할 때는 문단을 매칭하는 단계가 없습니다. 임베딩 유사도 측정은 웹 검색을 거쳐 출처를 다는 답변에 맞춘 점검입니다. 학습 데이터 기반 답변은 같은 질문을 반복해 브랜드 언급률로 가늠합니다.
정해진 개수는 없고 실제 AI 답변에서 확인한 원래 질문마다 조건을 바꾼 변형 질문과 하위 질문을 붙여 나가면 됩니다. 세무법인 A사 사례에서는 원래 질문의 세 배 규모로 세트를 넓혀 하위 질문에서 빠지는 문단까지 찾아냈습니다.
Google은 AI 기능에 노출되려고 AI 전용 텍스트 파일이나 특별한 구조화 데이터를 따로 만들 필요가 없다고 밝혔습니다. 유사도 순위를 움직이는 것은 문단 자체의 명확성입니다. 결론 위치와 이름, 조건 표기부터 고치는 편이 낫습니다.
같은 OpenAI 모델에서도 임베딩 값이 완전히 똑같이 재현되지 않는다는 문제 제기가 있습니다. 그래서 수정 전후 문단은 같은 조건에서 한 번에 다시 잽니다. 측정일과 모델 버전을 함께 남겨 두면 이후 비교도 쉬워집니다.
브랜드의 현재 상황과 목표를 알려주시면, 지오랭크가 GEO 전략과 예상 로드맵을 제안해 드립니다. 지금 문의하면 3개월 안에 AI 답변에서의 변화를 함께 확인할 수 있습니다.