10차시. 벡터저장소 이해
체크리스트와 과제
원본 PDF 끝부분의 체크리스트, 과제, 다음 차시 미리보기를 한 페이지에 모았습니다.
이번 차시 체크리스트
출처: 원본 PDF 21쪽 · 쪽 그림 21쪽
개념 이해
□ 전용 저장소가 왜 필요한지 두 가지 이유로 설명할 수 있다
□ 인덱스가 하는 일을 도서관 비유로 설명할 수 있다
□ ANN이 무엇을 타협하는지 안다
□ with_score와 relevance_scores의 차이를 안다
□ 저장소 종류와 선택 기준을 대략 안다
실습
□ FAISS 인덱스를 만들고 save_local로 저장했다
□ 프로그램을 껐다 켠 뒤 load_local로 불러왔다
□ get_store 함수(있으면 로드/없으면 생성)를 만들었다
□ 점수를 포함한 검색으로 결과를 확인했다
□ 임계값으로 저품질 결과를 걸러냈다
□ 문서를 추가하고 다시 저장해봤다
□ rag_v2.py를 완성해 실행했다
과제
출처: 원본 PDF 23쪽 · 쪽 그림 23쪽
🎯 이번 차시 과제
1. 비용 절감 확인
인덱스 생성 시간과 로드 시간을 각각 재서 비교하세요.
import time 을 써서 측정하고 표로 정리합니다.
| 구분 | 소요 시간 | 임베딩 호출 |
| 최초 생성 | | |
| 두 번째 로드 | | |
2. 임계값 검증
9차시에서 정한 MIN_SCORE로 rag_v2를 돌려보고,
아래 두 가지가 없는지 확인하세요.
· 답할 수 있는데 "찾지 못했다"고 하는 경우 (기준이 너무 높음)
· 관련 없는데 억지로 답하는 경우 (기준이 너무 낮음)
문제가 있으면 값을 조정하고 이유를 기록하세요.
3. 문서 추가 실습
새 문서를 하나 더 넣고 add_documents로 추가한 뒤,
새 문서 내용에 대한 질문이 잘 답변되는지 확인하세요.
다음 차시 미리보기
출처: 원본 PDF 23~24쪽 · 쪽 그림 23쪽 24쪽
11차시: Retriever 기초 실습
지금까지는 store.similarity_search를 직접 불렀습니다.
그런데 저장소를 바꾸면 코드를 다 고쳐야 합니다.
다음 차시에는 검색을 표준 부품으로 감쌉니다.
· Retriever — 어떤 저장소든 똑같이 쓰는 방법
· Top-K를 바꿔가며 정답률과 노이즈 비교
· MMR — 중복 없이 다양한 결과 얻기
· 검색 결과를 LLM용 문맥으로 조립하기
여기서 만든 retriever가 24차시 Retriever Node의 원형이 됩니다.
💬 마무리
오늘 배운 내용 중 가장 실용적인 것은 save_local / load_local입니다. 별것 아닌 것 같지 만, 이것 하나로 개발 속도가 완전히 달라집니다.
8차시 코드로는 테스트 한 번에 1분씩 기다려야 했습니다. 이제는 즉시 시작됩니다. 하루에 실험을 열 번 할 수 있느냐, 백 번 할 수 있느냐의 차이입니다.
그리고 임계값으로 저품질 검색을 걸러내는 것도 오늘의 중요한 수확입니다. "모르면 모른다 고 답하는 시스템"에 한 걸음 더 다가갔습니다.
다음 차시에서 만나요! 🗄️