Back to blog

PostgreSQL 벡터 검색이란? pgvector 작동 원리와 RAG 활용 사례

August 10, 2026

저자: Dr. Sala Muthukrishnan | 2025년 11월 24일

벡터 검색(Vector Search)은 정확히 일치하는 키워드가 없어도 데이터의 의미와 맥락을 분석해 관련 결과를 찾는 기술입니다. 생성형 AI(GenAI), 시맨틱 검색, 추천 시스템 및 검색 증강 생성(Retrieval-Augmented Generation, RAG)을 구현하는 핵심 기술로 활용됩니다.

이 글에서는 PostgreSQL 벡터 검색의 기본 개념부터 임베딩 저장과 유사도 검색 과정, 코사인 유사도와 유클리드 거리의 차이, 대규모 검색을 위한 벡터 인덱싱 방법을 살펴봅니다. 또한 pgvector를 통해 EDB Postgres에서 벡터 워크로드를 기존 트랜잭션 및 분석 데이터와 함께 운영할 때의 특징을 알아봅니다.


벡터 검색이란 무엇이며 왜 중요한가?

고객이 지원 포털 검색창에 “로그인 안됨”이라고 입력합니다. 시스템은 곧바로 “비밀번호 복구 가이드”라는 문서를 찾아냅니다. 두 표현 사이에 정확히 일치하는 단어가 없어도 관련 문서를 찾을 수 있는 이유가 바로 벡터 검색입니다.

생성형 AI 시대의 검색 기술은 단순한 키워드 매칭을 넘어 사용자가 입력한 문장의 의미(Meaning), 맥락(Context), 의도(Intent)를 이해하는 방향으로 발전하고 있습니다. 지식 기반(Knowledge Base)에서 정확한 답변을 찾거나, 유사한 제품을 추천하거나, 거대언어모델(Large Language Model, LLM)을 위한 RAG 파이프라인을 구축하려면 의미적으로 관련된 정보를 찾을 수 있어야 합니다.

전통적인 검색 엔진이 정확한 단어 일치나 구조화된 쿼리에 의존한다면, 벡터 검색은 다차원 공간에서 작동합니다. 문서, 이미지, 오디오, 제품 설명 등의 데이터를 임베딩(Embedding)이라는 숫자 벡터로 변환해 저장한 뒤, 벡터 사이의 거리를 바탕으로 의미적 유사성을 판단합니다.

핵심적으로 벡터 검색은 단어나 값이 정확히 일치하지 않더라도 쿼리와 의미 또는 표현이 유사한 데이터 포인트를 찾아내는 기술입니다. 예를 들어 “비밀번호를 어떻게 재설정하나요?”라는 질문에 “로그인 자격 증명 복구 단계”라는 문서를 검색 결과로 제공할 수 있습니다.

pgvector 확장 기능을 사용하면 EDB Postgres에서 임베딩을 직접 저장하고 인덱싱하며 쿼리할 수 있습니다. 개발자와 데이터 과학자는 별도의 벡터 전용 데이터베이스를 추가하지 않고도 엔터프라이즈 데이터가 존재하는 Postgres 환경에서 AI 워크로드를 트랜잭션 및 분석 워크로드와 함께 실행할 수 있습니다.

벡터 검색의 주요 활용 사례

