시도해 볼 만한 5가지 벡터 저장소

RAG를 수행하기 위한 5가지 벡터 저장소의 기능 미리 보기

RAG와 벡터 저장소


RAG(Retrieval-Augmented Generation)는 미리 학습된 LLM(Large Language Model) 및 자체 데이터를 사용하여 응답을 생성하는 기술이다.

  • 루이스 외는 비모수적 메모리에 자체 데이터를 저장하고 이를 결합한 모델을 미세 조정하는 방법을 탐구하였으며 이를 RAG라고 하였다.
  • 최근에는 모델을 미세 조정하지 않고 프롬프트에 자체 데이터를 제공하는 방식을 RAG라고 한다.

벡터 저장소는 RAG를 수행하는 데 도움이 된다. 벡터 저장소는 데이터의 벡터 표현인 임베딩을 저장하여 데이터 간의 유사도 검색을 할 수 있도록 한다. 벡터 저장소를 만들면 데이터를 효율적으로 검색하고 GPT-4와 같은 LLM과 데이터를 연결하는 데 도움이 된다.

벡터 저장소 선택


여러 저장소 중 하나를 사용할 수 있다면 어떤 저장소를 사용해야 할까?

  • 파이스(Facebook AI Similarity Search, FAISS)는 메타(Meta)의 오픈 소스 라이브러리이다. 로컬 기반이고 저장소 비용이 최소화되므로 테스트에 이상적이다. 메모리에서 저장소 구축 및 질의를 수행할 수 있다. 데이터 추가, 삭제 외에 데이터 관리 기능을 가지고 있지는 않다.
  • 크로마(Chroma)는 크로마의 오픈 소스 라이브러리이다. 로컬 기반이고, 임베딩을 메모리에 저장하고 읽을 수 있다. 데이터 관리 기능은 데이터 추가, 삭제, 수정 등 간단한 것만 있다.
  • 파인콘(Pinecone)은 관리형 벡터 저장소로 포드(Pod) 기반이었으나 ’24년 1월에 서버리스를 출시하였다. 어떤 규모에서도 빠르고 재현율(Recall)이 높으며 확장 가능하고 신속하게 배포 가능하다고 설명한다. 데이터 관리 기능은 크로마보다 많다. 데이터 추가, 삭제, 수정, 메타데이터 필터, 키워드 등을 위한 희소 벡터(Sparse Vector), 하이브리드 검색을 지원한다.

벡터 데이터를 저장하고 이에 대한 정보 검색을 지원하는 검색 엔진도 있다.

  • 일래스틱서치(ElasticSearch)는 벡터 검색과 어휘 검색을 모두 수행할 수 있는 분산형 레스트풀(RESTful) 검색 및 분석 엔진이다. 아파치 루신(Apache Lucene) 라이브러리를 기반으로 구축되었다. 일래스틱서치 인스턴스를 설정하는 두 가지 주요 방법은 관리형 일래스틱 서비스인 일래스틱 클라우드(Elastic Cloud)를 신청하는 것과 로컬에 일래스틱서치를 설치하는 것이다.
  • 애저 AI 검색(Azure AI Search)은 이전의 코그너티브 서치(Cognitive Search)이다. 애저 구독에서 만드는 전용 PaaS 리소스이다. 규모, 보안 및 가용성에 대한 엔터프라이즈 수준의 비즈니스 요구 사항을 지원한다. 벡터 데이터와 비벡터 데이터가 공존하는 하이브리드 검색을 지원한다.

이 외에도 쿼드런트(Qdrant), 질리즈(Zilliz) 등이 벡터 저장소 경쟁에 합류하고 있다.

참고 문헌


  • https://learn.microsoft.com/en-us/azure/machine-learning/concept-retrieval-augmented-generation
  • https://www.arxiv.org/abs/2005.11401
  • https://learn.microsoft.com/en-us/azure/machine-learning/concept-vector-stores
  • https://www.pinecone.io/learn/vector-database
  • https://ai.meta.com/tools/faiss
  • https://www.trychroma.com
  • https://www.analyticsvidhya.com/blog/2023/07/guide-to-chroma-db-a-vector-store-for-your-generative-ai-llms
  • https://www.pinecone.io
  • https://www.aitimes.com/news/articleView.html?idxno=156571
  • https://www.elastic.co/elasticsearch
  • https://python.langchain.com/v0.1/docs/integrations/vectorstores/elasticsearch
  • https://revf.tistory.com/281

양지원 박사/팀장(jwyang@vaiim.com)