벡터 데이터베이스와 RAG, 처음부터 이해하기
ChatGPT에게 사내 보고서의 내용을 물어본다. 모델은 그 보고서를 읽은 적이 없다. 그런데 답변은 나온다. 문장은 매끄럽고, 논리도 그럴듯하다. 문제는 내용이 틀렸다는 것이다.
이것이 LLM의 본질적 한계다. 대규모 언어 모델은 학습 데이터의 패턴을 기반으로 '그럴듯한 다음 단어'를 생성한다. 사실을 검증하는 것이 아니라 확률적으로 자연스러운 문장을 만들 뿐이다. 이 과정에서 환각(hallucination)이 발생한다.
박사급으로 똑똑한 두뇌가 있는데, 그 두뇌가 기억에만 의존해서 답변한다. 기억이 정확할 때는 훌륭하지만, 기억이 없거나 왜곡되면 자신 있게 틀린다. 학습 데이터에 편향이 있으면 답변도 편향된다. 모델 자체는 그 편향을 인식하지 못한다.
해법은 단순하다. 기억에 의존하지 말고, 필요한 자료를 그때그때 찾아서 읽게 만들면 된다. 여기서 검색이 핵심이 된다. 그런데 그 검색이 키워드 매칭 수준이면 소용없다.
"사원증 재발급 절차"를 검색하면 결과가 없고, "ID카드 재발행"으로 바꿔야 문서가 나온다. 같은 뜻인데 단어가 다르다는 이유로 검색이 실패한다. 똑똑한 두뇌에 정확한 자료를 가져다주려면, 검색 자체가 먼저 고도화되어야 한다.
검색을 고도화하려면 먼저 컴퓨터가 글의 '의미'를 다룰 수 있어야 한다. 컴퓨터는 숫자만 처리한다. 그래서 텍스트의 의미를 숫자로 변환하는 과정이 필요하다. 이것을 임베딩(embedding)이라 한다.
"오늘 날씨가 좋다"라는 문장을 수백~수천 개의 숫자로 이루어진 배열(벡터)로 변환한다. OpenAI의 text-embedding-3-small 모델은 하나의 문장을 1,536개의 숫자로 표현한다. 더 정밀한 text-embedding-3-large는 3,072차원까지 올라간다.
핵심은 이것이다. 의미가 비슷한 문장은 벡터 공간에서 가까운 위치에 놓인다.
도서관의 사서를 떠올려보자. "환경 문제 다룬 소설 있어요?"라고 물으면, 사서는 제목을 정확히 매칭하지 않는다. 생태 문학, 기후 소설, 디스토피아 같은 '의미의 영역'에서 비슷한 책을 찾아준다. 임베딩이 하는 일이 이것과 같다. 단어의 철자가 아니라 뜻의 거리를 계산한다.
"강아지"와 "puppy"는 철자가 완전히 다르지만 벡터 공간에서는 가까이 위치한다. "강아지"와 "자동차"는 멀리 떨어져 있다. 이 거리 계산이 검색의 정밀도를 바꾸는 출발점이다. "사원증 재발급"과 "ID카드 재발행"도 벡터 공간에서는 가까이 놓인다.
임베딩으로 의미를 숫자로 바꿨다. 이 벡터들을 어디에 저장하고 어떻게 검색할 것인가. 여기서 벡터 데이터베이스가 등장한다.
기존 관계형 데이터베이스(SQL)는 정확한 값 매칭에 특화되어 있다. "나이 = 30"처럼 딱 맞는 조건으로 찾는다. 반면 벡터 데이터베이스는 '가장 비슷한 것'을 찾는다. "이 벡터와 가장 가까운 벡터 5개를 가져와라"가 기본 질의다.
검색의 성격 자체가 다르다. SQL은 정답을 안다는 전제 하에 꺼내오는 것이다. 벡터 검색은 "정확히 뭘 찾아야 하는지 모르지만 이런 느낌"이라는 질의에 답한다. 이 차이가 LLM에 가져다줄 자료의 품질을 결정한다. 검색이 정교할수록 더 정확한 데이터가 LLM에 전달되고, 그만큼 답변의 품질이 올라간다.
벡터가 대량으로 쌓이면 하나하나 비교할 수 없다. 벡터 데이터베이스는 ANN(Approximate Nearest Neighbor) 알고리즘으로 정확도를 약간 양보하는 대신 속도를 확보한다. 대표적인 벡터 데이터베이스로 Pinecone, Chroma, Milvus, Weaviate가 있다. 2023년 Pinecone은 시리즈 B에서 1억 달러를 유치하며 기업 가치 7.5억 달러를 기록했다. 시장 전체는 2025년 약 26.5억 달러 규모이며, 연평균 27.5%로 성장 중이다.
한 가지 주의할 점이 있다. 벡터 검색이 항상 정답은 아니다. "사용 금지"와 "사용 가능"은 의미가 정반대지만 임베딩 유사도에서는 가깝게 나올 수 있다. 실무에서는 벡터 검색과 키워드 검색을 함께 쓰는 하이브리드 방식이 기본값에 가깝다.
임베딩으로 의미를 수치화하고, 벡터 데이터베이스에 저장했다. 마지막 퍼즐은 이 검색 결과를 LLM에 연결하는 것이다. 이것이 RAG(Retrieval-Augmented Generation, 검색 증강 생성)다.
RAG의 핵심 아이디어는 간단하다. LLM이 기억에 의존하지 않고, 질문을 받을 때마다 관련 자료를 검색해서 읽은 뒤 답변하게 만드는 것이다. 2020년 Lewis et al.이 이 개념을 처음 제안했다. 당시 RAG 모델은 Natural Questions 벤치마크에서 44.5 EM(Exact Match)을 기록하며 T5-11B 모델(34.5 EM)을 앞질렀다. 올바른 자료를 찾아서 읽으면 거대한 모델보다 정확할 수 있다는 것을 보여준 결과다.
작동은 세 단계로 이루어진다.
첫째, 사용자가 질문한다. "이번 분기 매출 증감 요인이 뭐야?"
둘째, 그 질문을 임베딩으로 변환한 뒤, 벡터 데이터베이스에서 의미상 가장 관련 있는 문서 조각들을 검색한다.
셋째, 검색된 문서 조각을 LLM의 프롬프트에 함께 넣고 답변을 생성한다. AI는 자기 머릿속 지식이 아니라, 방금 찾은 자료를 근거로 대답한다.
이것이 왜 LLM의 한계를 해결하는가.
환각이 줄어든다. 기억 대신 검색된 근거를 기반으로 답변하기 때문이다. 암 정보 챗봇 연구에서 RAG와 GPT-4를 결합했을 때 환각률은 0%였다. RAG 없이 구글 검색만 활용한 GPT-4는 6%였다. 방사선의학 연구에서도 RAG 적용 후 환각률이 8%에서 0%로 떨어졌다. 이 수치들은 각기 다른 조건에서 측정된 것이므로 경향으로 읽어야 하지만, 방향은 일관된다.
편향을 완화할 수 있다. LLM이 학습 데이터에서 물려받은 편향은 모델 자체로는 고치기 어렵다. 그러나 검증된 출처의 문서를 검색해서 답변 근거로 삼으면, 편향된 기억 대신 사실에 기반한 답변이 가능해진다. 출처를 추적할 수도 있다. "아마 이럴 것이다"가 아니라 "이 보고서 3페이지에 따르면"이 되는 것이다.
최신 정보를 반영할 수 있다. LLM의 학습 데이터는 특정 시점에 고정되어 있다. 벡터 데이터베이스에 새 문서를 추가하는 것만으로 최신 정보가 반영된다.
다만 RAG도 만능은 아니다. 가장 큰 변수는 문서를 어떻게 쪼개느냐다(Chunking). 조각이 너무 작으면 맥락이 사라지고, 너무 크면 무관한 내용이 섞여 검색 정밀도가 떨어진다. 적정 크기를 찾는 것은 단순한 작업이 아니다. 한 의료 데이터 엔지니어링 사례에서는 청킹 전략을 최적화한 뒤 환각률이 12%에서 0.8%로 줄었지만, 최적화에 수개월이 걸렸다.
비정형 내부 문서 기반 RAG에서는 최적화 후에도 5~15%의 환각이 남을 수 있다. 앞서 본 부정문 구분 문제처럼, 벡터 검색 자체도 의미의 뉘앙스를 완벽히 잡아내지는 못한다. RAG의 도입은 시작이고, 실제 성능을 끌어올리는 것은 검색 파이프라인의 세부 엔지니어링이다.
LLM은 박사급으로 똑똑하지만, 기억에만 의존하면 자신 있게 틀린다. 벡터 데이터베이스는 그 똑똑한 두뇌에 정확하고 빠른 검색 기능을 붙여준다. RAG는 이 둘을 연결하는 구조다. 검색의 정교함이 곧 답변의 정확도가 된다.
파인튜닝과는 어떻게 다른가. 파인튜닝은 모델 자체를 재학습시키는 방식이다. 농업 도메인 연구에서 파인튜닝은 정확도를 6%p, RAG는 5%p 향상시켰다. 둘을 결합하면 효과가 누적되었다. 둘은 대체재가 아니라 상보재다.
LLM은 그럴듯하게 말하는 데 탁월하다. 그러나 그럴듯함과 정확함은 다른 것이다.
벡터 데이터베이스와 RAG는 이 간극을 메운다. 임베딩이 글의 뜻을 숫자로 바꾸고, 벡터 데이터베이스가 정교하게 찾아주고, RAG가 찾은 자료를 근거로 답변을 만든다. 단어를 매칭하는 것이 아니라, 의미를 이해하는 검색이다. 검색이 정교할수록 답변이 정확해진다. 결국 RAG의 품질은 LLM의 크기가 아니라 검색의 정밀도가 결정한다.
[1] JMIR Cancer, "Reducing Hallucinations in Generative AI Chatbots for Cancer Information," 2024. https://pmc.ncbi.nlm.nih.gov/articles/PMC12425422/
[2] OpenAI, "New embedding models and API updates," 2024-01-25. https://openai.com/index/new-embedding-models-and-api-updates/
[3] Pinecone, "Series B Announcement," 2023-04-27. https://www.pinecone.io/blog/series-b/
[4] MarketsandMarkets, "Vector Database Market Report," 2025. https://www.marketsandmarkets.com/Market-Reports/vector-database-market-112683895.html
[5] Lewis et al., "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks," NeurIPS 2020. https://arxiv.org/abs/2005.11401
[6] NeurIPS 2020 Proceedings, Lewis et al. https://proceedings.neurips.cc/paper/2020/hash/6b493230205f780e1bc26945df7481e5-Abstract.html
[7] PMC, "RAG elevates local LLM quality in radiology contrast media consultation," 2025. https://pmc.ncbi.nlm.nih.gov/articles/PMC12223273/
[8] Balaguer et al., "RAG vs Fine-tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture," 2024. https://arxiv.org/abs/2401.08406
[9] LangChain, "Build a RAG agent — Official Tutorial," 2025. https://python.langchain.com/docs/tutorials/rag/
[10] IBM, "LlamaIndex RAG Tutorial," 2025. https://www.ibm.com/think/tutorials/llamaindex-rag
[11] Chroma, "Official Site," 2025. https://www.trychroma.com/