728x90
반응형

Model Context Protocol 에이전트의 검색 품질을 측정하기 위한 프레임워크

ChatGPT로 생성됨

최근에 블로그 게시물을 많이 쓰지 못했어요. 필수 GraphRAG 책을 오스카 하네 님과 마무리하는 데 집중했거든요. 이제 책도 끝났으니 다시 글을 쓸 시간이 좀 더 생겼네요.

요즘은 LLM에게 다양한 도구에 대한 액세스 권한을 줘서 기본 벡터 검색 이상의 기능을 제공하는 에이전트에 대한 이야기가 많죠.

  • 웹 검색
  • 다양한 API 호출
  • 다양한 데이터베이스 쿼리

새로운 MCP 서버가 엄청나게 많이 개발되고 있는데, 평가는 거의 이루어지지 않고 있다는 점이 놀라워요. 물론 다양한 도구를 사용해서 LLM을 연결할 수 있지만, 실제로 어떻게 작동하는지 알고 계신가요? 그래서 저는 기성품 및 맞춤형 그래프 MCP 서버, 특히 Neo4j에서 정보를 검색하는 서버를 평가하는 데 초점을 맞춘 블로그 게시물을 시리즈로 계획하고 있어요.

MCP(Model Context Protocol)는 "AI 애플리케이션용 USB-C 포트" 같은 기능을 하는 Anthropic의 개방형 표준이에요. AI 시스템이 외부 데이터 소스에 연결하는 방식을 표준화하는 거죠. 클라이언트에 특정 기능을 노출하는 경량 서버를 통해서요. 핵심은 재사용성이에요. 개발자는 모든 데이터 소스에 대한 맞춤형 통합 대신 재사용 가능한 MCP 서버를 한 번 구축하고, 여러 AI 애플리케이션에서 공유할 수 있게 되는 거죠.

이미지 출처:(MIT 라이선스)

MCP 서버는 Model Context Protocol을 구현해서 구조화된 JSON-RPC 호출을 통해 AI 클라이언트에 도구와 데이터를 노출해요. 클라이언트의 요청을 처리하고 로컬 또는 원격 API에 대해 실행해서 결과를 반환, AI의 컨텍스트를 풍부하게 만드는 거죠.

MCP 서버와 해당 검색 방법을 평가하기 위한 첫 번째 단계는 평가 데이터세트를 생성하는 거예요. 이를 위해 LLM을 사용할 거예요. 두 번째 단계에서는 기성 제품인 MCP-Neo4j-사이퍼 서버를 만들고, 우리가 만든 벤치마크 데이터 세트와 비교해서 테스트할 거예요.

이 블로그 게시물의 주제

현재 목표는 견고한 데이터 세트와 프레임워크를 구축해서 시리즈 전반에 걸쳐 다양한 리트리버를 일관되게 비교할 수 있도록 하는 것이에요.

코드는 에서 확인할 수 있어요.

평가 데이터 세트

작년에 Neo4j는 Text2Cypher(2024) 데이터세트를 공개했는데요, 이건 Cypher 생성에 대한 단일 단계 접근 방식을 중심으로 설계되었어요. 단일 단계 Cypher 생성에서 시스템은 자연어 질문을 받으면 해당 질문에 직접 대답하는 하나의 완전한 Cypher 쿼리(기본적으로 텍스트에서 데이터베이스 쿼리로의 일회성 변환)를 생성해야 해요.

하지만 이 접근 방식은 에이전트가 실제로 Graph Database를 사용해서 작업하는 방식을 반영하지 않아요. 에이전트는 다단계 추론을 통해 작동하거든요. 여러 도구를 반복적으로 실행하고, 여러 Cypher 문을 순차적으로 생성하고, 중간 결과를 분석하고, 다양한 쿼리에서 찾은 결과를 결합해서 최종 답을 얻을 수 있어요. 이 반복적이고 탐구적인 접근 방식은 규정된 단일 단계 모델과는 근본적으로 다른 패러다임을 나타내죠.

