45분
실습: Chroma로 제조 문서 벡터 DB 구축
Day 3: 벡터 DB (Chroma, Pinecone)
실습: Chroma로 제조 문서 벡터 DB 구축
RAG 기초 > Day 3: 벡터 DB (Chroma, Pinecone)
학습 목표
- Chroma 컬렉션을 생성하고 문서를 저장할 수 있다
- 메타데이터 필터를 활용한 검색을 구현할 수 있다
- LangChain과 Chroma를 연동할 수 있다
Chroma 실습
로컬에서 Chroma를 띄우고 제조 문서를 검색한다. 그리고 지금 그 검색을 누가 하고 있는지 확인한다.
환경 설정
pip install chromadb langchain langchain-community langchain-chroma
pip install langchain-openai # LangChain 연동을 실제로 돌릴 때
pip install sentence-transformers # 다국어 모델 비교용 (완성 코드)
실습 순서
- 컬렉션을 만들고 제조 문서 10건을 저장한다.
- 한국어 질의로 검색하고 Top-1 적중률을 잰다.
- 메타데이터 필터로 범위를 좁혀 다시 검색한다.
- 버전이 올라간 문서를 갱신하고 검색 결과가 바뀌는지 본다.
- 완성 코드에서 임베딩 모델만 바꿔 같은 숫자를 다시 잰다.
Chroma는 임베딩 함수를 주지 않으면 기본값(all-MiniLM-L6-v2)을 쓴다. 영어로 학습된 모델이다. 어제 "한국어 문서에는 다국어 모델"이라 배웠으니, 그 말이 이 화면에서 몇 퍼센트짜리 차이인지 직접 확인한다.
이 실습은 문서를 한 번도 밖으로 내보내지 않는다. 임베딩도 검색도 이 컴퓨터 안에서 끝난다. 데이터 반출이 막힌 공장에서 Chroma를 고르는 이유가 이것이다.
에디터 로딩 중...
힌트 보기
- • Chroma의 distance는 hnsw:space를 cosine으로 두면 (1 - 코사인 유사도)다. 유사도로 보려면 1에서 빼야 한다.
- • 임베딩 함수를 지정하지 않으면 기본값이 조용히 쓰인다. 무엇으로 색인했는지 코드에 남겨 두어야 나중에 검색과 어긋나지 않는다.
- • get_or_create_collection은 같은 이름이면 기존 컬렉션을 돌려준다. 임베딩을 바꿔 비교할 때는 컬렉션 이름도 함께 바꾼다.
- • $and, $or 연산자로 메타데이터 조건을 조합할 수 있다. 조건이 하나뿐일 때는 $and로 감싸지 않아도 된다.
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
Chroma 메타데이터 필터 쿼리 생성AI 학습 팁
AI에게 제조 문서(설비명·라인번호·문서유형) 메타데이터 기반 Chroma 필터 검색 코드를 스캐폴딩하도록 요청하세요.
설비명, 생산라인 번호, 문서유형(SOP/매뉴얼/품질기록)을 메타데이터로 저장한 제조 문서 Chroma 컬렉션에서, 특정 설비·특정 라인의 SOP만 필터링해서 유사도 검색하는 Python 코드를 구현해줘. 메타데이터 필터 조건 조합 예시도 포함해줘.
이 팁이 도움이 됐나요?
실습 — 직접 해보기
Vector Store
전수 비교와 HNSW의 거리 계산 횟수를 나란히 놓고 읽는다. 이 화면에서 가장 믿을 만한 숫자가 그것이다. 볼 것: 벡터를 늘렸을 때 두 방식의 계산 횟수가 각각 몇 배로 늘어나는가. 의심할 것: 화면 아래에 임베딩 모델 이름이 적혀 있지만 이 시뮬레이터는 브라우저 안에서 벡터를 만든다. 개발자 도구의 네트워크 탭을 열어 두고 검색해 보면 밖으로 나가는 호출이 없다는 것을 확인할 수 있다.