Replies: 6 comments
Vector DB는 무엇이고 관계형 데이터베이스와 무엇이 다른가?Vector DBVector DB는 텍스트, 이미지, 오디오, 상품, 문서 같은 데이터를 임베딩 모델로 변환한 고차원 벡터를 저장하고 RDB랑 뭐가 다를까?RDB는 row, column, index, SQL을 중심으로 정확한 조건 검색과 트랜잭션 처리에 강하다. 예시이때 권한 metadata가 빠지면 사용자가 볼 수 없는 문서가 답변에 섞일 수 있다. 반대로 chunk가 너무 작거나 임베딩 모델이 도메인 용어를 잘 모르면 정답 문서가 검색되지 않을 수 있다. AI 서비스에서 벡터 검색이 필요한 이유는 무엇인가?기존의 키워드 검색 방식은 단어가 정확하게 일치하거나 비슷한 형태여야 검색 성능이 좋다. 근데 "비밀번호 까먹음", "로그인 안 됨" 과 같이 단어는 다르지만 의미적으로는 비슷할 수 있다. 그래서 Vector DB는 이런 의미 기반 검색을 위해 등장했다. 특히 RAG에서는 LLM이 답변하기 전에 관련 문서를 찾아야 하므로, 문서를 임베딩해서 Vector DB에 넣고 질문과 가까운 문서를 top-k로 검색한다. 벡터 데이터베이스와 관계형 데이터베이스는 어떤 기준으로 함께 사용할 수 있는가?정확히 관리해야 하는 데이터는 RDB, 의미적으로 찾아야 하는 데이터는 Vector DB를 이용한다.
판단 기준
|
1. 벡터 데이터베이스란 무엇이며, 관계형 데이터베이스와 무엇이 다른가?벡터 데이터베이스는 텍스트, 이미지, 음성, 문서 같은 데이터를 숫자 배열인 벡터로 저장하고, 그 벡터들 사이의 의미적 유사도를 기준으로 검색하는 데이터베이스입니다.
2. AI 서비스에서 벡터 검색이 필요한 이유는 무엇인가?AI서비스에서 사용자의 질문이 내부 지식과 의미는 같지만 다른 단어로 표현되는 경우가 많습니다.
LLM은 최신 문서나 주입되지 않은 지식에 대해 정확한 답을 도출하지 못하기 때문에, 외부지식을 검색해서 LLM에 넣어주는 구조가 사용된다. 이때 벡터 검색을 통해 외부지식을 넣어주기에 핵심 역할을 한다고 볼 수 있다. 3. 벡터 데이터베이스와 관계형 데이터베이스는 어떤 기준으로 함께 사용할 수 있는가?벡터DB와 관계형DB를 함께 사용하는 경우가 많습니다. 관계형DB는 정확성과 상태 관리가 필요한 데이터를 맡고, 벡터 DB는 의미 기반 탐색이 필요한 데이터를 맡습니다. 예를 들어 고객지원 AI를 만든다면, 관계형DB는 사용자정보, 티켓 상태, 결제 이력 등을 처리하고, 벡터DB는 도움말 문서, 약관, 매뉴얼, 과거 문의 내용의 임베딩을 처리한다.
+ 임베딩(Embedding) (추가 공부): 텍스트, 이미지, 음성 등의 데이터를 AI가 이해할 수 있는 숫자 벡터로 변환하는 과정.
|
1. 벡터 데이터베이스란 무엇이며, 관계형 데이베이스와 무엇이 다른가?벡터 데이터베이스는 텍스트, 이미지, 오디오와 같은 비정형 데이터를 컴퓨터가 이해할 수 있는 고차원 숫자의 배열인 '벡터(임베딩)'로 변환하여 저장하고, 이 벡터 간의 유사도를 계산해 의미적으로 가까운 데이터를 빠르게 찾아주는 데이터베이스이다. 예를 들어 임베딩 모델이 다음 문장을 벡터로 변환한다고 가정할 수 있다. 표현에 사용된 단어는 다르지만 의미가 비슷하므로, 벡터로 변환하면 서로 매우 가까운 위치에 놓이게 되어 "의미가 비슷한 단어"로 인식될 수 있다. 이러한 특성 덕분에 벡터 데이터베이스는 단순한 문자열 일치가 아니라 '의미' 자체를 기준으로 검색을 수행할 수 있다. 벡터 데이터베이스는 일반적으로 다음 작업을 담당한다.
대표적인 유사도 계산 방식은 다음과 같다.
반면 관계형 데이터베이스는 데이터를 행과 열로 이루어진 표 형태의 테이블에 저장하고, SQL이라는 질의 언어를 통해 정확한 조건에 맞는 데이터를 검색하는 방식으로 동작한다. 예를 들어 "나이가 30세 이상인 사용자를 찾아줘"와 같이 명확한 조건에 따라 값이 정확히 일치하거나 특정 범위에 속하는 데이터를 빠르게 찾아내는 데 최적화되어 있다. 이때 내부적으로는 B-Tree나 해시(Hash) 같은 인덱스 구조를 사용해 검색 속도를 높인다. 두 데이터베이스의 가장 근본적인 차이는 '무엇을 기준으로 데이터를 찾는가'에 있다. 관계형 데이터베이스는 정확한 일치(exact match)를 기반으로 하기 때문에, 입력한 조건과 정확히 맞아 떨어지는 데이터만 결과로 반환한다. 반면 벡터 데이터베이스는 코사인 유사도나 유클리드 거리 같은 방식으로 벡터 간의 '가까운 정도'를 계산하여, 완전히 똑같지는 않지만 의미적으로 유사한 데이터까지 찾아낼 수 있다. 이러한 차이 때문에 관계형 데이터베이스는 "완전히 일치하는 값을 찾는 질문"에 강하고, 벡터 데이터베이스는 "비슷한 것을 찾는 질문"에 강하다고 할 수 있다. 또한 인덱싱 방식에서도 차이가 나타난다. 관계형 데이터베이스는 정형화된 값을 빠르게 찾기 위한 인덱스를 사용하는 반면, 벡터 데이터베이스는 HNSW나 IVF와 같은 근사 최근접 이웃(Approximate Nearest Neighbor, ANN) 알고리즘을 사용한다. 이는 고차원 벡터 공간에서 모든 데이터를 일일이 비교하지 않고도 유사한 벡터를 빠르게 찾아내기 위한 방식으로, 데이터를 규모가 커질수록 그 중요성이 커진다. 2. AI 서비스에서 벡터 검색이 필요한 이유는 무엇인가?
기존 RDB의 키워드 매칭이나 정규식 검색으로는 "의미"를 이해하지 못하기 때문에, 자연어 이해가 필요한 AI 서비스에는 벡터 검색이 사실상 필수적이다. 3. 벡터 데이터베이스와 관계형 데이터베이스는 어떤 기준으로 함께 사용할 수 있는가?실무에서는 둘을 경쟁 관계가 아닌 상호 보완 관계로 사용하는 경우가 많다. 함께 사용하는 대표적 패턴
최근에는 pgvector(PostgreSQL 확장)처럼 관계형 DB 안에 벡터 검색 기능을 내장한 솔루션도 늘고 있어, 별도의 벡터 DB 없이 하나의 시스템에서 두 가지를 함께 처리하는 경우도 많아지고 있다. |
|
벡터 데이터베이스란 무엇이며, 관계형 데이터베이스와 무엇이 다른가?벡터 데이터베이스는 데이터를 저장할 때, 데이터를 벡터화 시킨 데이터를 저장하기 위해 사용한다. 관계형 데이터베이스는 어떤 데이터 A 와 B의 관계를 나타낼 수 있다(PK, FK 등). 벡터 데이터베이스는 이와 다르게 데이터를 벡터화하기 때문에, 데이터가 수치화되어 본래의 의미를 잃을 수 있고, 이 동작은 데이터간 유사도를 파악하기 좋은 방향으로 작용한다. 예를 들어서 단어 데이터를 보면 동물 ‘개’ 가 [0.12,-0.5,0.45] 와 같은 벡터로 저장되고, ‘푸들’ 이 [0.125,-0.44,0.6] 이라는 유사한 벡터값을 가지고 저장될 때, 바다에 사는 ‘게’ 는 [0.4,0.2,0.12] 이런 식의 거리가 먼 벡터값으로 저장된다. 이처럼 관계형 데이터베이스와는 다르게 벡터 데이터베이스는 유사도 검색에 많이 활용되는 기술이다. AI 서비스에서 벡터 검색이 필요한 이유는 무엇인가?1번에 적은 것처럼 벡터 데이터베이스는 유사도 검색에 장점을 가지고 있다. 키워드 검색으로는 불가능한 (노트북 ↔ 컴퓨터) 언어 간 유사도 검색을 통해 컴퓨터가 사람처럼 단어의 의미를 이해할 수 있게 된다. 이게 벡터 검색이 필요한 첫번째 이유이다. 또한 LLM 의 경우 환각을 만들어내는데, 이를 방지하기 위해, RAG사용 시, 벡터 검색이 필수적이다. 또한 텍스트 데이터 뿐만이 아니라 다른 비정형 데이터도 동일한 벡터 공간에 매핑할 수 있는 장점이 있다. ANN 알고리즘과 같은 기술을 사용해 유사 데이터를 빠른 속도로 검색할 수 있다는 장점도 있다. 벡터 데이터베이스와 관계형 데이터베이스는 어떤 기준으로 함께 사용할 수 있는가?벡터 db는 유사도 점수와, 데이터 id, 메타데이터 등을 반환한다. 예시와 함께 보자면, 특정 데이터 검색을 필요로 하는데 필터링할 수 있는 데이터가 있다고 해보자. 발행일이 2025년이고 수강신청과 관련된 공지사항 검색을 원한다고 할 때, 벡터 db에서 공지사항을 검색해서 나온 데이터에 연도 필터를 적용하는 것 보다는 발행일로 필터링을 한번 하고 수강신청과 관련된 공지사항 문서를 벡터 db에서 검색하는 것이 더 효율적일 것이다(아닌 경우도 있을 수 있음). 이처럼 벡터 db와 rdb 를 보다 효율적으로 사용하기 위해, 검색 순서에 따른 효율성을 기준으로 사용해야 한다. 추후 공부우선 ★
기반
나중에
|
기본 질문1. 벡터 데이터베이스란 무엇이며, 관계형 데이터베이스와 무엇이 다른가?벡터 데이터베이스는 텍스트 이미지 등 비정형 데이터를 숫자의 배열 형태인 벡터로 변환하여 저장하고, 이를 기반으로 유사도 검색을 빠르게 수행할 수 있게 하는 데이터베이스입니다. 벡터 데이터베이스는 데이터를 고차원 벡터화하는 점, 단순 키워드 검색이 아닌 맥락과 유사성 기반으로 한 검색이 가능하다는 것, 그리고 대용량 확장성 및 실시간 처리가 가능하다는 등의 특징을 가집니다. 관계형 데이터베이스와의 차이점은 키워드 검색과 관련된 특징에서 알 수 있듯이 관계형 데이터베이스는 주로 키워드 검색을 하고 그에 따라 저장되는 데이터들이 정형화돼있어야 한 반면 벡터 데이터베이스는 벡터를 활용한 유사도 검색으로 비정형 데이터가 저장이 가능하다는 점이 있습니다. 하지만 이런 비정형 데이터의 유사도 검색에만 유리할 뿐 정형 데이터를 정확하고 안정적이게 검색하는 것, 복잡한 관계를 처리하는 것에는 관계형 데이터베이스가 더 유리합니다. 2. AI 서비스에서 벡터 검색이 필요한 이유는 무엇인가?벡터 검색은 비정형 데이터를 유사도 검색으로 맥락적으로 유사한 답을 찾아주기 때문에 AI 서비스에서 벡터 검색이 요구됩니다. 또한 LLM의 등장 이후 LLM은 학습 시에 배운 것을 잘 알지만 그 이후의 지식은 알지 못하는 지식 컷오프가 존재합니다. 이를 다시 엄청난 연산이 요구되는 대규모 학습을 시키는 것이 아닌 벡터 데이터베이스에서 근거 문서를 벡터검색으로 찾아와 프롬프트로 같이 주입해주는 RAG를 활용하고 이를 통해 비용 절감과 최신성 확보, 환각 방지를 해결합니다. 3. 벡터 데이터베이스와 관계형 데이터베이스는 어떤 기준으로 함께 사용할 수 있는가?벡터 데이터베이스는 비정형 데이터를 검색에 강점을 가지고 관계형 데이터베이스는 정형 데이터를 검색에 강점을 가집니다. 이를 함께 사용하는 방안은 어떤 데이터를 정확한 일치성으로 검색할지 유사도로 검색할지의 영역을 분리하고 일치성 검색의 영역을 메타데이터로 관계형 데이터베이스, 유사도 검색을 벡터화해서 벡터 데이터베이스에 저장하고 두 검색을 함께 써서 정확도와 유사성을 보장하는 방법이 있습니다. 검색 방식은 크게 세가지가 있습니다. 첫 째, 키워드 검색, 유사도 검색을 동시에 진행하는 병렬 검색 방식이 입니다. 병렬로 두 방식으로 검색해 결과를 n개를 순위나 점수를 매겨 받아오고 그 결과를 RRF 같은 알고리즘을 사용해 두 결과를 순위와 점수를 조합해 최종 데이터를 뽑아냅니다. 둘 째, 사전 필터링으로 메타데이터를 키워드 검색으로 미리 필터링 과정을 거치고 필터링 결과를 유사도 검색을 진행해 최종 데이터를 뽑아냅니다. 마지막으로는 사후 필터링으로 유사 검색 결과를 키워드 검색으로 결과를 필터링해서 보정을 하는 방식입니다. |
Uh oh!
There was an error while loading. Please reload this page.
📆 일자: 26년 7월 30일(목)
AI 서비스는 사용자의 질문에 맞는 최신 정보와 맥락을 제공해야 합니다. 하지만 LLM은 학습되지 않은 정보를 알 수 없고, 긴 문서 전체를 매번 프롬프트에 넣는 방식은 비용과 성능 면에서 한계가 있습니다. 이러한 문제를 해결하기 위해 의미적으로 유사한 정보를 검색하는 벡터 검색과 이를 효율적으로 저장·조회하는 벡터 데이터베이스가 활용되고 있습니다. 특히 RAG 기반 서비스에서 벡터 데이터베이스는 LLM이 답변에 필요한 외부 지식을 찾도록 돕는 핵심 요소입니다. 이에 따라 이번 스터디에서는 벡터 데이터베이스의 개념과 AI 서비스에서의 활용 방식에 대해 알아보고자 합니다.
🤔오늘의 질문
벡터 데이터베이스란 무엇이며, 관계형 데이터베이스와 무엇이 다른가?
AI 서비스에서 벡터 검색이 필요한 이유는 무엇인가?
벡터 데이터베이스와 관계형 데이터베이스는 어떤 기준으로 함께 사용할 수 있는가?
All reactions