RAG와 벡터 데이터베이스

2026. 1. 14. 16:21·공부하기/ETC

RAG(Retrieval-Augmented Generation)

검색(Retrieval)과 생성(Generation)을 결합한 AI 아키텍처

  • LLM이 답변을 생성하기 전에 외부의 신뢰할 수 있는 데이터베이스나 문서 저장소에서 관련 정보를 먼저 검색한 뒤, 그 정보를 바탕으로 문장을 생성하는 방식

RAG 아키텍처 구성 요소

  • Dense Retriever (예: DPR)
    • 사용자가 질문을 하면, 관련 있는 문서나 정보를 찾음
    • 단순히 단어가 똑같은 것이 아니라 뜻이 비슷한 문장이나 내용을 파악해 골라옴
  • Document Store (예: Vector 데이터베이스)
    • 찾을 문서들이 저장되어있는 데이터베이스
    • 다양한 정보가 저장되어 있고, Retriever가 적절한 문서를 뽑아오는 구조
    • 흔히 FAISS, Pinecone, Weaviate 같은 벡터 DB가 이 역할을 함
  • Generator (예: GPT, Claude 등)
    • Retriever가 가져온 정보를 바탕으로 실제 대답을 만들어주는 역할
    • 생성형 AI 모델로서, 검색한 문서를 읽고 내용을 요약하거나 문장을 새롭게 구성해서 자연스러운 답변을 생성함
  • Reranker (선택적)
    • 검색된 여러 문서 중에서 가장 중요한 것부터 우선순위를 정해주는 보조 시스템
    • 있으면 더 정확하고 믿을 수 있는 응답을 만들 수 있음

Vector Database

다양한 유형의 정보를 의미와 컨텍스트를 캡처하는 벡터로 인코딩하여 일종의 ML 모델인 임베딩 모델을 만들고, 이를 통해 인접 데이터 포인트를 검색하여 빠르게 유사한 자산을 찾을 수 있는 데이터베이스이다.

  • 기존 데이터베이스는 정확한 일치와 사전 정의된 관계를 기반으로 작동하는 반면, 인간의 이해는 미묘하고 맥락적이며 다차원적이기 때문에 전문가들은 이를 ‘시맨틱 갭’이라고 부른다.
    • 정확한 일치보다는 개념적 유사성 찾기
    • 서로 다른 콘텐츠 간의 문맥적 관계 이해
    • 키워드를 넘어 정보의 의미론적 본질 파악
  • 최신 임베딩 모델은 텍스트, 이미지, 오디오 등 원시 콘텐츠를 표면 수준의 차이에 관계 없이 유사한 개념이 벡터 공간에서 함께 클러스터링되는 고밀도 벡터로 변환한다.
    • 어휘 형태가 다르더라도 ‘자동차’, ‘차량’과 같은 개념을 벡터 공간 내에서 근접하게 배치한다.

핵심 개념

  • 벡터 임베딩 : 비정형 데이터(텍스트, 이미지, 오디오 등)의 의미론적 의미를 포착하는 고차원 숫자 표현
  • 전문화된 인덱싱 : 고차원 벡터 공간에 최적화된 알고리즘으로 빠른 근사치 검색을 가능하게 함.
    • 벡터를 색인화하여 유사도 검색의 속도와 효율성을 높이고, 다양한 머신 러닝 알고리즘을 활용해 벡터 임베딩에 대한 색인 생성
  • 거리 메트릭 : 벡터 간의 유사성을 정량화하는 수학적 점수

벡터 공간과 임베딩

  • 벡터 임베딩 : 비정형 데이터를 숫자 형식으로 나타내는 고정 길이의 부동 소수점 숫자 배열(100~32,768 차원까지 가능)
    • 고차원 벡터 공간에서 유사한 항목을 서로 가깝게 배치 ex) ‘왕’과 ‘여왕’은 서로 ‘자동차’보다 가까운 벡터 표현을 갖게 됨

거리 메트릭

  • 거리 메트릭 : 유사도 계산 방식에 근본적인 영향을 미치는 메트릭
    • 유클리드 거리 : 유클리드 공간에서 두 점 사이의 직선 거리
    • 코사인 유사도 : 크기보다는 방향에 중점을 주고 두 벡터 사이의 각도의 코사인을 측정
    • 등등 …
    • 사용 사례마다 다른 거리 메트릭이 필요할 수 있음 (ex. 텍스트 임베딩 → 코사인 유사도가 더 적합, 이미지 임베딩 → 유클리드 거리가 더 적합 등등)

References

  • https://www.koreadeep.com/blog/rag
  • https://milvus.io/ko/blog/what-is-a-vector-database.md
저작자표시 비영리 변경금지 (새창열림)

'공부하기 > ETC' 카테고리의 다른 글

실시간 데이터 전송 기술 정리 | Polling, Long-Polling, SSE, WebSocket  (1) 2025.04.18
Unique한 값이 필요할 때 사용하는 UUID, UUID란?  (0) 2025.03.19
JWT 찐하게 이해하기 👀 | JWT 구성과 인증 원리  (0) 2025.03.13
Servlet 이해하기 (Web Server, WAS, Servlet)  (0) 2025.01.22
도메인 로직(Domain Login)이 뭔데?  (2) 2024.11.11
'공부하기/ETC' 카테고리의 다른 글
  • 실시간 데이터 전송 기술 정리 | Polling, Long-Polling, SSE, WebSocket
  • Unique한 값이 필요할 때 사용하는 UUID, UUID란?
  • JWT 찐하게 이해하기 👀 | JWT 구성과 인증 원리
  • Servlet 이해하기 (Web Server, WAS, Servlet)
다섯자두
다섯자두
All I need is 💻 , ☕️ and a dash of luck
  • 다섯자두
    subbni
    다섯자두
  • 전체
    오늘
    어제
    • 전체 글 (88) N
      • 개발 이야기 (0)
      • 만들어보기 (17)
        • FromBookToBook (5)
        • Spring (5)
        • Node.js & React (3)
        • TroubleShooting (4)
      • 공부하기 (71) N
        • Network (3)
        • Cloud (1)
        • Database (5)
        • Java (13)
        • Javascript (0)
        • Spring (9)
        • React (18)
        • Algorithm (8)
        • 자료구조 (7)
        • ETC (7) N
      • 회고 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • velog
  • 공지사항

  • 인기 글

  • 태그

    Til
    springboot
    알림 기능
    redis
    SQL
    실시간 데이터 전송 기술
    서명알고리즘
    aws
    로그인
    프로젝트
    Express
    Spring
    pdf 자동 다운로드
    알고리즘
    java
    자료구조
    HTTP
    outbox
    오블완
    재시도 로직
    pdf 프리뷰 실패
    mysql
    outbox 패턴
    network
    최단거리
    SQS
    SSE
    Database
    티스토리챌린지
    JPA
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
다섯자두
RAG와 벡터 데이터베이스
상단으로

티스토리툴바