서론
RAG를 할 때 마주하는 것은 '어떤 DB를 써야되는가?'이다. 가장 많이 쓰이는 것이 Chroma와 FAISS인데 이번 포스팅에서는 이 두 벡터 데이터 베이스의 차이점에 대해 알아보도록 하겠다. 다른 RAG 시리즈 포스팅이 궁금하다면 아래 링크로 들어가길 바란다.
Retrieval Augmented Generation(RAG) 복습 (1) RAG의 개념
RAG란?Retrival : (언어 모델이 갖고 있지 않은 정보) 데이터를 가져오는 것.Augmented : AR/VR에서의 A도 Augmented임. 마치 있는 것처럼.Generation : 컴퓨터가 생성하는거 llm이 알아서 하는부분이다.여기서 R,A
quiseol.com
FAISS란?
FAISS는 엄밀히 말하면 vector data store가 아니다. Facebook에서 만든 오픈 소스 라이브러리로서 많이 쓰이는 AI similarity search(유사도 검색)이다. 어떤 벡터 a가 있다면 이 a와 가장 유사한 벡터 a'를 찾아주는 도구인 것이다. 근데 이게 in-memory vector store로 쓰여서 Chroma db와 쌍두마차를 달리고 있다.
FAISS 장점과 Chroma 차이
faiss는 doesn't persist on the disk지만 한 벡터와 유사한 벡터들을 가져올 수 있다는 장점이 있다. 반면 Chroma는 디스크를 사용하기 때문에(=persist on the disk) 더 하드코어한 데이터 스토어라고 할 수 있다. FAISS는 단순히 라이브러리만 가져와서 유사도 검색에만 사용할 수도 있다. 참고로 FAISS는 CPU variant 와 GPU variant가 있다. 원한다면 cpu든 gpu든 골라쓸 수 있다는 것이다.
무엇보다 LangChain이 faiss에 맞는 추상화를 가지고 있기에 이식성이 좋아 chroma의 대체재가 될 수 있다. 실제로 아래 코드처럼 코드를 바꿔도 이상없이 작동할 것이다. Chroma DB를 FAISS라고 바꿔 적었을 뿐인데 바로 대체가 가능하다는 의미다. 아래와 같이 1에서 2로 import를 바꿔서 해주고, 벡터 스토어를 만들 때 #3으로 했다면 #4로 바꿔주면 된다.
from langchain_chroma import Chroma #1
from langchain.vectorstores import FAISS #2
vectorstore = Chroma.from_documents(documents=chunks, embedding=embeddings,
persist_directory=db_name) #3
vectorstore = FAISS.from_documents(chunks, embedding=embeddings) #4
예시에서 보면 알 수 있지만 벡터 스토어를 만들 때 딱 보이는 차이는 persist_directory 여부다. 이후 llm 모델 선언부터 메모리, retirever, chain 까지 전부 그대로 선언하면 된다.
그럼에도 불구하고 LangChain에서 Choma를 쓰는 이유
우선 FAISS는 벡터 검색 속도가 매우 빨라서 대규모 데이터셋(문서)에 장점이 될 수 있다. 그리고 위에서 적었듯, GPU를 사용할 수 있기 때문에 확장성도 높다. 그러나 FAISS의 단점이라면 디스크 저장을 지원하지 않는 다는 것이다. 그래서 메타 데이터나 문서 원문을 저장하지 않는다. 원한다면 따로 저장하는 방식으로 설정할 수 있지만 우리에겐 Chroma가 있다. 같은 코드로 말이다. 아마존같은 대규모 데이터셋을 다루는게 아닌 이상, RAG 같은 langchain 시스템에서는 Chroma가 우위라고 생각한다.
'IT, Digital' 카테고리의 다른 글
티스토리 하위 도메인으로 애드센스 승인 (2) 하위 도메인 블로그 에드센스 연결 및 주의사항 (1) | 2025.05.27 |
---|---|
티스토리 하위 도메인으로 애드센스 승인 (1) 티스토리 새 블로그 및 하위(3차) 도메인 개설 방법 (0) | 2025.05.26 |
Hugging Face에 대해 알아보자 (5) LLM 모델 선정 시 고려 사항 및 비용 (0) | 2025.05.25 |
티스토리 블로그 애드센스 수익 여정 포스팅 (9) 애드센스 승인 (1) | 2025.05.21 |
Hugging Face에 대해 알아보자 (4) Quantization (0) | 2025.05.20 |