상품 검색에서 “비 오는 날 노트북을 넣고 출근할 가방”과 “AB-1024”는 다른 문제입니다. 앞의 질문은 용도와 의미를, 뒤의 질문은 정확한 제품을 찾습니다. 이 글은 같은 상품 자료로 질문을 분류하고 검색 방법을 선택하는 기준을 설명합니다.
1. 벡터·임베딩·메타데이터부터 구분하기
벡터는 숫자의 배열입니다. 임베딩은 문장이나 이미지의 의미적 특징을 숫자 배열로 표현하는 과정 또는 그 결과입니다. 사람이 정한 ‘방수 점수’ 같은 항목을 그대로 적는 방식과는 다릅니다. 벡터 검색은 질문과 자료의 벡터를 비교해 가까운 후보를 찾습니다. 질문과 자료에는 호환되는 모델과 같은 벡터 공간, 즉 같은 기준으로 의미를 숫자에 대응시킨 비교 공간이 필요합니다.

벡터 데이터베이스는 이러한 벡터를 저장하고 유사한 항목을 검색하는 기능을 제공합니다. 검색 인덱스는 빠른 검색을 위해 자료를 정리해 둔 구조이고, 메타데이터는 SKU(상품을 구분하는 코드)·색상·재고처럼 자료에 붙이는 속성입니다. 필드는 이 각각의 값을 담는 칸입니다. Azure AI Search는 한 인덱스에 벡터와 일반 필드를 함께 둘 수 있습니다. Microsoft: 벡터 저장 구조
유사도는 벡터가 얼마나 가까운지를 나타내는 비교 기준이지 정답일 확률이 아닙니다. 높은 순위라도 설명이 질문의 조건을 충족하는지 따로 확인해야 합니다. 아래 상품 자료와 질문별 최종 결과 화면은 가상 입력을 바탕으로 사람이 작성한 완성 예시입니다. 이 글에서는 실제 검색 도구를 사용하지 않았으며, 순위나 점수를 측정하지 않았습니다.
2. 설명용 상품 자료와 작은 데이터 구조
세 상품의 코드·설명·색상·재고를 함께 살펴보겠습니다.
| SKU | 상품 설명 | 색상 | 재고 |
|---|---|---|---|
| AB-1024 | 방수 원단과 노트북 수납칸이 있는 출퇴근용 백팩 | 검정 | 있음 |
| AB-1025 | 방수 원단과 노트북 수납칸이 있는 출퇴근용 백팩 | 파랑 | 없음 |
| CD-1024 | 운동복과 신발을 따로 넣는 헬스장용 가방. 방수 기능 없음 | 검정 | 있음 |
다음은 값을 담는 구조이며 특정 제품에 바로 넣는 실행 코드는 아닙니다. sku는 상품 코드, description은 설명, color는 색상, in_stock은 재고 여부(true는 있음), description_vector는 설명을 숫자로 바꾼 값입니다.
sku: "AB-1024"
description: "방수 원단과 노트북 수납칸이 있는 출퇴근용 백팩"
color: "검정"
in_stock: true
description_vector: <설명에서 생성할 임베딩 배열>
의미 비교에는 설명 벡터를, 정확한 조건에는 일반 필드를 사용하도록 분리합니다. 질의는 검색 시스템에 보내는 질문이나 요청이고, 필터는 색상·재고 같은 조건으로 포함·제외할 자료를 가르는 장치입니다. Azure AI Search에서는 벡터 자체가 아니라 필터 가능한 일반 필드에 조건을 적용합니다. 필터를 쓸 SKU·색상·재고 필드는 그에 맞게 설정해야 합니다. Microsoft: 벡터 질의 필터
3. 질문 → 질의 유형 → 필터 → 검색 방법
먼저 질문별 검색 방법을 정한 뒤, 독자가 보게 될 최종 결과 화면으로 정리합니다.
의미 질의: “비 오는 날 노트북을 넣고 출근할 가방”
- 유형: 용도와 특징을 묻는 자연어 질문.
- 필터: 없음. 질문에 없는 색상·재고 제한을 임의로 추가하지 않습니다.
- 방법: 설명의 벡터 검색을 후보로 선택합니다.
- 설계상 기대 결과: 설명이 맞는 AB-1024와 AB-1025를 관련 후보로 찾는 것입니다. 두 상품의 설명이 같으므로 우열을 미리 정할 수 없습니다. CD-1024는 용도가 다르고 방수 기능도 없어 부적합 후보입니다.
정확 SKU 질의: “AB-1024 상품을 보여줘”
- 유형: 식별자 일치.
- 필터: SKU가 AB-1024와 같은지 확인합니다.
- 방법: SKU 필드의 동등 비교나 고유 키(항목 하나를 구별하는 값) 조회를 우선합니다.
- 설계상 기대 결과: AB-1024만 일치해야 합니다. AB-1025나 CD-1024를 비슷한 코드라는 이유로 대체해서는 안 됩니다. 검색창의 일반 키워드 검색을 쓰면 하이픈과 글자 묶음을 나누는 설정도 확인해야 합니다.
필터 질의: “재고 있는 검정색 출퇴근용 노트북 가방”
- 유형: 의미 검색과 구조화 조건의 결합.
- 필터: 색상은 검정, 재고는 있음. Azure식 설명용 조건은
color eq '검정' and in_stock eq true입니다. - 방법: 조건을 적용한 벡터 검색 또는 하이브리드 검색(키워드와 벡터 검색을 함께 실행해 결과를 합치는 방식)을 비교합니다.
- 설계상 기대 결과: AB-1024가 용도와 필터를 함께 충족합니다. AB-1025는 색상·재고 조건에서 제외됩니다. CD-1024는 필터는 통과해도 노트북 출퇴근 용도와 맞지 않습니다. 필터 통과만으로 적합성이 보장되지는 않습니다.
이처럼 두 검색 방식을 결합하면 제품 코드처럼 정확한 표현이 중요한 경우와 의미 탐색을 함께 다룰 수 있지만, 모든 질문에 더 좋다고 단정할 수는 없습니다. Microsoft: 하이브리드 검색
질문별 최종 결과 화면
화면 1. “비 오는 날 노트북을 넣고 출근할 가방”
관련 상품은 AB-1024와 AB-1025입니다. 같은 설명이므로 표시 순서에 우열 의미는 없습니다. 질문에 재고 조건이 없어 품절 상품도 표시하되 재고 상태를 숨기지 않습니다.
표를 좌우로 밀어 전체 열을 확인하세요.
| 표시 여부 | 상품 코드 | 색상 | 재고 | 상품 설명 | 선택·제외 사유 |
|---|---|---|---|---|---|
| 표시 | AB-1024 | 검정 | 있음 | 방수 원단과 노트북 수납칸이 있는 출퇴근용 백팩 | 질문의 용도·특징에 맞음 |
| 표시 | AB-1025 | 파랑 | 없음 | 방수 원단과 노트북 수납칸이 있는 출퇴근용 백팩 | 같은 용도·특징에 맞음. 품절은 별도 표시 |
| 제외 내역 | CD-1024 | 검정 | 있음 | 운동복과 신발을 따로 넣는 헬스장용 가방. 방수 기능 없음 | 노트북 출퇴근 용도와 다르고 방수 기능 없음 |
화면 2. “AB-1024 상품을 보여줘”
요청한 코드와 일치하는 상품은 AB-1024입니다.
표를 좌우로 밀어 전체 열을 확인하세요.
| 표시 여부 | 상품 코드 | 색상 | 재고 | 상품 설명 | 선택·제외 사유 |
|---|---|---|---|---|---|
| 표시 | AB-1024 | 검정 | 있음 | 방수 원단과 노트북 수납칸이 있는 출퇴근용 백팩 | 요청한 코드와 일치 |
| 제외 내역 | AB-1025 | 파랑 | 없음 | 방수 원단과 노트북 수납칸이 있는 출퇴근용 백팩 | 코드 불일치 |
| 제외 내역 | CD-1024 | 검정 | 있음 | 운동복과 신발을 따로 넣는 헬스장용 가방. 방수 기능 없음 | 코드 불일치. 일부 숫자가 같아도 대체하지 않음 |
화면 3. “재고 있는 검정색 출퇴근용 노트북 가방”
색상·재고와 용도 조건을 함께 충족하는 상품은 AB-1024입니다.
표를 좌우로 밀어 전체 열을 확인하세요.
| 표시 여부 | 상품 코드 | 색상 | 재고 | 상품 설명 | 선택·제외 사유 |
|---|---|---|---|---|---|
| 표시 | AB-1024 | 검정 | 있음 | 방수 원단과 노트북 수납칸이 있는 출퇴근용 백팩 | 검정·재고 있음·노트북 출퇴근 용도를 모두 충족 |
| 제외 내역 | AB-1025 | 파랑 | 없음 | 방수 원단과 노트북 수납칸이 있는 출퇴근용 백팩 | 색상·재고 조건 불충족 |
| 제외 내역 | CD-1024 | 검정 | 있음 | 운동복과 신발을 따로 넣는 헬스장용 가방. 방수 기능 없음 | 색상·재고는 맞지만 노트북 출퇴근 용도 불충족 |
4. 기대와 다를 때 확인할 검증 절차
위 화면은 설계상 기대이며 실제 반환 목록이 아닙니다. AI 채팅 답변이나 사람이 고른 상품도 실제 벡터 DB 출력으로 기록하지 않습니다.
- 이미 접근 가능한 검색시스템의 별도 테스트 공간에서, 원본·운영 자료를 바꾸지 않고 위 세 상품만 같은 속성으로 준비할 수 있는지 확인합니다. 지원되는 방식만 시험하며, 미지원·권한 없음이면 ‘미실행’과 이유를 기록합니다. 새 유료 가입·API 키·코드 실행을 전제하지 않습니다.
- 3절의 질문을 하나씩 고정하고 같은 데이터·필터·반환 개수 조건에서 정확 코드 조회, 키워드, 벡터, 하이브리드를 비교합니다. 정확 조회는 질문에서 지정한 SKU의 필드 동등 비교이며, SKU가 없는 질문은 ‘해당 없음’으로 적습니다. 이를 키워드 분석의 정확성 보장으로 해석하지 않습니다. 방식별 입력·검색 필드와 설정도 남깁니다.
- 필터 질문은 검정·재고 있음 조건을 동일하게 유지합니다. preFilter(후보 탐색 중 적용)·postFilter(후보 탐색 뒤 적용)의 지원 여부와 실제 적용 모드를 기록합니다. 같은 조건을 적용할 수 없으면 차이를 명시하고 직접 비교에서 뺍니다. Azure의 사후 필터는 적합 후보를 놓칠 수 있으며 다른 제품도 같다고 가정하지 않습니다. Microsoft: 필터 모드와 제한
- 시스템이 반환한 SKU를 순서대로 옮기고 설명을 대조합니다. 의미 질문은 두 백팩의 누락, 코드 질문은 다른 SKU 혼입, 필터 질문은 색상·재고 위반과 용도 부적합을 따로 적습니다. 반환되지 않음과 미실행을 구분하고 확인 못 한 설정은 ‘미확인’으로 둡니다.
방식마다 아래 빈 양식을 복사해 직접 채웁니다. 미리 결과를 채운 실측 예시는 아닙니다.
질문:
방식:
조건(데이터/필터/반환 수/필드/모델/pre·post 지원·적용):
실제 반환 코드(순서 또는 미실행·이유):
기대와의 차이:
미확인:
점수는 서로 다른 엔진·모델 사이에서 직접 비교하거나 정답 확률로 읽지 않습니다. 차이가 나면 자료 갱신·임베딩 모델·후보 수·필터 모드를 확인하되, 세 자료의 관찰만으로 검색 품질이나 방식의 성능 우열을 일반화하지 않습니다.
5. 구현과 제품 선택 기준
전용 벡터 DB만 선택지는 아닙니다. PostgreSQL에는 pgvector(벡터 유사도 검색 기능을 더하는 도구)를 확장(기존 DB에 기능을 덧붙이는 부품)으로 설치할 수 있고, 검색 서비스에도 벡터 기능이 있습니다. 링크된 Microsoft 안내의 설치 절차는 Azure Database for PostgreSQL flexible server를 대상으로 합니다. Microsoft: PostgreSQL의 pgvector
설계 권고는 제품명보다 요구 조건을 먼저 적는 것입니다. 기존 DB와 운영 역량, 정확 코드 조회, 필터 동작, 한글 키워드 처리, 데이터 갱신 지연, 접근 권한, 백업, 임베딩·저장·질의 비용을 비교하세요. 이 세 상품처럼 작은 자료에서는 단순 조건 조회로 해결할 부분부터 분리하고 의미 검색이 필요한 질문에만 추가하는 편을 검토할 수 있습니다.
RAG가 검색 자료를 답변의 근거로 쓰는 전체 흐름이라면, 이 글의 범위는 그 앞단의 검색 선택과 검증입니다. 좋은 출발점은 “무슨 DB를 살까”가 아니라 “어떤 질문에서 무엇을 찾아야 하고, 무엇이 섞이면 실패인가”를 먼저 정하는 것입니다.

핑백: AI 에이전트의 RAG란? 외부 문서를 찾아 답하는 원리 – nextsignal24