sol’s blog

LangChain-Chroma vs 바닐라ChromaDB, Retriever

무엇이 다르고, 언제 무엇을 써야 할까?

sol-commits
sol-commits Oct 9, 2025
Callout icon'

TL;DR

  • LangChain-Chroma는 RAG 파이프라인과 자연스럽게 결합되는 벡터 스토어 래퍼
    • LLM-친화 API 가 자엊ㅁ
  • 바닐라 ChromaDB는 벡터DB 자체 기능(로컬 PersistentClient, 원격 HttpClient 등)에 완전한 접근을 줌
    • 최신 기능 반영이 빠르고 세밀한 운영 제어가 강점
 
  • 바닐라 ChromaDB
    • collection.query(... n_results=k) 로 top-k 확보 → 직접 프롬프트에 삽입
  • Langchain-Chroma
      1. as_retriever() 로 리트리버 객체 획득
      1. 아래 셋 중 하나로 연결
        1. 수동: retriever.get_relevant_documents() → 프롬프트에 {context}로 주입
        2. LCEL 파이프라인: {"context": retreiver} | prompt | llm
        3. 툴/에이전트: create_retriever_tool(...) → LLM이 필요 시 자동 호출
      Callout icon'

      Langchain-Chroma 장점

      • 검색(top-k) → 문맥 합성 → 프롬프트 → LLM까지를 표준 오케스트레이션으로 묶을 수 있음
      • search_type="mmr" | "similarity" | "similarity_score_threshold", filter, k 등을 연결부에서 쉽게 튜닝
      • 메모리/평가/로깅과의 확장성이 매우 좋음
 
 

Retriever

RAG(Retrieval-Augmented Generation) 시스템의 검색 엔진 역할을 하는 컴포넌트

LLM은 외부 지식을 기억하지 않음 → Retriever가 문서 DB(Chroma, FAISS, Pinecone)에서 사용자 질문과 관련된 top-k 문서를 찾아 LLM에 전달

 

질문임베딩가까운 문서 검색문서들을 LLM에 넘김

이 과정을 자동화하는 모듈이 바로 Retriever

 
  • LangChain 기준 인터페이스
 
  • Retriever vs VectorStore
역할
VectorStore(Chroma,FAISS)
임베딩 저장·검색 기능 제공(=DB 그 자체)
Retriever
VectorStore를 LLM에 맞게 추상화한 인터페이스
  • 연결 흐름 예시(LCEL 식)
 
  • Retriever 유형
타입
설명
VectorStore Retriever
벡터 DB 유사도 검색(MMR, Threshold 지원)
MultiVector Retriever
이미지 + 텍스트 혼합 검색
ParentDocument Retriever
작은 청크 검색 → 큰 본문 반환
Contextual Compression Retriever
검색결과를 요약해 LLM에 전달
Ensemble Retriever
여러 검색기(벡터 + BM25 등) 결합
TimeWeighted Retriever
최신 문서 우선 검색
 
  • LCEL
    • LangChain Expression Language

      LangChain에서 LLM 파이프라인을 선언형으로 구성할 수 있게 만든 연결 언어

       

      프롬프트 -> LLM -> 출력 후처리

      이런 일련의 과정을 연결 연산자 | 하나로 표현할 수 있게 해주는 표준 문법 체계

       
    • prompt의 출력이 llm의 입력으로 자동 전달됨

추천 글

BlogPro logo
Made with BlogPro

태그