데브허브 | DEVHUB | How to Create a RAG Agent with ReflectionHow to Create a RAG Agent with Reflection
- 기존 RAG의 한계: 기본적인 RAG는 외부 정보를 가져오지만, 사용자 질문과 관련 없는 문서를 검색하여 답변 품질을 저하시킬 수 있습니다. 🗑️
- 해결책: In-the-loop 평가 (반영 단계): 답변 생성 전에 검색된 정보의 관련성을 평가하고 필터링하는 "반영(Reflection)" 단계를 추가하여 노이즈를 줄이고 답변 품질을 향상시킬 수 있습니다. 🔄
- Open Evals 활용: RAG 관련 평가를 위한 오픈 소스 패키지인 Open Evals를 사용하여 관련성, 유용성, 근거성, 검색 관련성 등 다양한 평가 도구를 손쉽게 통합할 수 있습니다. 🛠️
- 두 가지 핵심 반영 단계:
- 관련성 필터링: 검색 결과의 관련성을 평가하고 필터링하여 LLM이 처리해야 할 불필요한 정보의 양을 줄입니다. 🔍
- 유용성 평가 및 재시도: 생성된 답변이 원래 질문에 유용한지 평가하고, 유용하지 않다고 판단되면 에이전트에게 원래 목표, 실패 이유, 시도된 검색어 등을 상기시키는 메시지를 통해 재시도를 유도합니다. 💡
- 구현 방식: Open Evals의
RelevanceEvaluator와 HelpfulnessEvaluator를 활용하여 검색 결과 필터링 및 최종 답변의 유용성을 검증하는 로직을 코드에 통합합니다. 💻
- 성능 향상 예시: "작년 워리어스 기록" 질문에 대해, 반영 단계가 없는 에이전트는 일반적인 기록을 제공했지만, 반영 단계를 추가한 에이전트는 관련 없는 문서를 걸러내고 질문에 정확히 부합하는 답변을 생성했습니다. ✅
- 세부 추적 가능: Langchain의 트레이스 기능을 통해 에이전트의 각 단계별 동작, 검색 결과 필터링 과정, 평가자의 판단 등을 상세하게 확인할 수 있습니다. 📊