728x90
반응형

성장하는 조직에서는 올바른 정보를 찾는 게 정말 많은 시간을 잡아먹을 수 있죠.

팀과 사람들이 지리적으로나 조직적으로 더 분산되면서 지식을 찾기가 점점 더 어려워져요. 게다가 바쁠 때는 지식을 공유하는 것보다 당장 눈앞의 일을 처리하는 게 우선순위가 되기 쉽잖아요. 내부 정보를 로 만들면 이런 문제를 해결하고 비즈니스에 중요한 일에 집중할 수 있게 도와준답니다.

Slack이나 Microsoft Teams 같은 앱이 지식을 한 곳에 모으는 데 도움이 되긴 하지만, 데이터는 여전히 구조화되지 않은 상태로 남아있어서 수많은 메시지, 문서, 블로그 게시물, 이메일에 숨겨진 진짜 가치를 찾기가 어렵게 만들죠. 이걸 일일이 살펴보는 건 마치 보물찾기처럼 느껴질 때가 많아요. 우리는 새로운 걸 만드는 데 시간을 더 쓰고 싶은데 말이죠!

이번 포스팅에서는 Neo4j를 사용해서 기업의 Knowledge Graph를 구축하고, 저장하고, 분석해서 이런 정보 공유 문제를 해결하는 방법을 알아볼 거예요.

Knowledge Graph를 사용하면 회사 내 다양한 엔터티(사람, 기술, 파일 등) 간의 관계를 파악하고 웹 앱 같은 단일 엔드포인트에서 쉽게 분석할 수 있어요. 이렇게 구조화되지 않은 정보 더미에서 구조를 동적으로 추론함으로써, 이제 더 이상 정보를 찾아 헤매지 않고 바로 보물로 점프할 수 있게 되는 거죠!

실제 Knowledge Graph

Knowledge Graph는 조직에서 데이터를 이해하기 위해 널리 사용되고 있어요. 몇몇 기업들은 Knowledge Graph를 활용해서 웹 검색 방식을 혁신하기도 했고, 또 다른 곳은 Knowledge Graph를 사용해서 우주로 나아가기도 했대요. 정말 흥미롭죠? Knowledge Graph에 대한 기대는 현실이고, 앞으로 더 커질 가능성이 높아요.

기본적으로 모든 Knowledge Graph는 유사한 목적, 즉 데이터 검색을 단순화하기 위해 정보를 구조화하는 역할을 해요.

Knowledge Graph가 있으면 네트워크 구조 자체에서 파생된 더 많은 정보로 데이터가 풍부해질 수 있죠. 새롭게 발견된 맥락은 기존 정보에 대한 완전히 새로운 통찰력을 제공함으로써 Knowledge Graph가 빛을 발하는 곳이에요.

기업 Knowledge Graph의 경우 사람, 문서, 메시지 및 이들의 관계를 모델링하는 데 중점을 둬요. 데이터베이스에 해당 정보가 있으면 이 정보를 사용하여 기술 그래프를 강화하고 사람들이 만든 콘텐츠를 기반으로 사람들을 기술에 연결하죠.

Slack Knowledge Graph 구축

회사로서 Neo4j는 내부 회사 Slack 채널을 통해 매월 50,000개 이상의 메시지를 보내요. 특정 클라이언트 또는 프로젝트를 중심으로 한 커뮤니케이션 부터 제품의 틈새 기능까지! 메시지는 다양한 링크, 첨부 파일 및 이모티콘이 포함된 응답과 함께 채널의 일부를 이루죠.

이 데이터는 자연스럽게 그래프로 표현돼요.

Slack Knowledge Graph 데이터에 사용되는 데이터 모델이에요.

우리가 UserMessageChannel에 보내는 중 특정 Skill을 언급하는 것을 모델링한다고 해볼게요. Cypher를 사용하면 다음과 같이 표현할 수 있어요:

MATCH (사용자:사용자)-[:SENDS_MESSAGE]->(메시지:메시지)-[:POSTED_IN]->>(채널:채널),
(메시지)-[:MENTIONS_SKILL]->(skill:Skill { 이름: “apoc” })
RETURN 사용자, 메시지, 채널, 스킬

Slack Knowledge Graph 사용: 기술 확인

