강의 및 실습 정리/LLM 강의
[인프런 강의] 3.5 Retrieval 효율 개선을 위한 데이터 전처리
조조링
2024. 10. 22. 18:44
728x90
반응형
1. 문제 상황: 기대한 답변을 얻지 못함
이전 실습에서 "연봉 5천만 원인 직장인의 소득세는 얼마인가요?" 라는 질문을 했지만, GPT는 구체적인 소득세율을 제공하지 않고, 세법에 대한 일반적인 설명만을 반환했습니다.
from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.chains import RetrievalQA
llm = ChatOpenAI(model='gpt-4o')
prompt = hub.pull("rlm/rag-prompt")
qa_chain = RetrievalQA.from_chain_type(
llm,
retriever = database.as_retriever(),
chain_type_kwargs = {"prompt":prompt}
) # llm 모델과 벡터데이터베이스와 프롬프트 템플릿 준다.
ai_message = qa_chain({"query": query})
ai_message
{'query': '연봉 5천만원인 직장인의 소득세는 얼마인가요?', 'result': '연봉 5천만원인 직장인의 소득세는 기본세율이 적용됩니다. 근로소득에 대한 기본세율은 소득구간에 따라 차등 적용되며, 구체적인 세율은 세법에 따라 결정됩니다. 정확한 소득세 계산은 소득공제와 세액공제 등을 고려해야 하므로, 개인의 세무 상황에 맞춰 상세한 계산이 필요합니다.'}
2. 문제 원인: 이미지로 된 소득세 표
질문에 대한 답변을 정확히 제공하지 못한 원인은, 참고 문서 tax.docx에서 소득세 관련 정보가 제55조에 있었으나, 이 내용이 그림으로 된 표로 제공되어 있었기 때문입니다. GPT는 이 표를 텍스트로 인식하지 못해 정확한 답변을 생성하지 못했습니다.
3. 해결 시도: 이미지를 테이블로 변환 ▶ 실패
처음에는 이미지를 워드 문서 내에서 표로 변환해 보려 했습니다.
하지만 GPT는 워드 문서의 표도 제대로 인식하지 못했고, 여전히 소득 구간별 세율 정보를 가져오지 못했습니다.
4. 해결 방법: 마크다운 테이블로 변환
이 문제를 해결하기 위해 마크다운 테이블을 활용했습니다.
GPT는 마크다운 형식의 표는 정확히 읽고 이해할 수 있기 때문에, 그림이나 워드의 테이블을 마크다운 신택스로 변환하여 GPT가 사용할 수 있도록 했습니다.
변환된 테이블 예시는 아래와 같습니다:
| 소득 구간 | 세율 (%) |
|-------------------------------|----------|
| 1,400만원 이하 | 과세표준의 6퍼센트 |
| 1,400만원 초과 5,000만원 이하 | 84만원 + (1,400만원을 초과하는 금액의 15퍼센트) |
| 5,000만원 초과 8,800만원 이하 | 624만원 + (5,000만원을 초과하는 금액의 24퍼센트) |
...
5. 결과: GPT가 올바른 정보를 제공
마크다운 형식으로 표를 변환한 후, GPT는 해당 표의 내용을 기반으로 소득세율을 정확하게 읽고 답변을 생성할 수 있었습니다.
이를 통해 GPT는 이미지로 된 정보를 직접 처리할 수 없을 때, 텍스트 기반으로 변환하는 것이 중요하다는 점을 확인할 수 있었습니다.
{'query': '연봉 5천만원인 직장인의 소득세는 얼마인가요?', 'result': '연봉 5천만원인 직장인의 소득세는 624만원 입니다.'}
728x90
반응형