본문 바로가기
web/AI

[AI] RAG 와 VectorDB

by 뽀리님 2025. 12. 17.

 

✔️ RAG (Retrieval-Augmented Generation) 
한국말로 번역하면 검색 증강 생성으로 
AI 의 답변 능력을 외부의 신뢰할 수 있는 데이터로 보강하여 답변을 생성하는 기술 및 아키텍처 이다.

즉, AI가 접근할 수 있는 외부 지식들의 모음이라 보면 되겠다.


✔️ 이걸 왜쓰냐?
뭐 검색하다보면 환각(Hallucination) 방지와 최신성 및 전문성 확보 등 이런걸 얘기하지만
궁극적인 목적은 AI가 학습해서는 안되는 민감한 회사기밀, 개인정보등을 학습시키지 않고
AI를 이용하여 저비용으로 시스템을 만들기 위한게 목적이다.
보안, 효율성, 경제성에서 안 쓸 이유가 없다!

이 RAG를 구현하기 위해서는 VectorDB가 필수적으로 이용되고 Qdrant가 그 중 하나다.
(Qdrant는 오픈소스임)


✔️ VectorDB?
백터 DB는 예를들어 '사과'라는 단어를 저장할 경우 [0.1, 0.9, -0.3, ...]와 같은 수백 차원의 벡터로 변환되어 저장된다. 
이 벡터는 '과일'이나 '음식'과 관련된 다른 단어들의 벡터와 공간적으로 가깝게 위치하게되고 추후 과일을 검색하게 되면 이걸 백터값으로 변환하여 요 값이 가까운 단어들이 나오게 되는것이다.

일반 DB는 '사과'라는 단어는 그냥 문자열로 저장되고 땡이다.


✔️ 그럼 백터DB가 무조건 좋은건가?
RAG와 AI 검색 분야에서는 아주 좋은 역할을 하지만 이놈도 한계가 있다.

1. 유사도 검색 
이 놈의 가장 큰 장점이 한계가 될수도 있단거다.
백터DB는 수만개의 데이터중에 ANN 알고리즘을 사용하여 "가장 근사값" 을 찾지 "가장 정확한" 값을 찾는게 아니다.
그렇기에 키워드로 검색하는거에 비효율적이다.
예를들어 "고객번호 12345인 기록 찾아줘" 했을 때, 이런 필터링에서 우리가 쓰는 일반 DB보다 필터링 능력은 떨어진다.(일반 DB는 걍 where조건 걸면 끝인디)

하지만!!! 벡터 DB는 메타데이터 필터링 기능을 통합하여 이 한계를 보완한다.

하..... 또 메타데이터 필터링은 뭐람?

✓ 메타데이터?
벡터와 함께 저장되는 문서에 대한 추가적인 설명 정보다.
즉, 백터 DB에 저장될 때 Tag같이 저장되는 값이다. 
ex) 작성자="김개똥" / 업무종류="재무" / 문서종류 = "보고" / 작성일 = "2025-12-01"

요걸 통해 정확도를 높인단 말임!


2. 임베딩 모델 의존성
백터 DB를 쓸때 필수로 써야 하는 모델이다.
왜냐? 백터DB에 저장할때 우리가 백터값으로 저장한다 그러지 않았는가.
이 백터값으로 변환해주는게 임베딩 모델이다.

우리가 입력값을 받았을 때 그 의미를 분석하고, 백터 DB가 저장할 수 있는 형태인 
숫자배열(백터값)로 변환하는 작업을 전담한다.
이게 RAG 시스템의 최종 검색 정확도를 결정하는 핵심이다.

그렇게 때문에 우린 이 임베딩 모델이 좀 띨빵하면 띨빵한대로 값이 저장된단거다 ㅠㅠ

이말은 즉슨, 새로운 임베딩 모델이 나올때마다 업데이트를 해줘야 한단거다...
(아 귀찮!!!... 성능을 위해서 어쩔수 없다..)

....아니 그럼 나올때마다 업데이트 때려줘야해?!

Nop!! 놉🙅🙅 !! 그건 아니다.

새 모델이 기존모델보다 겁나 압도적일경우!!! 성능이 무슨 HDD vs SSD 급으로 차이가 많이 난다!!!
그럼 고려해볼수 있겠다.

또 비즈니스 품질을 봐야 한다.

검색했는데 RAG시스템에서 생각보다 검색을 아주 잘해온다. 그래서 사용자들이 불편함이 없다.
그럼 굳이 바꿀 필요는 없지! 

이런 이슈로 검색품질을 지표로 만들어 모니터링은 꾸준히 해줘야 한다.

3. 리소스, 운영복잡성
아무래도 빠른검색을 위해 백터 인덱스를 메모리에 로드하는 경우가 많기에 일반 DB보다 메모리 리소스가 많이 든다.

그리고 백터DB에 샤딩(Sharding), 인덱싱(Indexing), 모델 업데이트 등 운영 기술스택이 일반 DB보단 좀 높은 수준이다.

4. 트랜젝션
백터DB는 빠른검색과 고가용성을 목적으로 만들어졌다.
수억 개의 벡터에서 밀리초 단위의 유사도 검색을 하는 것이 주 목적이지, 데이터의 정확한 무결성을 보장하는 것이 최우선이 아니다.
그렇기 때문에 일반 DB같이 ACID 속성을 보장하여 데이터 무결성을 지키진 않는다.
(물론 부분적으로 약하게 지원하긴한다..아주 미세하게)

따라서 목적에 맞게 써야 한다. 즉 실시간 금융거래나 재고관리 같이 강력한 데이터 무결성이 필요한 경우엔 일반 DB를 쓰는게 적합하겠다.



✔️ 임베딩 모델
아까 위에서 얘기한 놈이다.
RAG 시스템의 가장 코어역할 , 근본적인 뇌!! 지능!! 역할을 담당하며, 백터DB와 AI를 연결하는 다리역할을 한다.

임베딩 모델은 텍스트를 입력받아 그 의미와 맥락을 압축하고 수치화하여 고차원 벡터(숫자 배열)로 변환해주는 딥러닝 기반의 인공지능 모델이며, 이 숫자로 변환해주는 과정을 임베딩이라 한다.



-끝-

'web > AI' 카테고리의 다른 글

[AI] Qdrant 로 RAG 구축하기(2)  (0) 2025.12.18
[AI] Tool Calling  (0) 2025.12.17
[AI] Qdrant 로 RAG 구축하기(1)  (1) 2025.12.16
[AI] 챗봇만들기 프로젝트 (1)  (0) 2025.12.04
[AI] MCP 프로토콜  (0) 2025.12.03