새로 구축된 Knowledge Graph를 사용하여 Slack 상호 작용을 살펴봄으로써 사용자의 기술 수준을 동적으로 결정해요. 우리는 각 사용자의 "기술 점수"를 결정하기 위해 다양한 지표를 사용하는데요, 예를 들면 다음과 같아요.

    • Natural Language Processing(NLP) 기술을 사용하여 일반적인 단어 시퀀스를 추출하고 이를 내부 기술 계층 구조에 매핑해요. 예를 들어 누군가가 Cypher 쿼리 언어 전용 채널에서 자주 이야기하고 다음과 같은 내용을 언급하는 경우 UNION ALL 명령을 내리면 Knowledge Graph 이해에 관한 질문에 답할 수 있는 좋은 후보가 될 것이라고 가정할 수 있죠.
    • 다음으로, 다른 사람들이 사용자의 메시지에 어떻게 반응하는지 확인해요. 누군가가 질문에 답변하고 텍스트나 이모티콘을 사용하여 긍정적인 반응을 많이 얻으면 답변에 추가 포인트가 주어지고 해당 사용자의 "기술 포인트"가 더 많아져요.
    • 마찬가지로, 사용자가 특정 클라이언트의 이름과 근접하게 자주 언급된다면 해당 클라이언트의 프로젝트 상태에 대해 더 많이 알 수 있어요. 그러한 프로젝트에 특정 기술이 필요한 경우 사용자는 해당 기술에서 더 많은 포인트를 얻게 되죠.

이 채점 방법은 Python을 사용하여 구현되었으며 Neo4j 드라이버 라이브러리를 통해 Cypher를 사용하여 데이터를 쉽게 검색/저장할 수 있어요. 기술 수준이 포함된 생성된 Python 데이터 프레임에서 Neo4j에 다시 작성하는 거죠.

driver = NeoDriver(url, user, password)
  for user in output:
    for skill in output[user]:
      score = output[user][skill]["skill_score"]

      create_query = """ 
          MATCH (u:User{name: $user}), (s:Skill {name: $skill})
          MERGE (u)-[:HAS_SKILL {weight: $weight}]->(s)
      """

      driver.query(create_query, user=user, skill=skill, weight=score)

메시지와 응답이 그래프에서 모델링되는 방식의 예시예요. 여기서 초기 메시지는 Cypher 스킬(전용 cypher-genius-bar 채널에 게시됨)을 참조하므로 응답자(Michael)도 스킬 포인트를 얻게 되죠.

데이터 로딩 및 아키텍처

Slack은 대량 내보내기 및 API를 통해 작업 공간 정보를 제공하는데요. 저희의 경우에는 일련의 정보를 통해 정보를 제공했어요. Kettle 변환 및 작업을 지속하기 전에 Neo4j AuraDB 무리. 일단 거기에 도달하면 사전 정의된 기술 계층 구조에 대해 사용자에게 점수를 할당하기 전에 여러 Python 스크립트가 주기적으로 실행되어 메시지 주위에 구조를 추가해요.

Slack 정보 외에도 Slack에 게시된 하이퍼링크에 연결할 수 있는 Github, Google Drive, Salesforce의 데이터를 추가했어요. 그런 다음 누군가 Google 드라이브 문서를 언급하면 ​​관련 정보를 찾기 위해 해당 문서를 구문 분석할 수도 있고요.

Kettle과 Python을 사용하여 Neo4j AuraDB에 데이터를 로드한 후 Neo4j Desktop의 사용자 정의 그래프 앱은 사용자가 데이터를 탐색하는 주요 방법으로 작동한답니다.

Slack Knowledge Graph를 기반으로 구축된 애플리케이션 아키텍처의 개요입니다.

검색 및 분석: 맞춤형 대시보드 구축

이 데이터를 수집하는 것은 모두 훌륭하지만 편리한 방법으로 사용할 수 없다면 단순히 사용되지 않겠죠? 이 데이터를 내부적으로 사용할 수 있는 기회를 갖게 되면서 우리는 신속하게 그래프 앱으로서의 UI Neo4j Desktop을 통해 내부적으로 배포합니다.

UI는 회사 내에서 가장 눈에 띄는 사용자와 기술을 식별할 뿐만 아니라 부족한 기술도 식별해요. 메시지는 시간 기반이므로 최신 동향을 파악하고 특정 기술 스택에 대한 언급이 시간이 지남에 따라 어떻게 변했는지 확인할 수도 있답니다.

마무리

Neo4j의 내부 Slack 기록을 기반으로 Knowledge Graph를 디자인, 구성 및 사용하는 방법을 보여드렸어요. 데이터를 그래프로 구성함으로써 조직, 각 사용자의 기술 수준에 대한 새로운(또는 숨겨진) 통찰력을 생성하는 새로운 상황별 정보를 수집할 수 있어요.

간단히 말해서, Knowledge Graph는 데이터 분석을 통해 변화를 주도하는 놀라운 도구예요. 즉, 이미 보유하고 있는 데이터를 최대한 활용하는 것이죠!

Graph Database와 Neo4j에 대해 더 자세히 알고 싶으신가요? 온라인 교육 강좌에 등록하려면 아래를 클릭하세요. 그래프 데이터베이스 소개 그래프 기술의 세계를 빠르게 마스터해보세요.
  • Cypher
  • Kettle
  • Natural Language Processing
  • Neo4j Aura
  • Neo4j Driver Library
  • NLP
  • Python
  • Slack

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

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

728x90
반응형

+ Recent posts