본문 바로가기

2. Development/메타휴먼 프로젝트

7. RAG를 위한 Vector DB 비교

 

RAG는 Retrieval-Augmented Generation의 약자이다.

RAG와 관련된 언급을 이전 글 에서 했었는데 이번글에서는 이를 위한 Vector DB에 대한 비교를 해보려고 한다.

 

Vector DB비교

다음은 pytorch korea 커뮤니티에서 가져온 Vector DB의 비교 테이블이다.

2023년 기준 Vector 데이터베이스 비교 (https://discuss.pytorch.kr/t/2023-picking-a-vector-database-a-comparison-and-guide-for-2023/2625)

 

우선 필자가 써본 데이터베이스의 극히 개인적인 경험에 대해서 간단하게 서술하자면 다음과 같다.

Pinecone

단어 유사도 맞추기 게임을 만들때 처음으로 사용해봤다. Pinecone을 사용해본건 출시된지 얼마 안됬었을 때였지만, 파이어베이스의 데이터베이스와 비슷한 느낌을 받았던 Vector DB이다.

그리고 상당히 API가 사용하기 좋게 구현되어있어서 편리했었던 기억이 있다. 클라우드에서 데이터베이스 관리를 하기 매우 쉽게 만들어놓았다. 

Chroma

프리렌서로 일할때 하던 프로젝트에서, 해당 데이터베이스를 사용해봤다.

일단 벡터 기반으로 검색을 하면서 metadata로 하이브리드 필터를 상당히 편리하게 걸 수 있었다.

직관적이고 간단한 문법으로 검색할 수 있으며 검색 쿼리를 JSON으로 작성할 수 있다는게 매우 편리한 포인트였다.

JSON 조건 제어가 편리한 이유는 조건을 Function Call을 이용한 쿼리 생성에 매우 용이하기 때문이다. (경험상 매우 편리했음)

 

또한 오픈소스이며, 클라우드를 사용하지않고 클라이언트용으로 사용하면 Apache 2.0 라이센스에 무료로 이용할 수 있다는 점이 상당히 괜찮은 점이었다.

 

대신 아쉬운점은 기능적 측면에서 다양하지 않다는 점이었다. 검색도 굵직한 범용적인 쿼리들은 다 있었지만, 가려운데 긁어주는 세분화되고 특수한 쿼리들이 없어서 약간 아쉬운 점이 있었다.

 

내부적으로는 SQLite를 이용한다.

Weaviate

이것도 프리렌서로 일할때 하던 프로젝트에서 사용했던 데이터베이스이다.

 

우선 Chroma DB를 사용하다가 해당 데이터베이스로 옮겼는데, 그 이유로는 Chroma DB의 기능 중 조금 아쉬운 부분이 있었다.

그래서 검색 부분에서 더 다양한 조건을 걸 수 있는 Weaviate로 갈아 탔었다.

 

Weaviate는 Document는 잘 되어있지만 사용하는 난이도는 Chroma보다 조금 높았던 것 같다. (아무 많이는 아니고 조금)

기능이 다양해졌으니 어느정도는 당연하다고 생각되는 수준이었다.

 

이것도 상당히 쓸만하고 Client로 사용했을때 무료로 사용할 수 있다.

이것 또한 오픈 소스이며 BSD-3-Clause 라이센스이다.

잘 모르는 사람을 위해 중요한 부분만 짚자면, 무료사용, 배포 제한 없음, 소스공개의무없음, 특허보호없음 이기에 상업적이용도 상관없다.