Agentic RAG

이번 튜토리얼에서는 사용자의 질의에 대해 검색한 문서와 답변을 직접 평가하여 더 질높은 문서와 답변을 제공하는 RAG Agentflow를 제작합니다.

Sequential Agent 만들기

1. 워크플로우 만들기

  • 서비스 > 에이전트 > 워크플로우에서 워크플로우를 생성합니다.

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

  • Flowise Step 추가에서 Agentflow를 선택해 flowchart를 추가합니다. 본 튜토리얼에서는 Agentflow 2.2.3 버전을 활용합니다.

2.1. RAG Agentflow 구조 구성하기

  • 기존의 RAG 시스템은 다음과 같은 단점이 존재합니다.

    1. 검색된 문서가 사용자의 질의에 답변하기 적절하지 않을 때 다시 검색할 수 없다.

    2. 검색된 문서를 바탕으로 생성한 답변에 Hallucination이 발생할 수 있다.

    3. 생성된 답변에 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?