여러 도구를 호출할 수 있는 사전 정의된 Text2Cypher 흐름과 에이전트 접근 방식

현재 벤치마크 데이터 세트는 MCP 서버가 에이전트 워크플로에서 실제로 사용되는 방식의 차이를 제대로 포착하지 못하고 있어요. 단발성 Text2Cypher 변환이 아닌 다단계 추론 기능을 평가하려면 벤치마크를 업데이트해야 하죠. 에이전트가 문제 분석, 데이터 관계 탐색, 여러 데이터베이스 상호 작용에서 결과 통합이 필요한 복잡한 정보 검색 작업을 탐색하는 방식을 더 잘 반영해야 하거든요.

평가 지표

싱글 스텝 Text2Cypher 평가에서 에이전트 접근 방식으로 넘어갈 때 가장 중요한 변화는 정확성을 측정하는 방법이에요.

싱글샷 Text2Cypher와 에이전트 평가의 차이점

Text2Cypher와 같은 전통적인 텍스트-쿼리 작업에서 평가는 일반적으로 데이터베이스 응답을 미리 정의된 정답 정보와 직접 비교하는 방식으로 진행돼요. 종종 정확히 일치하거나 동등한지를 보죠.

하지만 에이전트적 접근 방식은 중요한 변화를 가져와요. 에이전트는 여러 검색 단계를 거치거나, 다른 쿼리 경로를 선택하거나, 도중에 원래 의도를 다시 표현할 수도 있거든요. 결과적으로 정답 `쿼리`가 하나도 없을 수도 있어요. 대신 에이전트가 어떤 중간 `쿼리`를 사용했는지와 관계없이 에이전트가 생성한 최종 답변을 평가하는 데 집중해야 해요.

이를 평가하기 위해 우리는 LLM-as-a-judge 설정을 사용해서 에이전트의 최종 답변을 예상 답변과 비교해요. 이렇게 하면 내부 메커니즘이나 특정 `쿼리` 결과보다는 출력의 의미론적 품질과 유용성을 평가할 수 있죠.

결과 세분성 및 상담사 행동

에이전트 평가에서 또 다른 중요한 고려 사항은 데이터베이스에서 반환된 데이터의 양이에요. 기존 Text2Cypher 작업에서는 올바른 데이터가 검색되었는지 테스트하는 게 목표이기 때문에 큰 `쿼리` 결과를 허용하거나 기대하는 게 일반적이죠. 하지만 이 접근 방식은 에이전트 워크플로를 평가하는 데 적합하지 않아요.

에이전트 설정에서는 에이전트가 올바른 데이터에 접근할 수 있는지 테스트하는 게 아니라, 간결하고 정확한 최종 답변을 생성할 수 있는지 여부를 보는 거거든요. 데이터베이스가 너무 많은 정보를 반환하면 평가는 사용자의 의도를 이해하고 올바른 정보를 검색했는지에 집중하기보다는 에이전트의 큰 출력을 요약하거나 탐색하는 능력과 같은 다른 변수와 얽히게 돼요.

실제 노이즈 소개

벤치마크를 실제 에이전트 사용과 더 비슷하게 만들기 위해 를 평가 `프롬프트`에 추가했어요.

평가에 실제 노이즈 도입

여기에는 다음과 같은 요소가 포함돼요.

  • : 명명된 개체에서 오타를 내는 거죠 ("Andrew Carnegie" 대신 "Andrwe Carnegie"처럼요)
  • 또는 비공식적인 언어 사용 ("Tesla 이사회 구성원 목록" 대신 "Tesla 이사회에 무슨 일이 일어나고 있는지 보여주세요"처럼요)
  • 지나치게 광범위하거나 과소 지정된 의도: 후속 추론이나 설명이 필요한 경우를 말해요.

