개요
Vector Search는 이미지, 문장, 문서 같은 대상을 고차원 벡터로 표현한 뒤 거리 또는 유사도 기준으로 가까운 항목을 찾는 검색 방식이다. 대규모 데이터에서는 모든 벡터를 매번 정확히 비교하는 대신 근사 최근접 이웃 검색과 전용 인덱스 구조가 자주 사용된다.[1]
AI 시스템에서의 사용
Embedding으로 만든 의미 벡터를 이용하면 단어가 정확히 일치하지 않아도 의미적으로 가까운 문서를 찾을 수 있다. 이런 검색은 RAG의 검색 단계나 추천·중복 탐지 등에 활용될 수 있다.
구현 관점
FAISS 연구는 GPU와 압축·근사 검색 기법을 이용해 매우 큰 벡터 집합에서 유사도 검색을 효율적으로 수행하는 방법을 다뤘다.[1] Vector Search는 특정 제품 하나가 아니라 여러 데이터베이스·검색 라이브러리가 구현할 수 있는 기능 범주다.
사례: 비슷한 뜻과 정확한 번호를 함께 찾기
다음은 ORBiS Tree가 구성한 가상 사례다. 고객이 '돈 돌려받는 방법'을 묻는 경우에는 '환불 절차' 문서를 의미 검색으로 찾는 것이 유용할 수 있다. 반면 '주문번호 AB-123의 환불 상태'는 정확한 주문번호와 접근 권한 확인이 먼저다. 벡터 검색 결과가 비슷한 주문을 보여준다고 해서 해당 사용자의 주문으로 처리하면 안 된다.
키워드 검색과의 선택 기준
- 키워드 검색: 제품 코드·정확한 문구·고유명사처럼 같은 문자열이 중요한 요청을 다루기 쉽다.
- 벡터 검색: 같은 의도를 서로 다른 말로 표현하는 요청에서 의미상 가까운 후보를 찾는 데 활용할 수 있다. 문장 표현의 품질은 임베딩 모델에 영향을 받는다.[2]
- 혼합 검색: 두 방식의 후보를 함께 모으는 설계다. 추가 처리와 순위 결합의 복잡성이 생기므로 실제 질문에서 얻는 이득을 확인해야 한다.
- 필터링: 날짜·문서 종류·사용자 권한 같은 조건을 적용하는 일이다. 의미상 비슷하다는 이유로 권한 밖 자료를 반환해서는 안 된다.
정확 검색과 근사 검색
정확 최근접 검색은 주어진 거리 기준에서 가장 가까운 항목을 찾는 것을 목표로 한다. 근사 검색은 검색 비용을 줄이기 위해 일부 정확도를 양보할 수 있다. FAISS 연구는 GPU, 압축 표현, 근사 인덱스 등 여러 설계에서 대규모 유사도 검색을 다룬다.[1] '근사'는 결과가 무작위라는 뜻이 아니며, 실제 자료에서 놓치는 후보와 비용을 함께 평가해야 한다는 뜻이다.
검색이 느리거나 엉뚱할 때
- 임베딩 모델·벡터 차원·거리 설정이 질문과 문서에서 일치하는지 확인한다.
- 문서 조각이 너무 짧아 핵심 조건을 잃었거나 너무 길어 서로 다른 주제가 섞이지 않았는지 확인한다.
- 권한과 날짜 필터가 정답 후보를 제외하거나, 반대로 필요하지 않은 후보를 통과시키는지 확인한다.
- 검색 후보 수와 재정렬의 효과를 비교한다. 후보를 늘리는 것만으로 답변 품질이 계속 좋아진다고 가정하지 않는다.
- 올바른 자료를 찾았는데 답변이 틀리면 RAG의 생성 단계를 별도로 확인한다.
성능을 기록하는 방법
정답 문서가 알려진 질문 묶음에서 상위 k개 후보 안에 정답이 포함되는 비율과 검색 지연을 함께 기록할 수 있다. 이때 k, 문서 수, 필터 조건, 임베딩 모델을 함께 적어야 결과를 재현할 수 있다. 유사도 점수 자체보다 '사용자가 필요한 자료를 실제로 찾았는가'가 서비스의 판단 기준이다.
계산 예제: ANN 재현율과 근거 재현율 구분
다음 문서 ID는 모두 가상이며, 두 검색은 같은 자료·필터·거리 기준을 쓴다고 가정한다. 정확 검색의 상위 5개가 {1, 2, 3, 4, 5}, 근사 검색의 상위 5개가 {1, 2, 3, 4, 9}라면 정확 검색 후보 5개 중 4개를 되찾았다. 이때 ANN 재현율@5는 4 / 5 = 80%다. 이는 정확 최근접 결과를 재현한 비율이며 업무상 정답 문서의 비율은 아니다.
사람이 관련 있다고 판정한 전체 문서가 {2, 4, 9, 12, 15, 18}이라면 근사 결과의 관련 문서는 2, 4, 9의 3개다. 근거 정밀도@5는 3 / 5 = 60%, 근거 재현율@5는 3 / 6 = 50%다. 정확 최근접 기준과 사람의 관련성 기준은 다르므로 지표 이름과 분모를 함께 기록한다. 벡터 거리가 정확하다고 답변에 필요한 근거까지 모두 찾았다는 뜻은 아니다.
권한 필터 때문에 후보가 줄어들 때
가상의 AI 사내 위키에서 연구팀 전용 문서와 공개 문서가 같은 인덱스에 있어도 현재 사용자의 허용 범위 안에서 후보를 선택해야 한다. 검색 라이브러리의 필터 적용 방식과 별개로 반환·재정렬·생성 단계 모두에서 접근 권한을 지킨다. 상위 5개를 먼저 뽑고 금지 문서를 지우면 후보가 2개만 남을 수 있다. 같은 허용 자료 집합에서 후보 수와 검색 설정을 조정해 누락을 평가하되, 빈자리를 채우려고 권한을 완화하지 않는다.
후보가 적은 이유를 '허용 문서 부족', '필터 조건 오류', '근사 검색 누락'으로 나누어 기록한다. 권한 밖 원문이나 조각을 도구 결과에 먼저 전달한 뒤 최종 답변에서만 숨기는 방식으로 접근 경계를 대신하지 않는다.
속도와 품질을 함께 비교하는 실험
같은 원문 버전·질문·필터·거리 기준에서 정확 검색을 기준선으로 두고 근사 인덱스를 비교한다. 예를 들어 30ms와 10ms라는 가상 측정값이 있어도, 자료 수·벡터 차원·장비·동시 요청·측정 구간이 없으면 실제 제품의 성능 비교로 읽을 수 없다. 평균뿐 아니라 p95 지연, ANN 후보 재현율과 사람 기준의 관련성 지표를 함께 기록한다.
재정렬은 이미 검색한 후보를 다시 평가하는 단계다. 후보에 들어오지 않은 정답을 재정렬만으로 복원할 수 없으므로, 검색 누락과 순위 오류를 구분한다. 문서 분할·후보 수·재정렬을 한꺼번에 바꾸지 않고 한 조건씩 비교하면 실패 원인을 좁히기 쉽다.
인덱스 연구와 운영 확인 순서
FAISS 연구 ↗는 GPU에서의 정확·근사·압축 영역 유사도 검색을 다룬다.[1] HNSW 연구 ↗는 계층적 그래프를 이용한 근사 최근접 이웃 검색을 제안한다.[3] 각 실험의 자료와 장비 조건을 현재 서비스의 보장으로 옮기지 않는다.
결과가 엉뚱하면 원문 ID와 색인 버전, 질문·문서 인코더, 차원과 거리 설정, 권한 필터 순서로 확인한다. 새 문서가 원문 저장소에만 있고 인덱스에 반영되지 않았다면 검색 모델을 바꾸기 전에 동기화 문제를 해결해야 한다.
연구 방법: HNSW의 구축과 검색 설정
HNSW 원문 ↗의 알고리즘 1·2·5는 그래프 연결 수 M, 구축 중 후보 목록 efConstruction, 검색 중 후보 목록 ef를 구분한다.[3] 최종 반환 개수 K와 탐색 후보 폭은 같은 설정이 아니다. 연결·구축·검색의 비용과 재현율을 따로 비교한다. 구현별 명칭과 제약은 달라질 수 있고, 특정 실험의 설정을 모든 벡터 차원·자료 분포의 권장값으로 옮기지 않는다.
파레토 비교로 읽는 검색 설정
다음은 같은 질문·자료·필터·k를 쓴 가상 측정이며 실제 제품 결과가 아니다. 검색 p95와 ANN 재현율이 A는 5ms·78%, B는 8ms·90%, C는 12ms·94%, D는 10ms·86%라고 하자. B는 D보다 빠르면서 재현율도 높아 이 두 지표에서 D를 지배한다. 반면 A·B·C는 속도와 재현율을 교환하므로 하나의 최선으로 단정할 수 없다. 메모리·구축 시간·갱신 비용까지 포함하면 비교 결과가 달라질 수 있다. 지연 측정 구간과 표현 모델을 고정해 해석한다.