정확한 문구가 아니라 데이터의 의미를 기준으로 검색하는 벡터 검색은 다음과 같은 지능형 애플리케이션에 활용할 수 있습니다.

  1. 시맨틱 검색(Semantic Search)

    단순한 키워드 검색을 넘어 사용자가 입력한 쿼리의 의도를 해석합니다. “로그인이 안 돼요”라는 질문에 “비밀번호 복구 단계”를 보여주는 것은 문구가 아니라 의미를 비교하기 때문입니다.

  2. 문서 검색 및 검색 증강 생성(RAG)

    연구 논문, 사내 지식 및 법률 문서와 같은 비정형 텍스트를 임베딩으로 변환해 Postgres에 저장하면 사용자 질문과 관련성이 높은 콘텐츠를 검색할 수 있습니다. 검색된 문서를 LLM에 전달해 정확하고 맥락에 맞는 답변을 생성하는 RAG 파이프라인의 기반이 됩니다.

  3. 문서 비교(Document Comparison)

    금융, 보험 및 감사 분야에서는 계약서나 규제 보고서 등 많은 문서를 비교해 미세한 차이를 식별해야 합니다. 벡터 유사성을 사용하면 문서가 의역되거나 재구성된 경우에도 비교할 수 있어 중복이나 표절을 감지하는 데 활용할 수 있습니다.

  4. 이미지 유사도 검색(Image Similarity Search)

    텍스트뿐만 아니라 이미지의 시각적 특징도 임베딩으로 표현할 수 있습니다. 이커머스 사이트의 유사 상품 추천이나 미디어 기업의 중복 이미지 감지 등에 활용됩니다.

  5. 추천 시스템(Recommendation Systems)

    사용자와 항목의 임베딩을 Postgres에 저장하면 의미적 유사성을 기준으로 제품, 영화 또는 기사를 추천할 수 있습니다. 구매 기록뿐만 아니라 리뷰의 감정적 어조까지 반영한 추천도 가능합니다.


PostgreSQL 벡터 검색의 작동 원리

Postgres 내부에서 벡터 검색이 작동하는 과정은 크게 임베딩 생성, 저장, 유사도 검색, 결과 정렬의 네 단계로 구분할 수 있습니다.

  1. 임베딩 생성(Embedding Generation)

    OpenAI, BERT, CLIP과 같은 모델이 텍스트나 이미지 등의 원시 데이터를 밀집 벡터(Dense Vector)로 변환합니다. 예를 들어 BERT는 768차원의 부동소수점 목록을 생성합니다. 이를 의미의 GPS 좌표라고 생각할 수 있습니다. 지도에서 가까운 위치가 모여 있듯 다차원 공간에서도 유사한 개념이 서로 가까운 위치에 군집을 형성합니다.

  2. Postgres에 임베딩 저장

    pgvector를 사용해 임베딩을 vector 타입의 전용 컬럼에 저장합니다. 각 행(Row)은 문서나 이미지 레코드와 해당 데이터에 대응하는 벡터 값을 함께 가집니다.

  3. 유사도 검색(Similarity Search)

    사용자가 쿼리를 입력하면 데이터 생성에 사용한 것과 동일한 모델을 이용해 쿼리를 임베딩으로 변환합니다. 이후 코사인 거리(Cosine Distance)나 유클리드 거리(Euclidean Distance) 같은 측정 방식을 사용해 저장된 벡터 중 의미적으로 가장 가까운 항목을 찾습니다.

  4. 결과 정렬 및 검색(Ranking and Retrieval)

    시스템은 계산된 유사도 점수에 따라 결과를 정렬하고, 관련성이 가장 높은 항목을 반환합니다.

이 아키텍처의 핵심은 구조화된 데이터(SQL), 비정형 데이터 및 임베딩을 단일 Postgres 생태계에서 함께 처리할 수 있다는 점입니다.


코사인 유사도와 유클리드 거리 비교

벡터 검색은 쿼리 벡터와 저장된 임베딩 사이의 거리를 비교해 가장 가까운 결과를 찾습니다. 이때 어떤 데이터를 유사하다고 판단할지 결정하는 기준이 거리 지표(Distance Metrics)입니다. 다음은 pgvector에서 사용할 수 있는 대표적인 두 가지 측정 방식입니다.

