2.3 Agentic RAG 관련 질문이 있습니다.
31
작성한 질문수 1
안녕하세요. 강의 정말 잘 듣고 있습니다. 좋은 강의 해주셔서 감사드립니다.
다름이 아니고, 관련성 체크하는 노드에 관해서 질문이 있습니다.
제가 이해하기로는 관련성 체크 노드 또한 Graph에서 기능적인 역할은 하는 것 같은데 State를 반환하는게 아니기 때문에, 그래프의 토폴로지에서는 빠지게 되는건가요?
추가로 관련성 체크 노드를 다른 노드들(Rewrite, generate, retrieve)과 edge연결을 해주면 안되는걸까요?
답변 2
0
안녕하세요 좋은 질문 감사합니다.
node로 별도로 선언하지는 않았지만 그래프 온톨로지에는 포함된다고 보시는게 맞습니다.
코드를 다시 보시면 retireve node를 generate와 rewritenode들과 edge로 연결시키지 않는 것을 보실 수 있습니다.

하지만 그래프를 보면 점선으로 연결되어 있는 것을 확인할 수 있습니다.

여기서check_doc_relevance 가 node이면서 다음 node 들을 정의하는 edge의 역할을 하기 때문인데요(위에서 온톨로지에 포함된다고 보시는게 맞다고 설명한 이유입니다). 그림으로 표현하자면 아래와 같은 느낌입니다.

그래프에 명시적으로 보이게 하려면 check_doc_relevance를 node로 작성하고, check_doc_relevance에서 add_conditional_edges() 를 선언해도 됩니다. 저는 불필요하게 코드양을 늘리는 것 같아서 강의에서 보시는 것과 같이 진행했는데, 에이전트의 흐름을 파악하는데 있어서는 오히려 가독성이 떨어질 수도 있겠다는 생각이 드네요.
그리고 State를 반환하지 않아도 node에 추가시킬 수 있습니다. 공식문서에서는 안된다고 되어있지만 {} 를 리턴시키면 node로 추가할 수 있습니다.
또 설명이 부족한 부분이 있다면 언제든지 질문으로 올려주세요! 최대한 빠르게 답변 드리겠습니다
0
안녕하세요, 인프런 AI 인턴입니다. 신동엽님!
강의를 들으며 Agentic RAG와 관련된 질문을 주셔서 감사합니다. 관련성 체크 노드의 기능 및 위치에 대해 궁금증이 생기셨군요.
관련성 체크 노드
노드의 역할:
- 관련성 체크 노드는 주어진 입력 데이터가 적절한지를 확인하기 위해 사용됩니다. 이는 주로 데이터를 처리하기 전 또는 후에 데이터를 필터링하거나 판단하는 역할을 합니다.
- 관련성 체크 노드는 주어진 입력 데이터가 적절한지를 확인하기 위해 사용됩니다. 이는 주로 데이터를 처리하기 전 또는 후에 데이터를 필터링하거나 판단하는 역할을 합니다.
그래프의 토폴로지:
- 관련성 체크 노드는 주로 데이터의 흐름을 제어하는 역할을 하다 보니, 노드 자신이 직접적으로 데이터를 변환하거나 결과를 생성하는 역할을 하지는 않습니다. 따라서, 최종적인 결과를 반환하기보다는 중간 단계의 검증 역할을 하게 됩니다.
- 관련성 체크 노드는 주로 데이터의 흐름을 제어하는 역할을 하다 보니, 노드 자신이 직접적으로 데이터를 변환하거나 결과를 생성하는 역할을 하지는 않습니다. 따라서, 최종적인 결과를 반환하기보다는 중간 단계의 검증 역할을 하게 됩니다.
노드 연결:
- 관련성 체크 노드와 다른 노드들(Rewrite, generate, retrieve)을 직접 연결하여 복잡한 흐름을 만들 수도 있습니다. 하지만 이렇게 할 경우, 무분별한 연결로 인해 그래프의 구조가 복잡해질 수 있으며, 가독성과 유지보수성이 떨어질 수 있습니다.
- 주어진 노드 간의 Edge는 사용자가 설정한 목적과 흐름에 따라 설계해야 합니다. 각 노드의 작성 목적과 기능을 명확히 이해하고 적절하게 연결하는 것이 중요합니다.
- 관련성 체크 노드와 다른 노드들(Rewrite, generate, retrieve)을 직접 연결하여 복잡한 흐름을 만들 수도 있습니다. 하지만 이렇게 할 경우, 무분별한 연결로 인해 그래프의 구조가 복잡해질 수 있으며, 가독성과 유지보수성이 떨어질 수 있습니다.
요약
관련성 체크 노드는 주로 흐름을 제어하는 역할을 수행하면서, 데이터의 신뢰성을 높이기 위한 중간 검증 단계로 활용됩니다. 이를 다른 기능적 노드와 직접 연결할 때는 데이터 흐름의 명확성을 유지하기 위해 필요한 구조와 목적에 맞게 사용해야 합니다.
좀 더 심화된 관련성을 다루고자 한다면, LangGraph를 활용한 AI Agent 개발 - 유사 질문 토론에서 이루어진 토론을 참고하시면 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
깃허브 레포지토리 확인 요청
0
47
2
제공해주신 레포가 Windows 환경에 너무 비친화적입니다.
0
77
2
마크다운을 텍스트 파일로 변환하기
0
78
1
max token을 제한하는게 왜 성능을 개선하게 되는걸까요?
0
77
2
pyzerox 유니코드 에러
0
99
2
영상 메타데이터 생성 관련 LLM 활용 질문
0
92
1
종합부동산세 부분 tool 사용 질문 드립니다.
0
90
2
uv sync 파이썬 버전문제 onnxruntime
-1
147
2
MCP를 활용해서 간단한 에이전트를 만들어보세요
0
124
1
PDF 형식
0
85
1
5.3 langchain-mcp-adpater를 활용한 MCP 도구 사용 tool_list 지연 사유
0
107
2
3.6 human_in_the_loop 3rd case
0
97
1
summary 를. 시스템메세지에 추가하는 부분에 관하여
0
100
3
병렬 처리 중 retrieve 관련 궁금한 사항
0
89
1
query 에 대한 answer 결과값이 나오지 않습니다.
0
109
2
사람과 관련된 표현이 없는데 rewrite 로 이동하지 않는경우
0
85
1
retriever 관련 질문
0
70
1
인터룹 관련 질문
0
52
2
2.4 Self-RAG 결과가 달라요!
0
90
2
md vs txt 차이..
0
187
2
OpenAI API 호출 때문에 발생하는 Error code: 429 문제
0
138
2
단순 도구 사용과 도구를 가진 에이전트를 사용하는 것의 차이가 궁금합니다.
0
94
1
LangChain과 LangGraph v1
0
143
1
2.4 강의 관련 질문(답변을 검증하는 self rag)
0
83
2





