10차시. 벡터저장소 이해
5. 실습 ③ — 점수까지 확인하는 검색
출처: 원본 PDF 10차시_벡터저장소이해.pdf 11~12쪽 · 쪽 그림 11쪽 12쪽
그냥 similarity_search를 쓰면 "얼마나 관련 있는지"를 알 수 없습니다. 점수를 함께 받는 방법이 두 가지 있습니다.
5-1) 두 가지 함수의 차이 (매우 중요!)
| 함수 | 반환값 | 해석 |
|---|---|---|
| similarity_search_with_score | 거리 | 작을수록 가까움 (0이 최고) |
| similarity_search_with_ relevance_scores | 유사도 | 클수록 관련 있음 (1이 최고) |
⚠️ 여기서 정말 많이 실수합니다
score를 봤는데 0.3이 나왔습니다.
"점수가 낮으니 관련 없구나" 라고 판단했습니다.
틀렸습니다.
with_score는 거리입니다.
0.3은 아주 가깝다는 뜻입니다!
👉
relevance_scores를 쓰는 편이 헷갈리지 않습니다. (9차시에서 잡은 임계값과도 바로 비교됩니다)
📝 점수 확인 코드
query = "환불 절차를 알려주세요"
print("■ relevance_scores — 클수록 관련 있음")
for doc, score in store.similarity_search_with_relevance_scores(
query, k=5):
text = doc.page_content[:55].replace("\n", " ")
print(f" {score:.3f} p.{doc.metadata['page_no']} {text}...")
실행 결과
─────────────────────────────────────────────
■ relevance_scores — 클수록 관련 있음
0.812 p.2 3. 환불 및 교환 규정 상품을 받은 후 7일...
0.744 p.2 30일 이내에 무상으로 교환해드리며 이때...
0.628 p.2 3. 환불 및 교환 규정
0.412 p.1 2. 설치 방법 벽면에서 30cm 이상 떨어진...
0.298 p.1 본 제품은 가정용 공기청정기로 최대 10평...🎯 이 결과에서 읽어낼 것
1~3위는 확실히 관련 있습니다 (0.6 이상)
4위부터는 애매합니다 (0.4 이하)
"30일 이내"라는 표현 때문에 걸린 것 같지만
환불이 아니라 제품 등록 이야기입니다.
👉
k=3이 적절했겠다는 판단이 섭니다.
👉 9차시에서 정한 임계값(예: 0.47)으로
4·5위를 잘라내면 노이즈가 줄어듭니다.