Building reliable agentic AI systems

개요

Bayer의 PRINCE는 복잡하고 방대한 전임상 데이터를 효과적으로 탐색하고 분석하기 위해 Agentic RAG (Retrieval-Augmented Generation) 기술을 기반으로 구축된 AI 시스템입니다.

주요 내용

* 전임상 연구의 데이터 복잡성: 전임상 연구는 방대한 양의 구조화 및 비구조화 데이터를 포함하며, 전통적인 키워드 검색으로는 효율적인 분석이 어렵습니다.
* PRINCE의 발전 과정:
* Search 단계: 초기에는 구조화된 연구 메타데이터에 대한 검색 기능에 집중했습니다.
* Ask 단계: RAG 기술을 통합하여 자연어 질문을 통해 비구조화된 PDF 연구 보고서의 내용에서 직접 정보를 추출하고 답변하는 기능으로 발전했습니다.
* Do 단계: 현재는 다중 에이전트 시스템을 통합하여 규제 문서 초안 작성과 같은 복잡한 작업을 수행할 수 있는 능동적인 연구 보조원 역할을 합니다.
* 시스템 아키텍처:
* UI: React 기반의 대화형 UI를 사용합니다.
* 오케스트레이션: LangGraph 기반의 백엔드 레이어가 사용자 의도 명확화, 계획 수립, RAG 및 Text-to-SQL 기반 연구, 데이터 검증, 응답 생성 등의 다단계 프로세스를 조정합니다.
* 데이터 검색 및 상태 관리: OpenSearch에 벡터 임베딩된 연구 보고서를 저장하고, Athena를 통해 구조화된 데이터에 접근합니다. PostgreSQL에 에이전트 실행 상태를 지속적으로 저장합니다.
* LLM 활용: OpenAI, Anthropic, Google 및 오픈 소스 모델을 포함한 다양한 LLM을 활용하며, OpenAI 호환 엔드포인트를 통해 통합 관리됩니다.
* 강건성 및 오류 처리: LLM 실패 시 자동 재시도, 대체 모델 사용, 개별 LLM 호출 및 논리적 노드 수준에서의 재시도 등 다양한 복구 메커니즘을 갖추고 있습니다.
* 관찰 가능성 및 평가: Cloudwatch 및 Langfuse를 사용하여 시스템 성능 및 신뢰성을 모니터링하며, RAGAS 프레임워크로 평가를 수행합니다.
* Agentic RAG 시스템:
* Clarify User Intent: 모호한 사용자 질의를 명확히 하기 위해 도메인 및 데이터 유형을 특정하는 질문을 합니다.
* Think & Plan: Anthropic의 Think 도구에서 영감을 받아, 복잡한 작업을 수행하기 위한 전략을 수립하고 과정 자체를 평가하는 "프로세스 리플렉션"을 수행합니다.
* Researcher Agent: 구조화된 데이터(Text-to-SQL)와 비구조화된 데이터(RAG)를 모두 처리하며, 도메인별 하위 에이전트 구조로 발전하여 관리를 용이하게 합니다.
* RAG for Unstructured Data: PDF 보고서 등 비구조화된 데이터를 위해 데이터 추출, 청킹, 메타데이터 추가, 벡터 임베딩 및 색인화 과정을 거칩니다. 질의 시에는 키워드 추출, 메타데이터 필터 생성, 쿼리 확장, 가중치 기반 하이브리드 검색, 재순위화(reranking) 단계를 통해 관련성 높은 정보를 추출합니다.
* Text-to-SQL for Structured Data: 구조화된 데이터베이스 쿼리를 위해 질의 분석, 스키마 이해, 동적 Few-Shot 프롬프팅을 통한 SQL 생성, 쿼리 실행 및 결과 제한 단계를 수행합니다.
* 컨텍스트 엔지니어링 (Context Engineering) 및 하네스 엔지니어링 (Harness Engineering):
* 컨텍스트 엔지니어링: 각 에이전트가 받는 정보의 범위와 이동 방식을 결정하며, 프롬프트를 하나의 큰 컨테이너로 간주하지 않고 단계별로 필요한 컨텍스트만 제공합니다.
* 하네스 엔지니어링: 오케스트레이션, 도구 경계, 상태 지속성, 재시도, 대체, 유효성 검사, 리플렉션 루프, 관찰 가능성 및 인간 검토와 같은 에이전트 주변의 스캐폴딩을 관리합니다.

시사점

PRINCE 시스템은 Generative AI 및 RAG 기술을 통해 전임상 데이터 접근 및 분석의 패러다임을 전환하여 연구 효율성을 높이고 신약 개발 프로세스를 가속화할 잠재력을 보여줍니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions