RAG 을 활용하여 LLM 만들어보기

Few Shot 을 활용한 답변 정확도 향상과 포맷 수정.

몽자비루 2025. 8. 18. 19:40

1. Few Shot 이란

Few shot 이란 예제를 줌으로서 답변의 퀄리티를 향상시키는 동시에 원하는 포맷으로 변경할 수 있다.

 

Langchain 의 공식 문서중 few-shot 과 관련된 example 을 활용하여 사용해 보려고 한다.

공식 문서를 보면 아래와 같이 예시를 정해주고, 이를 ChatPromptTemplate 로 조합하여 사용한다.

 

주의할 점은 공식문서에서 질문은 input, 대답은 output 으로 보여지는데 이전에 작성한 내용은

질문은 input, 대답은 answer으로 설정했기 때문에 Few shot 을 만들 때 해당 부분을 주의해서 작성한다.

 

2. Few Shot 적용하기

먼저 기존에 작성했던 코드를 활용하되, 추가 내용을 작성해서 Few Shot 을 사용하려고 한다.

먼저 config.py에 아래와 같이 몇가지 예시를 입력한 뒤에 config.py 를 import한다.

 

이후 Few shot 의 값도 history값으로 입력되어야 하기 때문에, get_history_retriever 함수에 내용을 추가한다.

 

아래의 예시 중 print 위까지 복사 붙여넣기 하고, 초반에 언급한대로 output 의 값을 answer 로 입력한다.

 

추가로 "examples = examples" 에서 config.py 의 값을 answer_example 로 가져왔기 때문에,

examples = answer_examples 로 변경하여 적용하고, ChatPromptTemplate 에서 해당 예시를 추가한다.

 

이를 통해 모델이 예시를 보고 패턴을 학습하고 일관성과 품질을 높일 수 있다는 장점이 있다.

 

get_dictionary_chain 최종 수정본은 아래와 같다.

 

3. Few shot 전후 결과 비교하기

이렇게 하고 최종적으로 메시지를 확인했을 때, 오른쪽처럼 답변이 변경된것을 확인할 수 있다.

줄바꿈이나 문장 구성 등이 조금씩 변경한 것을 확인할 수 있으며, 그밖에 말투, 성격 등도 변경할 수 있다.

 

다만 여전히 질문에 대한 답변이 불안정한 경우가 있으나, 다행히도 이전 내용을 기억하면서

오류에 대해 지적하면, 대답을 수정하거나 변경된 형식을 유지할 수 있어서 답변의 질이 좋아진다.


https://github.com/rusharp1/streamlit_llm

 

GitHub - rusharp1/streamlit_llm

Contribute to rusharp1/streamlit_llm development by creating an account on GitHub.

github.com

 

이렇게 여러 도구를 활용하여 RAG 를 활용한 LLM application 을 만들어봤는데,

이제 다른사람들도 이 앱을 사용할 수 있도록 다음에는 Streamlit Cloud 를 활용하여 배포해볼 예정이다.