8차시. 첫 번째 RAG 실습
10. 자주 막히는 지점
출처: 원본 PDF 08차시_첫번째RAG실습.pdf 18~19쪽 · 쪽 그림 18쪽 19쪽
| 증상 | 원인과 해결 |
|---|---|
| 질문 하나에 30초 이상 걸림 | 인덱싱이 ask 함수 안에 들어가 있습니다. 밖으로 빼세요 |
| 문서에 없는데 그럴듯하게 지어냄 | 프롬프트에 "없으면 없다고 답하라"를 명시적으로 넣으세요 |
| 답은 나오는데 출처를 모름 | found의 metadata를 함께 출력하세요 |
| 같은 페이지가 3번 중복으로 나옴 | 정상입니다. 한 페이지가 여러 조각으로 나뉘었기 때문입니다 |
| 답변이 자꾸 잘림 | max_tokens 기본값 문제입니다. ChatOpenAI에 값을 지정하세요 |
| 매번 실행할 때마다 비용이 발생 | 10차시에서 인덱스 저장/불러오기를 배우면 해결됩니다 |
10-1) 디버깅 습관 — 프롬프트를 눈으로 보기
답이 이상할 때 가장 먼저 해볼 것은, LLM에게 실제로 무엇이 전달됐는지 확인하는 것입니다.
def ask(question, k=3, debug=False):
found = store.similarity_search(question, k=k)
prompt = (...)
if debug:
print("=" * 55)
print("LLM에게 실제로 전달되는 내용:")
print(prompt)
print("=" * 55)
answer = llm.invoke(prompt).content
...
# 이상할 때는 debug=True로 실행
ask("환불 규정은?", debug=True)실행 결과 예시 (코드를 읽고 만든 예상 화면입니다. 실제 실행 결과, 특히 모델의 답은 다를 수 있습니다)
=======================================================
LLM에게 실제로 전달되는 내용:
아래 자료만 근거로 답하세요.
자료에 없는 내용은 '자료에서 확인할 수 없습니다'라고 답하세요.
추측하지 마세요.
[자료]
[1] (manual.pdf p.2)
4. 환불 및 교환 규정
환불
상품 수령 후 7 일 이내에 환불을 신청하실 수 있습니다.
단순 변심의 경우 왕복 배송비는 고객 부담입니다.
교환
[2] (manual.pdf p.2)
자동 모드에서는 내장된 먼지 센서가 실내 공기질을 감지하여 풍량을 자동으로 조절합니다.
필터 교체 알림 램프가 켜지면 필터를 확인해 주세요.
4. 환불 및 교환 규정
환불
[3] (manual.pdf p.2)
교환
상품 불량의 경우 30 일 이내에 교환이 가능합니다.
이 경우 배송비는 당사가 부담합니다.
5. 보증 및 무상 A/S
[질문] 환불 규정은?
=======================================================💡 이 한 줄이 시간을 아껴줍니다
"왜 이상한 답을 하지?" 하고 몇 시간 고민하다가
프롬프트를 출력해보면
· 자료가 아예 안 들어가 있거나
· 엉뚱한 조각이 들어가 있거나
· 규칙 문장에 오타가 있는 경우
대부분 여기서 바로 발견됩니다.