Agentic RAG
이번 튜토리얼에서는 사용자의 질의에 대해 검색한 문서와 답변을 직접 평가하여 더 질높은 문서와 답변을 제공하는 RAG Agentflow를 제작합니다.
Sequential Agent 만들기
1. 워크플로우 만들기
서비스 > 에이전트 > 워크플로우에서 워크플로우를 생성합니다.


적절한 이름을 작성하고 생성합니다.

Flowise Step 추가에서 Agentflow를 선택해 flowchart를 추가합니다. 본 튜토리얼에서는 Agentflow 2.2.3 버전을 활용합니다.
2.1. RAG Agentflow 구조 구성하기
기존의 RAG 시스템은 다음과 같은 단점이 존재합니다.
검색된 문서가 사용자의 질의에 답변하기 적절하지 않을 때 다시 검색할 수 없다.
검색된 문서를 바탕으로 생성한 답변에 Hallucination이 발생할 수 있다.
생성된 답변에 Hallucination은 존재하지 않지만, 사용자의 질의와 관계 없는 답변을 내놓을 수 있다.
이러한 문제에 대응하기 위해 본 튜토리얼에서는 [1] 검색된 문서, [2] 생성한 답변의 Hallucination 유무, [3] 질문과의 연관성을 직접 평가하여 기준을 충족한 답변만 내보내도록 하는 Agentic RAG 워크플로우를 제작합니다.
2.2. 구조 설계하기

본 튜토리얼에서의 Agentic RAG는 위와 같은 구조로 구성하였습니다.
Document Grader : Retriever된 문서의 품질을 평가합니다.
Hallucination Checker : Retriever 된 문서를 바탕으로 생성한 답변의 Hallucination 유무를 평가합니다.
Relevance Checker : 생성한 답변이 질문에 정말로 도움이 되는지(관련성이 있는지)를 평가합니다.
각 평가 Node의 Output은 점수로서 출력될 수도 있고, PASS / NonPASS 형태로 출력될 수도 있습니다. 이는 System Prompt를 어떻게 작성하는지에 따라 동작이 달라집니다.
[Document Grader 에시 Prompt]
당신은 Retrieval Grader입니다. 사용자의 질의에 대해 검색된 참고 문서들이 해당 질문에 대해 완벽하고 정확한 답변을 제공할 수 있는지 판단한 뒤, "PASS" 또는 "NO" 중 하나만 대답하세요.
평가 기준
1. 직접 관련성 (Zero Tolerance)
문서의 모든 핵심 내용이 질문과 직접적으로 일치해야 함
부분적 관련성, 간접적 언급, 유사한 주제, 추론 필요한 내용은 즉시 부적합
질문의 모든 구성 요소에 대해 명시적으로 다뤄야 함
키워드만 일치하고 맥락이 다른 경우 부적합
2. 정보 완결성
질문 답변에 필요한 모든 핵심 정보가 문서 내에 명시적으로 존재해야 함
단편적, 불완전, 암시적, 추측 가능한 정보는 부적합
외부 지식이나 추가 검색 없이 완전한 답변 가능해야 함
중요한 세부사항이 하나라도 누락되면 부적합
3. 신뢰성
검증 가능한 1차 출처 또는 공식 기관 자료만 허용
개인 블로그, 비공식 포럼, 검증되지 않은 소스는 즉시 부적합
출처가 불분명하거나 신뢰도 의심 시 부적합
최신성: 시간에 민감한 정보는 최근 6개월 이내 자료만 허용
판단 규칙
PASS 조건 (모든 조건 동시 충족 필수)
모든 문서가 위 3개 기준을 완벽하게 충족
질문에 대한 완전하고 정확한 답변 제공 가능
추가 검색이나 외부 지식 불필요
NO 조건 (하나라도 해당 시)
단 하나의 문서라도 기준 미충족
하나의 기준이라도 완전히 충족하지 못함
출력 규칙
답변은 반드시 "PASS" 또는 "NO" 중 하나만 대문자로 출력
어떠한 이유, 설명, 부가 설명도 절대 금지
확신이 서지 않으면 반드시 "NO" 출력
2.3. 워크플로우 구성하기
2.2에서 설계한 구조를 바탕으로 다음과 같이 워크플로우를 구성합니다.

워크플로우가 복잡하여 한화면에 보이지 않습니다. 캔버스를 오른쪽으로 이동하여 워크플로우를 더 구성합니다.

참고) Agentflow에서의 Retriever은 다음과 같이 구성하여 Tool의 형태로 사용할 수 있습니다.

2.4. 워크플로우 테스트하기
Flowise 우측 상단에 채팅 아이콘을 클릭해 구성한 워크플로우를 테스트합니다.
워크플로우에 사용된 데이터는 부산시의 2023, 2024, 2025년도 정보화 시행계획에 대한 문서입니다.





2023년 정보화 시행계획에 대해 질의를 남겼을 때, Document Grader가 Retrieved된 문서를 평가하고, 'NO'를 출력하여 Query를 재작성한 뒤 다시 검색해 'PASS'를 출력합니다.
Hallucination Check 및 Relevance Check까지 통과하여 답변을 출력하였습니다.
2.5. 추가 개선사항 고려하기
프롬프트를 수정하여 더 엄격한 기준을 세우거나, 'PASS'/'NO'만 내보내는 것이 아닌 'PASS'/'NO'인 이유를 함께 출력하도록 하여 출력에 대한 근거를 살펴볼 수 있습니다.
평가 Node가 계속해서 'NO'를 출력할 경우, 무한 루프가 원인이 되어 오류가 발생할 수 있습니다. 해당 오류에 대한 대처도 추가적인 개선사항에 포함됩니다. (State를 통해 'NO' 횟수를 카운팅하여 일정 조건 이상일 경우 분기하도록 구성하는 것도 하나의 방법이 될 수 있습니다.)
Last updated
Was this helpful?