편집자 주: 이 프레젠테이션은 Stephan Reiling이 GraphConnect San Francisco 2016년 10월에 발표한 내용이에요.
프레젠테이션 요약
이번 강연에서 선임 과학자 Stephan Reiling은 주요 제약 회사가 의료용 화합물 **search**를 수행할 때, **Graph Database** 기술이 어떻게 중요한 역할을 하는지 설명합니다.
여기서 근본적인 문제는 확장 가능한 생물학적 **Knowledge** 시스템을 어떻게 구축하느냐는 것이죠.
단순히 방대한 양의 이질적인 데이터를 연결하는 것뿐만 아니라, 연구자들이 특정 유형의 데이터에 대한 **query**를 구성할 수 있어야 한다는 의미이기도 해요. 삼각관계를 예로 들면, **Node**는 화학적 화합물, 특정 생물학적 개체, 그리고 질병에 대해 설명하고 있어요. 연구 문헌에서 시스템은 **query**의 일부로 주요 링크의 불확실성을 사용해야 하죠.
**Graph** 기술이 이러한 노력을 발전시키는 구체적인 방법은 시스템이 의학 연구 텍스트에서 용어 간 관계의 강도를 캡처할 수 있도록 하는 거예요. 이러한 항들을 연결하는 **Graph**의 **property**를 활용하는 거죠.
결과적으로, 이는 문헌을 관찰된 화학적 또는 생물학적 데이터와 연결하는 후속 **query**를 위한 기반을 제공해요. 일부 링크를 제거해서 결과가 어떻게 달라지는지 확인하여 테스트할 수도 있고요.
전체 프레젠테이션: 초기 약물 발견의 점 연결하기
이 블로그 게시물에서는 수많은 이질적인 데이터를 결합하여 하나의 큰 **Knowledge Graph**로 통합한 방법에 대해 이야기할 거예요. 우리가 질병 치료법을 찾는 데 사용하는 정보죠.
생명의학 연구를 위한 그래프
노바티스 생물의학 연구 연구소는 대형 제약회사인 노바티스의 연구 부문이에요. 우리의 연구는 질병을 치료할 수 있는 차세대 의약품을 식별하는 데 집중하고 있죠.
우리는 생물의학 연구를 통해 의약품을 식별하는데, 엄청난 양의 데이터를 생성하고 분석해서 결국 작은 알약이나 주사, 혹은 치료법으로 만들어내는 빅데이터 병합 작업이라고 할 수 있어요.
이건 거의 3년 동안 저희가 작업해 온 프로젝트인데요, 이제 첫 결과가 나오고 있고 아주 유망해 보여요. 핵심은 수많은 이질적인 데이터를 어떻게 결합해서 하나의 큰 Graph로 통합했는지, 그리고 이걸 쿼리에 활용하고 있다는 점이에요.
이 Graph에 넣는 데이터 중 일부는 텍스트 마이닝에서 얻은 건데, 텍스트에서 추출하는 내용과 패턴 감지 방식이 조금 다르죠. 아래에서 실제로 어떻게 사용될 수 있는지 몇 가지 예를 보여드릴게요.
Graph를 만든 이유
우선 왜 이런 일을 하는지부터 이야기해볼게요.
지금은 복잡한 생물학을 포착하는 데 사용되는 이미지에 관한 내용이에요. 예전에는 생물학을 이해하고 싶고 단백질에 관심이 있다면, 단백질을 분리하고 정제한 다음 작은 시험관에 넣어서 특성을 분석하곤 했죠.
화합물이나 작용 물질을 확인하고 싶다면, 해당 화합물을 똑같은 시험관에 넣고 그게 효소나 다른 단백질의 활성에 어떤 영향을 미치는지 확인하면 됐어요. 굉장히 환원주의적이지만, 원한다면 아주 정확한 측정을 할 수 있고, 그 분야에 대한 수십 년간의 데이터가 있었죠.
오랫동안 그게 신약 발견의 핵심이었어요. 이렇게 발견된 초기 화합물은 여러 해의 노력을 거쳐 최종적으로 시장에 출시되는 약물이 되죠. 그런데 아시다시피, 생물학은 시험관 속의 단일 단백질로 환원될 수 없어요. 훨씬 더 복잡하거든요.
지난 5~8년 정도 동안 전 세계의 모든 제약 회사와 연구 기관은 이제 이 생물학의 복잡성을 포착하려고 노력하기 시작했어요. 이걸 수행하는 한 가지 방법이 콘텐츠가 많은 화면을 실행하는 거죠.
High-content Screens
아래 왼쪽 이미지는 세포 배양의 스냅샷이에요. 훨씬 더 큰 이미지를 잘라낸 거죠. 저희는 이런 종류의 분석을 대규모로 진행해요. 실험실 자동화 기능을 갖춘 대형 자동화 현미경을 보유하고 있고, 이런 방식으로 테라바이트 단위의 이미지를 쉽게 생성할 수 있어요.
흰색으로 보이는 건 기본적으로 세포체이고, 빨간색 원은 핵, 녹색은 특정 단백질을 포함하지 않는 세포의 핵이에요. 여기서 목표는 흰색으로 표시된 이 단백질을 발현하는 세포의 수를 늘리는 거라고 가정해 볼게요.
여기에 몇 가지 처리를 추가한다고 가정해 보죠. 그건 화합물일 수도 있고, 작은 RNA일 수도 있고, 뭐든 될 수 있어요. 그러면 숫자가 변할 뿐만 아니라 더 많은 일이 일어나고 있다는 걸 알 수 있기를 바라요. 세포의 모양이 변하고 있는 거죠. 이제 여기에 다른 화합물을 추가하면 다른 일이 발생해요. 이걸 표현형이라고 불러요.
저희는 현재 표현형을 사용해서 기본적인 생물학을 이해하고, 결국 약물을 얻기 위한 이 긴 과정에 들어갈 화합물을 더 잘 식별하기 위한 아주 큰 규모의 스크리닝을 진행하고 있어요.
이러한 데이터 생성 과정은 저희의 업무를 더욱 어렵게 만들 뿐이에요. 실험실 자동화가 진행되면서 이런 데이터를 점점 더 많이 생성할 수 있게 되었죠. 이제 살아있는 세포 이미징을 촬영하고 시간이 지남에 따라 세포를 추적하는 영화도 나오고 있어요. 3D도 있고요. 3D 슬라이드 등을 찍기도 해요. 점점 더 많은 데이터가 쏟아지고 있는 거죠.
기본 문제: 확장 가능한 생물학적 지식
기본적인 문제에 대해 설명해 드릴게요. 저희는 수십 년 동안의 환원주의적 데이터를 가지고 있어요. 주석이 달린 대규모 복합 실시간 읽기도 있죠. 과거에는 뭘 했는지 알고 있지만, 지금은 상황이 변하고 있고 영상 데이터와 표현형 분석이 점점 더 많아지고 있어요.
이걸 분석하려고 하면 생물학적 지식을 확장할 수 있는 방법이 필요하고, 생물학적 지식을 저장할 수 있는 시스템을 갖춘 다음, 이 저장소를 사용해서 데이터를 분석할 수 있도록 쿼리를 실행할 수 있어야 한다는 게 훨씬 더 분명해져요. 아직 '생물학적 지식'이 정확히 무엇을 의미하는지는 모르겠지만, 일단 거기에 맞는 시스템을 만들어 보도록 할게요.
위 이미지에서 주요 삼각형은 화합물, 유전자 및 표현형을 연결하고 있어요. 성공적인 약물 발견을 위해서는 이 삼각형을 탐색할 수 있어야 한다고 생각하는 거죠.
우리가 역사적으로 축적한 데이터를 사용하면 삼각형의 한쪽 가장자리, 즉 화합물과 유전자 사이는 매우 강하지만 다른 가장자리는 그렇지 않아요. 그래서 이러한 지식 격차를 메우려고 노력하고 있답니다.
화학물질, 질병 및 단백질에 대한 Text mining
우리가 사용하는 정보 소스 중 하나가 Text mining이라고 말씀드렸죠? 아래 슬라이드에는 일부 과학적 텍스트가 있는데, 이 텍스트에서 관심 있는 개체를 식별하는 데 사용할 수 있는 도구가 있답니다.
여기서 우리는 화합물, 유전자, 질병 및 과정 등을 식별하고 있어요. 그런데 이러한 도구 중 일부는 이것이 화합물이라고만 말하고 화합물이 무엇으로 구성되어 있는지는 알려주지 않는다는 점에서 약간 속이는 것 같기도 해요.
우리가 연구해 온 것 중 하나는 그것이 실제로 어떤 화합물이나 유전자인지 정확히 식별하는 거예요. 그런 다음 기본적으로 본문에서 확인한 화학 구조를 재설계하는 거죠.
우리는 또한 텍스트에 있는 개체 간의 관계를 식별하고 "화합물은 이 목표를 억제합니다."와 같은 진술을 제시하려고 노력하고 있답니다.
PubMed 라이브러리의 풍부함
우리가 처음에 사용했던 코퍼스는 국립 의학 도서관의 PubMed에요(아래 참조). 정말 놀라운 자원이죠! 1946년부터 약 5,600개의 과학 저널에서 기사를 수집해 왔고, 이러한 기사의 초록을 무료로 제공하고 있다니, 정말 대단하지 않나요?
하지만 때때로 간과되는 점은 기사나 초록이 이 라이브러리에 입력되면 인간 전문가가 태그를 지정한다는 거예요. 그들은 이러한 MeSH 용어를 의학 주제 제목이라고 부른답니다.
위 이미지에서 왼쪽 텍스트는 오른쪽에 표시된 것처럼 실제로 얻은 태그 수에 대한 인상을 줘요. 그리고 이러한 태그의 좋은 점은 태그가 구성되는 방식과 인간 전문가가 제공한다는 점이죠.
때때로 태그는 인간의 큐레이션으로 인해 텍스트에서 얻을 수 없는 방식으로 기사를 설명하기도 한답니다.
MeSH 용어는 체계적으로 구성되어 있다고 말씀드렸는데, 아래에는 구성 방식에 대한 내용이 조금 나와 있어요. 그들은 트리 형태로 조직되어 있답니다. 다이어그램에는 그 중 우리가 관심을 갖고 있는 5개의 트리가 표시되어 있어요. 총 16개의 트리가 있는데, 여기에는 지리나 직업과 같은 항목이 포함되어 있지만 우리의 목적에는 별로 관심이 없어요.
이 트리에는 약 25만 개의 태그가 사용된다고 해요. 그런데 여기서 솔직하게 말씀드릴 게 있어요. 실제로는 그렇게 예쁘게 보이지는 않아요. 전체 조직이 트리 구조이긴 하지만요.
가지 사이에 연결이 있기 때문에 실제 레이아웃은 보기 좋지 않을 수 있지만, 일반적으로 트리로 구성되어 있답니다.
이 슬라이드는 이 트리가 얼마나 깊고 풍부한지 살짝 보여주는 것 같아요. 특정 태그로 주석이 달린 기사 수에 따라 크기가 결정되는데, 잘 보시면 태그가 보이지 않죠?
좀 더 확대해서 보면, 기사가 수용체의 특정 하위 유형을 다룰 것이라는 것을 태그만으로도 알 수 있어요. 정말 풍부하고 상세한 정보를 사용하고 있는 거죠.
하지만 여기서 단점은, 텍스트 마이닝을 통해 엔터티를 얻고 이러한 엔터티 간의 관계를 얻는다는 점이에요. 여기서는 태그가 초록에 있거나 주석이 달려있는 것만 알 수 있죠. 그래서 PubMed 정보를 그래프에 넣어서 이걸 결합하고 싶은데, 어떻게 해야 할까요?
텍스트의 관계에서 그래프의 관계 구축
여기서는 2,500만 개의 초록을 모두 살펴보고 있다는 사실을 활용하고 있어요. 다음은 4개의 기사를 사용한 간단한 예시인데요. 이렇게 해서 이 기사를 살펴보면, 화합물 A와 유전자 1과 같은 일부 개체가 매우 자주 함께 발생한다는 것을 알 수 있어요.
우리는 연관 규칙 마이닝을 사용해서 이러한 엔터티에 대한 동시 발생 확률을 설정하고 있어요. 문장의 동사는 사용하지 않고, 이러한 엔터티만 사용하고 있죠. 알려진 대로 리프트를 수집해서 0에서 1까지 크기를 조정할 수 있어요.
특정 임계값을 초과하면 엔터티(이 예에서는 화합물 A와 유전자 1) 사이에 관계가 있다고 판단하고, 이를 그래프에 표시하는 거예요. 이렇게 텍스트의 관계에 대한 통계적 분석을 사용해서 그래프의 관계를 생성할 수 있답니다.
리프트는 연관 강도인데, 이걸 연관의 불확실성으로 저장하는 게 포인트에요. 나중에 그래프 순회를 하면서 그래프의 거리 측정값으로 활용할 거거든요.
연관성은 연관에 대한 신뢰 척도를 제공해주고, 우리는 그 반대를 취하는 거죠. 연관성 강도가 높으면 불확실성이 낮으니까, 이걸 그래프에 입력하는 거에요.
이 지표를 활용하기
이걸로 뭘 할 수 있을까요?
이전 그래프에는 우리가 탐색하려는 삼각형이 있었죠. 이제 이런 걸 할 수 있어요.를 날려서 "화합물, 유전자, 표현형 또는 질병 사이의 삼각형을 찾고 싶어. 그리고 세 모서리의 거리 합을 구해서, 이 합으로 삼각형 순위를 매길 거야. 맨 위에는 불확실성이 가장 낮은 삼각형이 있겠지?"
이걸 실행했을 때 (왼쪽 그림), 가장 먼저 나타나는 삼각형 중 하나가 타파미디스 아밀로이드 신경병증 (질병)과 트랜스티레틴 (효소)을 연결하는 삼각형이에요. 이게 상식적인 결과인지 확인하려면 어떻게 해야 할까요?
Wikipedia에 가서 찾아보는 거죠. 왼쪽 상자의 텍스트는 타파미디스 Wikipedia 페이지에서 가져온 건데요, 페이지 첫 문장 중 하나에 타파미디스가 아밀로이드 신경병증을 치료하는 데 사용되는 약물이며, 트랜스티레틴 관련 유전성 아밀로이드증 때문에 발생한다고 나와 있어요.
이게 바로 검증, 혹은 검증 방법 중 하나에요. 이 접근법과 연관성을 통해 이걸 잡아낸 거죠.
이걸 다시 실행하면 두 번째로 나타나는 것(오른쪽 그림)은 또 다른 삼각형인데, 텍스트는 역시 Wikipedia 페이지에서 가져왔어요. 카나반병에 대한 내용인데, 이 경우에는 화합물이 약물 치료제가 아니라 실제로 질병을 일으키는 건 이 화합물의 축적 때문이라는 거죠.
여기서 제가 말하고 싶은 건, 우리가 이 관계에 대해 더 자세한 내용을 배우고 있다는 점이에요. 한 경우에는 화합물이 약물 역할을 했고, 다른 경우에는 화합물이 원인 물질 역할을 했죠. 중요한 건 우리가 전체적인 그림을 얻고, 그게 우리가 관심을 갖는 부분이라는 거에요.
그래서 우리는 Wikipedia로 가서 확인하는 거에요. 그런데 Wikipedia가 왜 안 뜨는 걸까요?
위쪽 왼쪽을 보시면, 이전 슬라이드의 두 번째 삼각형 상단에 있던 화합물에 대한 Wikipedia 페이지가 있어요. 이건 N-Acetylaspartic acid에 대한 항목인데, Wikipedia 페이지치고는 좀 짧은 편이죠. 사실 이 페이지에 있는 유일한 내용은 이 화합물과 카나반병, 그리고 이전 슬라이드의 효소와의 관계뿐이에요.
자, 이제 그래프를 사용해서 이 화합물에 대한 쿼리를 실행해서, 이와 관련된 질병의 순위를 매겨볼 수 있어요.
결과는 오른쪽 상자에 표시되는데요. 상위 5개 질병이고, 첫 번째 질병은 카나반병이네요. PubMed 문헌의 데이터니까, 이제 이 연관성을 뒷받침하는 증거를 찾아볼까요?
아래쪽 상자에는 참고할 만한 기사가 하나 있는데, 제목에 바로 이 화합물이 Pelizaeus-Merzbacher 질병에 역할을 한다고 나와 있네요. 저는 처음 알았어요!
삼각형 검색의 다른 용도
세포 분석을 할 때는 질병 자체에는 크게 관심이 없을 수도 있어요. 하지만 기본적으로 이전과 동일한 쿼리를 사용해서, 대신 예를 들어 cellular component가 있는 요소를 검색하면 아래 왼쪽에 결과가 표시될 거예요.
기억하시겠지만, 카나반병은 신경 질환이기 때문에 여기에 표시된 component들은 모두 중추신경계와 관련이 있어요.
오른쪽에서도 비슷한 작업을 하고 있어요. cellular component를 biological process로 바꿨죠. 여기에서 이 화합물과 관련된 biological process 목록을 얻을 수 있어요. 세포 분석에서는 이러한 cellular process가 실제로 우리가 관심을 갖는 부분이에요. 이 모든 게 이 혼합물에서 비롯된 거죠.
결과적으로 PubMed의 내용에 대한 매우 광범위한 주석 또는 지식을 제공하는 셈이에요. 이게 바로 이기종 데이터 세트를 통합하는 텍스트 마이닝이죠.
Graph Database의 기타 데이터 소스
아래 슬라이드는 지금까지 우리가 여기에 넣은 Graph Database의 내용을 보여줘요.
상위 3개 항목인 녹색 항목은 텍스트 마이닝 섹션에서 이미 다뤘었죠. 소스가 10개 더 있어요.
서로 보완할 수 있도록 선택했는데, 독성유전체학 데이터베이스도 있고, 단백질-단백질 상호작용 데이터도 있어요. 시스템 생물학과 경로, 단백질 및 유전자 주석도 가지고 있죠.
이 모든 것을 식별자와 그 안에 있는 개체 측면에서 통합하고 일치시키고 있어요. 현재 이 데이터베이스에는 약 3천만 개의 node가 있고, 앞으로 기사도 추가할 예정이에요. 그리고 이러한 node의 대부분은 이러한 기사들이 될 거예요.
우리에게 특히 중요한 건 약 200만 개의 화합물이 있다는 점이에요. 정말 중요한 숫자죠. 그렇다고 이걸 새로운 유전자나 그와 비슷한 걸 식별하는 데 사용하지는 않을 거예요. 우리에게 중요한 건 관계에 관한 것이니까요.
저희는 약 91개의 서로 다른 관계와 약 4억 개의 `Relationship`을 가지고 있어요. 이 91개의 서로 다른 관계는 저희가 얻는 생물학과 기본 데이터의 풍부함 그 자체랍니다.
아래에서 이러한 관계가 어떻게 나타나는지 간단하게 볼 수 있어요. 여기 두 가지 예시가 있는데요. 단백질은 특정 단백질을 인산화하고, 화합물은 이 단백질의 발현에 영향을 미쳐요. 저희는 여기서 꽤 광범위하게 노력하고 있답니다.
전체 빌드 프로세스
기술적인 측면에 대해 조금 살펴볼까요?
아래는 PubMed 초록이 먼저 Mongo 데이터베이스 (MongoDB)로 들어가는 인프라인데요, 이것이 실제로 텍스트 분석을 주도하는 부분이에요.
가장 큰 이유는 저희가 포스트그레SQL 데이터베이스를 중간에 둔 건 Novartis의 기존 데이터 웨어하우스 때문인데요, 여기에는 내부 및 외부 데이터의 사전 요약 작업이 이미 완료되어 있었어요. 그래서 ETL을 수행해서 이 Postgres 데이터베이스에 데이터를 가져올 수 있었죠.
이건 저희에게 정말 다행스러운 일이었어요. 상상할 수 있듯이, 이러한 업스트림 데이터 웨어하우스를 구축하는 데는 수년이 걸렸거든요.
데이터를 로 가져오기 위해 저희는 CSV 배치 가져오기 도구를 사용하고 있어요. 현재 텍스트 마이닝 등을 수행하는 방법을 정확히 파악하는 중이라, CSV 파일을 통해 이 스테이징을 수행하는 것이 매우 효과적이었답니다.
Neo4j 데이터베이스 사용: 예
저희는 이걸 실제로 무엇에 사용할까요?
여기 한 가지 예시가 있어요. 저는 이러한 영상 분석을 실행하는 것에 대해 이야기했는데요, 많은 경우에 저희는 찾고 있는 것이 무엇인지 알고 있고 이 표현형을 보고 싶어 하며 다른 표현형은 보고 싶지 않아요. 그래서 저희는 화합물을 분류하고 활성 또는 비활성으로 분류할 수 있죠.
이제 이 데이터를 분석하고 싶다면, 과거에 수행했던 작업을 여기에서도 그래프 형식으로 수행할 수 있어요. 저희는 이러한 화합물에 대해 가지고 있는 다른 표적 주석을 찾을 수 있으며, 이를 "표적 강화"라고 부른답니다.
관계형 데이터베이스로도 이 작업을 해왔고, 꽤 성공적이었어요. 하지만 이제 그래프로 넘어가서 이런 질문을 던질 수 있게 되었죠. "특정 거리 내에 있는 각 활성/비활성 화합물에 대해 어떤 `Node`에 도달할 수 있을까요?"
여기서 불확실성이 다시 등장해요. 활성 `Node`에서는 연결할 수 있지만 비활성 `Node`에서는 연결할 수 없거나, 비활성 `Node`보다 활성 `Node`에 훨씬 더 가까운 `Node`를 식별하고 싶은 거죠.
이것이 바로 활성 그룹이 공통적으로 가지고 있는 것이라는 아이디어에요. 유전자일 수도 있고, 생물학적 과정일 수도 있고, 활성 물질과 비활성 물질을 구별하는 경로일 수도 있죠.
아래 슬라이드는 이와 관련된 전문성을 조금 보여줍니다.
이러한 `Query`를 실행하면 정보 행을 얻게 돼요. 각 행에는 화합물인 `Node`까지의 거리가 나와 있고, 이를 모든 화합물에 대한 거리 측정 기준으로 변환하죠. 이 `Node`까지의 거리를 나타내는 표시 열이 있고, 도달할 수 없는 경우에는 매우 높은 값으로 설정합니다.
앞서 수십만 개의 화합물에 대해 이 작업을 수행한다고 말씀드렸죠. 이건 생물학자가 저에게 준 예시인데, 34개의 화합물이 있어서 여기에 표시하기 쉬워요.
그 다음엔 파티셔닝을 실행할 거예요. 활성 성분과 비활성 성분을 구분하는 컷(cut)을 찾으려고 하죠. 오른쪽 예시에서는 한쪽에 있는 14개의 활성 항목 중 12개를 나누고, 다른 쪽에는 모든 비활성 항목을 분할하는 컷을 찾을 수 있어요.
이런 의사결정 트리나 분할 방식이 작동하는 것처럼, 다른 분할도 찾을 수 있는데, 이걸 대리 분할이라고 하고 저희도 사용하고 있답니다.
이 예시에서는 다음 슬라이드에 보이는 것처럼, 찾고 있던 내부 `node` 두 개를 찾았어요.
이것들은 이제 활성 화합물이고, 파란색은 compounds, 빨간색은 이 네트워크에 있는 `node`이며, 이 경우에는 모두 genes에요. 노란색 강조 표시는 화합물이 원하는 표현형을 나타내는지 여부를 결정하는 것으로 보이는 두 개의 중앙 `node`를 보여주고 있죠.
이 예시에서는 그게 사실로 밝혀졌어요.
제가 이걸 보여드리는 또 다른 이유는 `관계(relationship)`가 출처 날짜에 따라 색상이 지정되기 때문이에요.
녹색 링크는 compound와 초기 `node` 계층 간의 모든 연결인데, 여기에는 internal data가 있어요. 나머지 회색은 이러한 연관 규칙에서 나온답니다.
이걸 확인할 수 있다는 건, 이런 모든 데이터 소스를 통합하고 텍스트 마이닝을 통한 분석을 수행하지 않고는 불가능한 일이라는 거죠.
하지만 그게 정말 사실일까요? 이 경우에는 이런 연관 규칙, 무슨 일이 일어나고 있는지, 그리고 왜 다르게 할 수 없는지 알아보고 싶었어요.
여기서 목표는 회색 연관 규칙을 무시할 때, 왼쪽 위 그래프에서 연결을 찾는 거예요. 모든 `관계(relationship)`에는 해당 `관계(relationship)`의 출처인 데이터 원본이 주석으로 추가되니까, 텍스트 마이닝 없이도 동일한 `쿼리(query)`를 실행할 수 있죠.
6개의 `node`가 들어 있는 파란색 상자가 초점인데요. 슬라이드 오른쪽에는 파란색 상자의 `node`에만 초점을 맞춘 새로운 `쿼리(query)` 결과가 있어요.
노란색 원이 있는 6개의 `node`는 왼쪽의 파란색 상자에 있는 `node`들이에요. 그들 사이의 연결을 찾을 수 있지만, 연결은 훨씬 더 복잡해 보이죠. 이런 불확실성을 요약하면 훨씬 약한 진술이 된답니다.
따라서 연결 결과의 역할은 이런 모든 기본 데이터 소스에 대한 지름길을 제공하는 거예요. 이제 이걸 식별하기 위한 지름길로 삼을 수 있고, 이걸 드릴다운해서 진행 상황을 더 잘 이해할 수 있어요.
대부분의 초록이 데이터베이스를 통해 문헌에서 나오기 때문에, 초록이 바로 여기서 등장하는 거죠.
연관 규칙 심층 분석
이런 연관 규칙이 있다면, 이걸 뒷받침하는 증거가 뭔지 알고 싶을 거예요.
위는 앞서 실행했던 쿼리와 동일하며, 보라색 구체는 모두 이 연관성에 대한 증거를 구성하는 기사들이에요. 데이터베이스에 해당 내용이 있으니 클릭하면 해당 기사의 내용을 볼 수 있죠.
슬라이드의 오른쪽 하단에 표시된 것은 우리가 확인한 것과 동일한 관계에 대해 설명하며, 테스트한 것과 유사하게 작용해야 하는 화합물에 대해서도 설명하고 있어요.
따라서 우리는 이 그래프에서 가설을 찾았을 뿐만 아니라 이제 가설을 테스트하고 화합물이 이 그래프에서 예측한 대로 작동하는지 확인할 수 있는 방법도 갖게 된 거죠. 아직 이 단계를 완료하지 않았지만요.
결론: 생물학적 지식에 대한 현실 점검
저는 약간의 현실 점검을 하고 다시 생물학적 지식에 대한 질문으로 돌아가고 싶어요.
위는 앞서 보여드린 결과이며, 처음 실행했을 때와 비슷해요. 그 시점에서 우리는 사물 사이의 연관성을 확인하려고 노력했죠.
그래서 우리가 처음 이 일을 했을 때 결과를 보고 생물학자에게 가서 "어떻게 생각하세요? 그게 말이 되나요?"라고 물었어요. 그리고 우리가 받은 피드백은 "나도 그럴 줄 알았어"라는 것이었고 거기에는 약간의 실망감도 있었죠. 왜냐하면 생물학자는 우리가 자신이 알지 못했던 정말 새로운 통찰력, 즉 멋지고 놀라운 것을 발견하길 원했기 때문이에요.
하지만 대부분의 경우에는 이것이 작동하는 방식이 아니에요.
귀하의 화합물이 어떻게 작동하는지 알아낼 수 있고 왜 그런 일을 하는지에 대한 새로운 통찰력을 얻을 수 있지만, 그것이 항상 엄청난 결과를 가져오는 것은 아니죠.
하지만 첫 번째 슬라이드 중 하나에 대해 말했듯이, 제가 이 생물학적 지식을 포착하려고 시도하는 것을 설명했을 때 매우 모호하고 그것이 무엇을 의미하는지 정확히 알지 못해요.
하지만 여기에는 데이터에서 추론할 수 있는 중요한 내용이 있으며, 이는 대부분 생물학적 개체 간의 관계에 관한 것이에요. 그리고 이것을 생물학자에게 가져갔고 생물학자가 "나도 알아요"라고 말한다면 그것은 생물학적 지식인 거죠.
이것이 바로 우리가 문헌과 이러한 데이터 소스를 결합하여 Graph Database에 포착하려고 하는 것이에요.
이 연구가 진행되는 곳
단기적으로 이 문제를 해결하기 위해 노력하고 있는 작업 목록은 다음과 같아요.
우리는 텍스트 마이닝을 통해 더 나은 작업을 수행하려고 노력하고 있어요. 이제 우리는 주로 데이터 마이닝 내부 문서를 목적으로 초록뿐만 아니라 전문 분석을 시작했죠.
우리는 또한 사용할 임계값을 선택하는 것으로 시작된 불확실성의 개념을 살펴보고 있지만 이에 대해 좀 더 합리적으로 생각해야 할 몇 가지 사항이 있어요.
현재로서는 라이브러리에 새로 추가된 내용으로 데이터베이스를 자동으로 업데이트하는 방법이 없어요.
매일 새로운 기사가 출판되어 도서관에 추가되지만 우리는 이를 자동으로 가져오는 프로세스를 갖고 있지 않죠. 그리고 항상 더 많은 데이터가 있어요. 의도적으로 거기에 없는 것은 유전자, 유전자 발현 데이터 등 많은 게놈 데이터에요.
일단 거기에 넣으면 데이터베이스 크기가 최소한 두 배는 될 거예요.
- Association Rule Mining
- Drug Discovery
- Graph Technology
- GraphConnect
- Heterogeneous Data
- Novartis
- PubMed
에이치시스템즈의 LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.
'GraphRAG' 카테고리의 다른 글
| 고객 여정, 이제 그래프로 보세요: Neo4j와 GraphRAG 활용법 (1) | 2026.04.26 |
|---|---|
| 전 세계 컨텍스트 그래프와 AI 메모리: GraphRAG의 미래? (0) | 2026.04.26 |
| 헬스케어를 연결하다: Neo4j와 GraphRAG로 혁신을 이루는 방법 (0) | 2026.04.25 |
| 누가 비욘세 점심 메뉴에 관심을 가질까? GraphRAG로 나만의 지식 그래프 구축하기 (1) | 2026.04.25 |
| Amnesia Is All You Need (0) | 2026.04.25 |
