IDEA-8: GraphRAG — NetworkX 기반 지식 그래프
- td_knowledge_graph 테이블 (user_id, subject, relation, object 트리플) - GraphService: MultiDiGraph 인메모리 캐시 + MySQL 영속화 - add_relation / query_entity LangChain 도구 - call_model에 그래프 요약 자동 주입 (시스템 프롬프트) - GRAPH_ENABLED=true 환경변수로 활성화 - requirements.txt에 networkx>=3.0 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
from langchain_core.tools import tool
|
||||
|
||||
|
||||
def make_graph_tools(graph_service, user_id: str = "default"):
|
||||
"""지식 그래프 저장/조회 Tool 쌍을 반환한다."""
|
||||
|
||||
@tool
|
||||
def add_relation(subject: str, relation: str, obj: str) -> str:
|
||||
"""가족 구성원이나 사물 사이의 관계를 지식 그래프에 저장합니다.
|
||||
알레르기·가족 관계·선호도·질환·특기 등 관계형 정보를 저장할 때 사용하세요.
|
||||
예:
|
||||
subject='도율', relation='알레르기', obj='복숭아'
|
||||
subject='아록', relation='자녀', obj='도율'
|
||||
subject='근혜', relation='직업', obj='간호사'
|
||||
subject='하율', relation='좋아하는음식', obj='바나나'"""
|
||||
return graph_service.add_relation(subject, relation, obj, user_id)
|
||||
|
||||
@tool
|
||||
def query_entity(entity: str) -> str:
|
||||
"""특정 인물이나 사물에 대해 저장된 모든 관계 정보를 조회합니다.
|
||||
예: entity='도율' → 도율의 알레르기, 나이, 부모, 좋아하는 것 등 모든 알려진 관계"""
|
||||
return graph_service.query_entity(entity, user_id)
|
||||
|
||||
return add_relation, query_entity
|
||||
Reference in New Issue
Block a user