구분코사인 유사도(Cosine Similarity)유클리드 거리(Euclidean Distance)
정의두 벡터 사이의 각도인 코사인 값을 측정합니다. 방향에 중점을 두며 크기는 무시합니다.두 벡터 사이의 직선거리인 L2 Norm을 측정합니다. 크기와 방향을 모두 고려합니다.
값의 범위-1~1이며 일반적으로 0~1입니다. 값이 높을수록 유사합니다.0~∞입니다. 값이 낮을수록 유사합니다.
크기 영향무시합니다. 방향이 같으면 벡터 길이가 달라도 동일한 것으로 간주합니다.민감합니다. 스케일 차이가 거리에 영향을 줍니다.
적합한 분야텍스트 임베딩. 의미가 크기보다 방향에 반영된 경우에 적합합니다.이미지 또는 특징 세트. 픽셀 강도와 같은 절대적인 값이 중요한 경우에 적합합니다.
텍스트 검색BERT, OpenAI 등의 문장 및 단어 임베딩에 적합하며 의미적 유사성 판단에 유리합니다.사용할 수 있지만 임베딩 스케일이 다르면 검색 결과가 왜곡될 수 있습니다.
이미지 검색CLIP 등으로 생성한 정규화된 딥러닝 특징 임베딩에 적합합니다.원시 픽셀 공간이나 스케일되지 않은 CNN 출력값을 비교할 때 선호됩니다.

대규모 벡터 검색을 위한 인덱싱

저장된 벡터가 수천 개에서 수백만 개로 늘어나면 모든 벡터를 하나씩 비교하는 전수 검색(Brute-force)의 연산 비용이 커집니다. 대규모 데이터 환경에서 검색 성능을 확보하려면 벡터 인덱싱(Vector Indexing)이 필요합니다.

벡터 인덱스란?

벡터 인덱스는 전체 데이터셋을 모두 스캔하지 않고도 유사한 벡터를 빠르게 찾을 수 있도록 임베딩을 구조화하는 기술입니다.

주요 벡터 인덱스 유형

  • IVF(Inverted File Index): 벡터를 여러 클러스터로 나눈 뒤, 검색 시 관련성이 높은 클러스터 내부를 중심으로 탐색합니다.
  • HNSW(Hierarchical Navigable Small World Graphs): 유사한 벡터를 서로 연결하는 그래프 기반 인덱스입니다. 빠른 조회 성능을 제공하며 성능과 정확도 측면에서 널리 사용됩니다.
  • PQ(Product Quantization): 벡터를 압축해 저장 공간과 연산 비용을 줄이는 방법입니다.

근사 최근접 이웃 검색이란?

근사 최근접 이웃(Approximate Nearest Neighbor, ANN) 검색은 대규모 벡터 검색을 효율적으로 확장하기 위한 방법입니다. 정확한(Exact) 이웃을 모두 계산하는 대신 일부 정확도를 조정해 가장 가까운 결과에 근접한 이웃을 빠르게 찾습니다.

챗봇이나 추천 엔진과 같이 실시간 응답이 필요한 AI 활용 사례에서는 ANN 검색을 통해 속도와 정밀도 사이의 균형을 조정할 수 있습니다.


벡터 검색에 EDB Postgres를 사용하는 이유

Pinecone이나 Milvus 같은 벡터 전용 데이터베이스도 사용할 수 있지만, EDB Postgres와 pgvector를 활용하면 기존 Postgres 환경 안에서 벡터 검색 워크로드를 통합할 수 있습니다.

1. 통합 플랫폼

pgvector를 사용하면 임베딩만을 관리하기 위한 별도의 데이터베이스가 필요하지 않습니다. 트랜잭션 및 분석 데이터를 처리하는 동일한 Postgres 인스턴스에서 AI 워크로드를 실행할 수 있어 데이터 아키텍처를 단순화할 수 있습니다.

2. 엔터프라이즈급 신뢰성

EDB Postgres는 오랜 기간 검증된 Postgres를 기반으로 구축되었습니다. 미션 크리티컬 워크로드에 필요한 고가용성(High Availability, HA), 복제 및 안정성을 활용하면서 벡터 검색을 운영할 수 있습니다.

3. 기존 데이터 및 확장 기능과의 통합

