반응형
Retriever 구성
# Retriever 생성
retriever = vector_db.as_retriever(search_type="mmr", search_kwargs={"k": 4}) # 가장 유사한 5개 문서 검색
retriever.invoke("지드래곤, GD 관련 뉴스 있어?")
원래는 search_type 을 similarity 로 설정하였지만 계속 중복된 답변을 내놓아서
Maximal Marginal Relevance를 사용하여 검색 결과의 다양성을 높일 수 있었다.
이는 유사도뿐만 아니라 결과 간의 중복을 줄이는데 도움을 준다.


이제 Chroma DB에서 꺼내와서 문서본문을 참고할 수 있게 형식화 하는 함수 까지 마쳤다.

이렇게 RAG 체인을 구성한다
참고로 프롬프트는 짜기 나름인데 나는 "당신은 QA 전문가이며, context를 참고하여 question에 답변하라. 만약 모든 Context를 다 확인해도 정보가 없다면, "죄송합니다. 정보가 부족하여 답변할 수 없습니다."를 출력하세요라고 명시하였다.

의도했던대로 잘 작동하는 모습을 보여준다
이상으로 RAG 연습을 마무리 한다!!
반응형