Build a protein research copilot with Amazon Bedrock AgentCore
Quick Summary
이 글은 자연어 질의 파싱, ESM C 300M 단백질 임베딩 기반 벡터 검색, AI 요약을 결합해 대규모 펩타이드 데이터에서 구조적으로 유사한 후보를 찾는 대화형 단백질 연구 코파일럿을 구축하는 과정을 설명한다.
🖼️ 인포그래픽
🖼️ 4컷 인포그래픽
💡 한 줄 요약
이 글은 자연어 질의 파싱, ESM-C 300M 단백질 임베딩 기반 벡터 검색, AI 요약을 결합해 대규모 펩타이드 데이터에서 구조적으로 유사한 후보를 찾는 대화형 단백질 연구 코파일럿을 구축하는 과정을 설명한다.
📌 핵심 요약
- 단백질 연구자는 수천 개의 펩타이드 서열 중 구조적으로 유사한 후보를 찾기 위해 많은 시간을 들여야 하며, 수작업 검색은 느리고 오류가 발생하기 쉽고 결과 해석에도 전문성이 필요하다.
- 제안된 코파일럿은 자연어 질의를 구조화된 검색 파라미터로 바꾸고, 특화 단백질 언어 모델로 임베딩을 생성한 뒤, 벡터 유사도 검색 결과를 과학적 맥락으로 요약하는 세 가지 기능을 하나의 대화형 흐름으로 묶는다.
- 전체 시스템은 Strands Agents SDK로 여러 도구를 오케스트레이션하고, Amazon Bedrock AgentCore 런타임에서 제공되며, 펩타이드 임베딩은 pgvector를 사용하는 Amazon Aurora PostgreSQL-Compatible Edition에 저장된다.
- ESM-C 300M 모델은 960차원 단백질 임베딩을 만들며, Amazon SageMaker AI 서버리스 엔드포인트에 배포되어 유휴 상태에서는 비용을 줄이고, 사전 패키징한 가중치를 사용해 콜드 스타트 지연을 줄이도록 구성된다.
- 검색 단계에서는 SageMaker AI 엔드포인트로 질의 서열의 임베딩을 생성하고, Aurora PostgreSQL의 pgvector 코사인 유사도 검색과 JSONB 메타데이터 필터를 결합해 종, 출처 유기체, 출처 분자 같은 조건을 함께 반영한다.
🧩 주요 포인트
- 단백질 연구자는 수천 개의 펩타이드 서열 중 구조적으로 유사한 후보를 찾기 위해 많은 시간을 들여야 하며, 수작업 검색은 느리고 오류가 발생하기 쉽고 결과 해석에도 전문성이 필요하다.
- 제안된 코파일럿은 자연어 질의를 구조화된 검색 파라미터로 바꾸고, 특화 단백질 언어 모델로 임베딩을 생성한 뒤, 벡터 유사도 검색 결과를 과학적 맥락으로 요약하는 세 가지 기능을 하나의 대화형 흐름으로 묶는다.
- 전체 시스템은 Strands Agents SDK로 여러 도구를 오케스트레이션하고, Amazon Bedrock AgentCore 런타임에서 제공되며, 펩타이드 임베딩은 pgvector를 사용하는 Amazon Aurora PostgreSQL-Compatible Edition에 저장된다.
- ESM-C 300M 모델은 960차원 단백질 임베딩을 만들며, Amazon SageMaker AI 서버리스 엔드포인트에 배포되어 유휴 상태에서는 비용을 줄이고, 사전 패키징한 가중치를 사용해 콜드 스타트 지연을 줄이도록 구성된다.
- 검색 단계에서는 SageMaker AI 엔드포인트로 질의 서열의 임베딩을 생성하고, Aurora PostgreSQL의 pgvector 코사인 유사도 검색과 JSONB 메타데이터 필터를 결합해 종, 출처 유기체, 출처 분자 같은 조건을 함께 반영한다.
🧠 상세 정리
1. 수작업 펩타이드 검색의 한계와 코파일럿의 목표
글은 단백질 연구자가 겪는 실질적인 검색 문제에서 출발한다. 수천 개의 펩타이드 서열 중 구조적으로 유사한 후보를 수작업으로 찾는 과정은 느리고, 오류가 생기기 쉬우며, 검색 결과를 해석하려면 깊은 도메인 지식이 필요하다고 설명한다. 이 문제를 줄이기 위해 제안되는 단백질 연구 코파일럿은 자연어 질의, 자동 임베딩 생성, AI 기반 결과 요약을 하나의 대화형 인터페이스로 결합한다. 핵심 목표는 연구자가 복잡한 검색 절차를 직접 조작하지 않고도 “dengue virus peptide LPAIVREAI와 유사한 펩타이드 10개를 찾아 달라” 같은 요청을 할 수 있게 만드는 것이다.
2. 세 가지 핵심 기능으로 구성된 연구 워크플로
이 시스템은 대화형 단백질 연구 보조자를 만들기 위해 세 가지 기능을 결합한다. 첫째, 자연어 질의에서 검색에 필요한 구조화된 파라미터를 추출한다. 둘째, 특화 언어 모델로 만든 단백질 임베딩을 대상으로 벡터 유사도 검색을 수행한다. 셋째, 검색된 후보 목록을 AI가 과학적 맥락에서 요약해 연구자가 결과를 빠르게 이해할 수 있게 한다. 글은 이 세 기능을 분리된 도구로 구현하되, 하나의 에이전트가 필요한 순서로 호출하도록 구성해 전체 검색 흐름을 자동화하는 방식을 보여준다.
3. 전체 아키텍처와 실행 환경
솔루션은 단일 Strands 에이전트가 세 개의 전문 도구를 오케스트레이션하는 구조를 따른다. 프론트엔드는 AWS Fargate에서 실행되는 Streamlit 애플리케이션이며, 사용자의 대화형 질의를 AgentCore 런타임으로 보내고 결과를 구조화된 형식과 다운로드 가능한 표로 표시한다. 런타임 내부의 Strands 에이전트는 Bedrock Converse API를 통해 Anthropic Claude Sonnet 4.6을 사용하고, @tool 데코레이터로 정의된 파서, 검색기, 요약기 도구에 접근한다. 이 설계는 하나의 런타임에 여러 도구를 넣어 배포를 단순하게 유지하면서도 각 도구의 책임을 명확히 나누는 데 초점을 둔다.
4. LLM-as-parser 방식의 자연어 질의 파싱
파서 도구는 별도의 Strands 에이전트를 사용해 자연어 질의를 구조화된 검색 파라미터로 변환한다. 예를 들어 사용자가 특정 펩타이드 서열, 종 필터, 결과 개수 제한을 자연어로 입력하면, 파서 에이전트는 이를 sequence, species, limit 같은 값이 포함된 JSON 객체로 추출한다. 코드에서는 parser_agent가 Claude Sonnet 4.6 모델을 사용하고, 시스템 프롬프트는 유효한 JSON 객체만 반환하도록 지시한다. 이렇게 파싱된 결과는 이후 검색 도구가 바로 사용할 수 있는 입력이 되어, 사용자가 데이터베이스 스키마나 검색 문법을 알 필요가 없도록 만든다.
5. ESM-C 300M을 이용한 단백질 임베딩 생성
유사도 검색의 핵심은 EvolutionaryScale의 단백질 언어 모델인 ESM-C 300M이다. 이 모델은 아미노산 서열의 구조적·기능적 속성을 포착하는 960차원 임베딩을 생성하며, 생물학적 기능이 유사한 두 펩타이드는 벡터 공간에서도 가까운 위치에 놓이게 된다고 설명한다. 이 방식은 서열 정렬을 직접 요구하지 않고도 구조적 유사성을 검색할 수 있게 한다. 글에서는 ESM-C 300M을 Amazon SageMaker AI 서버리스 엔드포인트로 배포해 유휴 상태에서는 0으로 확장되도록 하고, 추론 시 HuggingFace에서 가중치를 내려받지 않도록 모델 가중치를 배포 아티팩트에 미리 묶는 방식을 사용한다.
6. SageMaker AI 추론 핸들러와 서버리스 배포 구성
모델 추론 코드는 model_fn과 predict_fn으로 나뉜다. model_fn은 배포 디렉터리 안의 esmc_300m.pt 가중치 파일을 읽고, d_model 960, 15개 attention head, 30개 layer로 ESMC 모델 구조를 직접 구성한 뒤 state_dict를 로드해 평가 모드로 전환한다. predict_fn은 입력 단백질 서열을 ESMProtein으로 감싸고 모델 인코딩과 logits 호출을 거쳐 임베딩을 얻은 다음, 시작과 끝 토큰을 제외한 구간을 평균 풀링해 하나의 벡터로 반환한다. 엔드포인트는 6144MB 메모리, 최대 동시성 5, PyTorch 2.6.0 CPU 추론 컨테이너로 설정되며, 모델 패키징 스크립트는 가중치와 inference code를 SageMaker AI가 요구하는 model.tar.gz 구조로 묶는다.
7. Aurora PostgreSQL과 pgvector를 통한 벡터 검색
펩타이드 임베딩은 Amazon Aurora PostgreSQL-Compatible Edition Serverless v2에 저장되며, 벡터 검색을 위해 pgvector 확장을 사용한다. 테이블은 id, sequence, 960차원 embedding, properties JSONB, created_at 필드를 포함하고, embedding 컬럼에는 ivfflat 인덱스와 vector_cosine_ops가 적용된다. properties JSONB 컬럼에는 species, source organism, source molecule, epitope positions 같은 생물학적 메타데이터가 저장된다. 따라서 “LPAIVREAI와 유사한 dengue virus 펩타이드” 같은 요청은 embedding에 대한 코사인 거리 검색과 properties->>'species' 필터를 한 쿼리 안에서 함께 수행할 수 있다.
8. 데이터 적재와 검색 도구의 동작
데이터 적재 파이프라인은 IEDB virus epitope dataset에서 선형 펩타이드 샘플 1,000개를 읽고, 각 펩타이드 서열에 대해 SageMaker AI 엔드포인트를 호출해 임베딩을 생성한다. 이후 sequence, embedding, properties 값을 Amazon RDS Data API를 통해 데이터베이스에 삽입한다. 검색 도구는 사용자가 입력한 기준 서열을 다시 SageMaker AI 엔드포인트로 보내 임베딩을 얻고, 이를 query_embedding으로 사용해 peptides 테이블에서 cosine_distance를 계산한다. 종 필터가 있으면 JSONB 메타데이터 조건을 추가하고, 결과는 거리순으로 제한 개수만큼 반환되어 JSON 형식의 검색 결과가 된다.
9. 요약 도구와 오케스트레이터의 역할
요약 도구는 또 다른 전용 Strands 에이전트를 사용해 검색 결과를 분석하고 간결한 과학적 요약을 생성한다. 이 에이전트의 시스템 프롬프트는 검색 결과의 핵심 발견과 추가 조사 아이디어에 초점을 맞춘 고수준 요약을 제공하도록 설정된다. 오케스트레이터 에이전트는 사용자의 질의를 받아 파서, 검색기, 요약기 중 어떤 도구를 어떤 순서로 호출할지 결정한다. 결과적으로 사용자는 자연어로 질문하고, 시스템은 구조화된 파라미터 추출, 단백질 임베딩 검색, 과학적 해석 요약까지 이어지는 전체 워크플로를 하나의 대화 안에서 수행한다.
🧾 핵심 주장 / 시사점
- 이 설계의 핵심 가치는 단백질 서열 검색을 단순한 데이터베이스 조회가 아니라 자연어 이해, 임베딩 기반 유사도 검색, 결과 해석이 연결된 연구 보조 흐름으로 재구성한다는 점이다.
- 단일 AgentCore 런타임 안에서 파서, 검색기, 요약기를 도구로 분리한 구조는 배포 복잡도를 낮추면서도 각 단계의 책임을 명확히 나누는 방식으로 제시된다.
- pgvector 검색과 JSONB 메타데이터 필터를 함께 사용하는 부분은 유사한 서열을 찾는 것뿐 아니라 종이나 출처 같은 생물학적 조건을 동시에 반영해야 하는 연구 검색의 요구를 직접적으로 다룬다.
✅ 액션 아이템
- 자연어 질의 파싱부터 AI 요약까지 한 번에 처리하는 단일 대화형 탐색 흐름을 수립해 반복 수작업 의존도를 낮춘다.
- ESM-C 300M 임베딩 생성, SageMaker AI 서버리스 배포, pgvector 저장·코사인 검색을 Strands Agents SDK와 Bedrock AgentCore에서 하나의 후보 탐색 파이프라인으로 묶는다.
- 종·출처 유기체·출처 분자 조건을 JSONB 필터와 결합해 코사인 유사도 점수의 우선순위 규칙을 정하고 탐색 결과 점검 항목을 정의한다.
❓ 열린 질문
- 수작업 탐색 대비 대화형 코파일럿이 구조적 유사 후보 발굴 속도는 실제로 어느 정도 개선되는가?
- ESM-C 300M(960차원) 임베딩이 다양한 펩타이드 데이터에서 오탐을 줄이며 전문가 해석 기준과 유사도 판단을 유지하는가?
- 사전 패키징 가중치 적용 SageMaker에서 콜드스타트 지연 절감 효과를 운영 비용·응답성으로 환산할 판단 기준은 무엇인가?