이러한 변형은 실제로 사용자가 에이전트와 상호 작용하는 방식을 반영해요. 실제 배포 환경에서 에이전트는 지저분한 입력, 불완전한 형식, 대화 속기 등을 처리해야 하는데, 이런 조건은 명확하고 표준적인 벤치마크에서는 거의 포착되지 않죠.

에이전트 접근 방식 평가에 대한 이러한 통찰력을 더 잘 반영하기 위해 Claude 4.0을 사용한 새로운 벤치마크를 만들었어요. Cypher `쿼리` 정확성에 초점을 맞춘 기존 벤치마크와 달리, 이 벤치마크는 다단계 에이전트가 생성한 의 품질을 평가하도록 설계되었답니다.

데이터베이스

다양한 평가를 위해 Neo4j 데모 서버에서 사용할 수 있는 몇 가지 다른 데이터베이스를 사용하고 있어요. 예를 들면 다음과 같아요.

  • Northwind: Microsoft 공개 라이선스에 따라 라이선스가 부여되었어요.
  • Network Management: 제 친구 Michael Hunger가 만들었어요.
  • Clinical Knowledge Graph: MIT에 따라 라이선스가 부여되었어요.

MCP-Neo4j-Cypher 서버

MCP-Neo4j-Cypher는 자연어를 통해 Neo4j와 상호 작용할 수 있도록 도와주는 도구 인터페이스에요. 바로 사용할 수 있다는 점이 매력적이죠. 그래프 스키마 보기, Cypher 쿼리 실행을 통한 데이터 읽기, 쓰기 작업을 통한 데이터베이스 업데이트까지, 세 가지 핵심 기능을 지원한답니다. 결과는 에이전트가 쉽게 이해하고 사용할 수 있도록 깔끔하고 구조화된 형식으로 반환돼요.

MCP-Neo4j-Cypher 개요

MCP 서버를 지원하는 모든 프레임워크와 바로 연동되기 때문에, 추가적인 통합 작업 없이 기존 에이전트 설정에 간단하게 연결할 수 있어요. 챗봇, 데이터 도우미, 맞춤 워크플로 등 어떤 것을 만들든, 이 도구를 사용하면 에이전트가 그래프 데이터를 안전하고 지능적으로 다룰 수 있게 된답니다.

벤치마크

이제 벤치마크 평가를 한번 실행해 볼까요?

LangChain을 사용해서 에이전트를 호스팅하고, 에이전트에 제공되는 유일한 도구인 MCP Neo4j Cypher 서버에 연결했어요. 이렇게 설정하면 평가가 간단하면서도 현실적으로 이루어지죠. 에이전트는 그래프 데이터를 검색하고 조작하기 위해 MCP 인터페이스와의 자연어 상호 작용에 전적으로 의존해야 하거든요.

평가를 위해, 에이전트로는 Claude 3.7 Sonnet을, 그리고 판정으로는 GPT-4o Mini를 사용했어요.

벤치마크 데이터 세트는 홉 수와 쿼리에 불필요한 정보가 포함되어 있는지에 따라 분류된 약 200개의 자연어 질문-답변 쌍으로 구성되어 있어요. 이 구조는 깔끔한 상황과 노이즈가 많은 상황 모두에서 에이전트의 추론 정확성과 견고성을 평가하는 데 도움이 된답니다.

평가 코드는 에서 확인하실 수 있어요.

결과를 함께 살펴볼까요?

MCP-Neo4j-Cypher 평가

평가 결과, MCP-Neo4j-Cypher 인터페이스만 사용하는 에이전트가 그래프 데이터에 대한 복잡한 자연어 질문에 효과적으로 답변할 수 있다는 것을 보여주네요. 약 200개 질문에 대한 벤치마크에서 에이전트는 평균 0.71점을 얻었고, 질문 복잡성이 증가함에 따라 성능이 저하되는 경향을 보였어요. 입력에 노이즈가 있는 경우 정확도가 크게 떨어졌는데, 이는 에이전트가 오타 등에 민감하게 반응한다는 것을 알 수 있었죠.

도구 사용 측면에서, 에이전트는 질문당 평균 3.6회의 도구 호출을 기록했어요. 이는 스키마를 가져오기 위해 적어도 한 번 호출하고, 기본적인 Cypher 쿼리를 실행하기 위해 또 다른 호출을 수행해야 하는 현재 요구 사항과 일치하는 결과에요. 대부분의 쿼리는 2~4회의 호출 범위에 포함되어 에이전트의 효율적인 추론 및 행동 능력을 보여주죠. 특히, 소수의 질문에는 도구 호출이 단 한 번 또는 심지어 전혀 없는 경우도 있었는데, 이는 조기 중단을 암시할 수 있는 이상 현상, 잘못된 계획 또는 에이전트 버그가 있을 수 있다는 점을 시사하므로 추가 분석이 필요하답니다. 앞으로는 스키마 액세스가 MCP 리소스를 통해 직접 포함되어 명시적인 스키마 가져오기 단계가 필요하지 않게 되면 도구 호출 횟수가 더 줄어들 수 있을 거예요.

벤치마크의 가장 큰 가치는 체계적인 반복을 가능하게 해준다는 점이에요. 기본 성능이 설정되면 파라미터 튜닝을 시작하고, 파라미터의 영향을 관찰하며, 목표한 개선을 수행할 수 있죠. 예를 들어 에이전트 실행에 비용이 많이 드는 경우, LangGraph 재귀 제한을 사용하여 허용되는 단계 수를 10으로 제한하면 정확도에 어떤 영향이 있는지 테스트해 볼 수 있어요. 벤치마크를 사용하면 성능과 효율성 사이의 균형점을 추측하는 대신 정량적으로 탐색할 수 있다는 장점이 있답니다.

최대 10단계의 MCP-Neo4j-Cypher 평가

10단계 제한을 적용했더니 성능이 눈에 띄게 저하되었어요. 평균 평가 점수가 0.535로 떨어졌죠. 더 복잡한(3개 이상의 홉) 질문에서는 정확도가 급격히 감소했는데, 이는 단계 제한이 더 깊은 추론 체인을 막는다는 것을 의미해요. 노이즈는 여전히 성능을 저하시켰고, 노이즈가 있는 질문은 깨끗한 질문보다 평균 점수가 낮았답니다.

요약

지금 우리는 특히 구조화된 다단계 작업과 관련해서, LLM이 수행할 수 있는 작업이 엄청나게 확장되는 자율 에이전트 및 MCP와 같은 새로운 표준의 등장으로 AI 분야에서 정말 흥미로운 시기를 보내고 있다고 생각해요. 하지만 역량이 빠르게 성장하는 반면, 강력한 평가는 아직 부족한 상황이죠.

바로 이 지점에서 Grape 프로젝트가 시작되는 거예요. 목표는 MCP 인터페이스를 사용하여 그래프 기반 질문 답변에 대한 실용적이고 발전하는 벤치마크를 구축하는 것이랍니다. 시간이 지남에 따라 데이터 세트를 개선하고, 다양한 검색 전략을 실험하고, 더 나은 정확성을 위해 Cypher MCP를 확장하거나 조정하는 방법을 탐색할 계획이에요. 데이터 정리부터 검색 개선, 평가 강화까지 앞으로 해야 할 일이 정말 많죠. 하지만 명확한 벤치마크가 있다는 것은 진행 상황을 의미 있게 추적하고, 아이디어를 체계적으로 테스트하고, 에이전트가 안정적으로 수행할 수 있는 작업의 한계를 확장할 수 있다는 것을 의미한답니다.

참고 자료

  • 무료 Essential GraphRAG 책
  • 개발자가 Model Context Protocol (MCP)에 대해 알아야 할 모든 것
  • GraphRAG란 무엇일까요?

  • Agentic
  • Graph
  • Langchain
  • mcp Server
  • 모델 컨텍스트 프로토콜

에이치시스템즈LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.

👉 에이치시스템즈 홈페이지

728x90
반응형

+ Recent posts