0Pricing
Learn AI with Python · 강의

벡터 저장소: Chroma와 FAISS

벡터 저장소 생성 및 저장, 유사도 검색, MMR 검색, 하이브리드 검색을 다룹니다.

벡터 저장소: Chroma와 FAISS은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

벡터 저장소란 무엇인가요?

벡터 저장소는 임베딩된 청크를 보관하고 질의 벡터와 가장 유사한 청크를 찾습니다. RAG의 중심에 있는 검색 엔진입니다. 널리 사용되는 두 가지 선택지는 Chroma와 FAISS입니다.

pip install langchain-chroma faiss-cpu

Chroma 저장소 만들기

Chroma.from_documents는 한 번의 호출로 청크를 임베딩하고 색인합니다. 문서와 임베딩 객체를 전달하면 Chroma가 즉시 검색할 수 있는 저장소를 반환합니다.

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
db = Chroma.from_documents(chunks, embeddings)

Chroma를 디스크에 저장하기

persist_directory를 전달하면 색인이 디스크에 저장되어 다시 시작한 뒤에도 유지됩니다. 나중에 같은 디렉터리와 임베딩을 사용해 Chroma를 구성하면 다시 불러올 수 있으므로 재임베딩 비용을 피할 수 있습니다.

db = Chroma.from_documents(
    chunks, embeddings,
    persist_directory="./chroma_db"
)

# Reload later
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)

유사도 검색

similarity_search(query, k=4)로 질의합니다. 질의를 임베딩하고, 가장 가까운 k개의 청크를 찾아 문서로 반환합니다. k는 검색할 구절의 수를 정합니다.

results = db.similarity_search("How do I reset my password?", k=4)
for doc in results:
    print(doc.page_content[:80])

검색 점수 확인

similarity_search_with_score를 사용하면 각 결과의 거리 점수도 받을 수 있습니다. 거리가 짧을수록 더 유사합니다. 점수를 사용하면 LLM에 전달하기 전에 일치도가 낮은 결과를 걸러낼 수 있습니다.

pairs = db.similarity_search_with_score("password reset", k=4)
for doc, score in pairs:
    print(round(score, 3), doc.page_content[:60])

FAISS 소개

FAISS(Facebook AI 유사도 검색)는 벡터 검색을 위한 고성능 라이브러리입니다. 매우 빠르고 메모리 효율적이므로 별도의 서버 없이 대규모 로컬 색인을 사용할 때 적합합니다.

FAISS 저장소 만들기

사용법은 Chroma와 비슷합니다. FAISS.from_documents가 색인을 만듭니다. FAISS는 색인을 메모리에 유지하므로 읽기 작업이 많은 프로세스 내부 검색에 적합합니다.

from langchain_community.vectorstores import FAISS

db = FAISS.from_documents(chunks, embeddings)
results = db.similarity_search("refund policy", k=3)

FAISS 저장 및 불러오기

save_local로 FAISS 색인을 저장하고 load_local로 다시 불러옵니다. 색인이 피클을 사용하므로 다시 불러오려면 allow_dangerous_deserialization=True가 필요합니다.

db.save_local("faiss_index")

db = FAISS.load_local(
    "faiss_index", embeddings,
    allow_dangerous_deserialization=True
)

관련성과 다양성 비교

일반적인 유사도 검색은 서로 거의 동일한 청크 네 개를 반환할 수 있습니다. 때로는 답변의 다양한 측면을 다루는 다양한 결과가 필요합니다. 이때 MMR이 도움이 됩니다.

MMR 검색

최대 한계 관련성(MMR)은 관련성과 다양성 사이의 균형을 맞춰, 관련성은 높지만 중복되지 않는 청크를 선택합니다. 검색기 인터페이스를 통해 search_type="mmr"를 사용합니다.

retriever = db.as_retriever(
    search_type="mmr",
    search_kwargs={"k": 4, "fetch_k": 20}
)
docs = retriever.invoke("password reset")

Chroma와 FAISS 중 선택하기

Chroma는 사용하기 쉽고 영구 저장을 지원하므로 프로토타입과 소규모 애플리케이션에 적합합니다. FAISS는 규모가 커질수록 더 빠르고 메모리 내 검색에 적합합니다. 두 저장소 모두 similarity_search와 as_retriever를 제공하므로 쉽게 전환할 수 있습니다.

빠른 확인

벡터 저장소에 대한 이해도를 확인해 보세요.

복습: Chroma와 FAISS

persist_directory를 사용한 Chroma.from_documents와 FAISS.from_documents로 벡터 저장소를 만들고, similarity_search(query, k=4)로 검색했으며, 두 저장소를 저장하고 불러왔습니다. MMR과 함께 as_retriever를 사용해 다양한 결과를 얻었고, 각 저장소를 언제 선택해야 하는지도 배웠습니다.

자주 묻는 질문

“벡터 저장소: Chroma와 FAISS” 강의는 무료인가요?

네 — “벡터 저장소: Chroma와 FAISS” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

“벡터 저장소: Chroma와 FAISS”에서 뭘 배우나요?

벡터 저장소 생성 및 저장, 유사도 검색, MMR 검색, 하이브리드 검색을 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“벡터 저장소: Chroma와 FAISS” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. LangChain 아키텍처와 LCEL
  2. 문서 불러오기, 분할, 임베딩
  3. 벡터 저장소: Chroma와 FAISS
  4. 처음부터 끝까지 RAG 질의응답 시스템 구축
← Learn AI with Python(으)로 돌아가기