주요 확장 기능, 외부 데이터 래퍼(Foreign Data Wrapper, FDW) 및 통합 프레임워크를 활용할 수 있습니다. 이를 통해 구조화된 데이터, 임베딩 및 외부 AI 모델을 결합한 하이브리드 분석이 가능합니다.

4. 확장성

EDB Postgres Advanced Server 또는 Postgres Distributed와 결합하면 여러 노드에서 벡터 워크로드를 확장할 수 있습니다. 분석과 벡터 검색 워크로드를 하나의 Postgres 기반 플랫폼에서 운영할 수 있습니다.

5. 데이터 거버넌스 및 보안

금융 및 공공 부문은 엄격한 데이터 거버넌스를 요구합니다. EDB Postgres에서 벡터 검색을 실행하면 데이터 소버린, 감사 가능성 및 규정 준수에 필요한 통제 체계를 온프레미스(On-premises) 환경에서 관리할 수 있습니다.


PostgreSQL 벡터 검색으로 AI와 데이터를 통합

벡터 검색은 키워드가 아니라 데이터의 의미와 맥락을 기준으로 정보를 검색하는 방식입니다. 전통적인 데이터베이스와 AI 기반 의미론(Semantics) 사이의 간극을 해소함으로써 EDB Postgres와 pgvector는 기존 엔터프라이즈 데이터 환경에서 지능형 애플리케이션을 운영할 수 있도록 지원합니다.

시맨틱 검색, 추천 엔진 또는 RAG 파이프라인을 구축할 때 EDB Postgres를 활용하면 AI 워크로드를 기존 데이터가 저장된 Postgres 환경에서 함께 운영할 수 있습니다.


PostgreSQL 벡터 검색 FAQ

PostgreSQL 벡터 검색이란 무엇인가요?

PostgreSQL 벡터 검색은 데이터와 검색어를 임베딩이라는 숫자 벡터로 변환한 뒤 의미적으로 가까운 데이터를 찾는 방식입니다. pgvector 확장을 사용하면 PostgreSQL 안에서 임베딩을 저장하고 유사도 검색을 실행할 수 있습니다.

pgvector는 어떤 역할을 하나요?

pgvector는 PostgreSQL에서 벡터 데이터를 저장하고 검색할 수 있도록 vector 데이터 타입과 유사도 검색 기능을 제공하는 확장 기능입니다. 이를 활용하면 문서나 이미지의 임베딩을 기존 비즈니스 데이터와 함께 관리할 수 있습니다.

벡터 검색과 키워드 검색의 차이는 무엇인가요?

키워드 검색은 주로 입력된 단어나 표현의 일치 여부를 기준으로 결과를 찾습니다. 벡터 검색은 표현이 다르더라도 임베딩 사이의 거리를 계산해 의미와 맥락이 유사한 결과를 찾을 수 있습니다.

코사인 유사도와 유클리드 거리의 차이는 무엇인가요?

코사인 유사도는 두 벡터의 방향을 중심으로 비교하며 벡터의 크기는 상대적으로 중요하게 다루지 않습니다. 유클리드 거리는 두 벡터 사이의 직선거리를 계산하므로 크기와 방향의 영향을 모두 받습니다.

RAG에서 벡터 검색이 필요한 이유는 무엇인가요?

RAG에서는 사용자의 질문과 의미적으로 관련성이 높은 문서를 검색해 LLM에 전달해야 합니다. 벡터 검색은 표현이 정확히 일치하지 않더라도 관련 문서를 찾을 수 있어 검색 단계의 기반으로 활용됩니다.

벡터 인덱스는 왜 필요한가요?

저장된 벡터가 많아지면 모든 벡터를 하나씩 비교하는 방식의 연산 비용이 커집니다. IVF나 HNSW 같은 벡터 인덱스는 전체 데이터셋을 모두 스캔하지 않고도 유사한 벡터를 빠르게 찾을 수 있도록 지원합니다.

Share this