GraphRAG / kg_builder /src /knowledge_graph_builder.py
Prakhar Bhandari
Test
a16ade2
raw
history blame
1.19 kB
from api_connections import get_graph_connection
from langchain_community.graphs.graph_document import (
Node as BaseNode,
Relationship as BaseRelationship,
GraphDocument,
)
from langchain.schema import Document
from typing import List, Dict, Any, Optional
from langchain.pydantic_v1 import Field, BaseModel
from models import Node, Relationship, KnowledgeGraph
from utils import map_to_base_node, map_to_base_relationship
from api_connections import get_extraction_chain
def extract_and_store_graph(
document: Document,
category: str,
nodes:Optional[List[str]] = None,
rels:Optional[List[str]]=None) -> None:
graph = get_graph_connection(category)
# Extract graph data using OpenAI functions
extract_chain = get_extraction_chain(category, nodes, rels)
data = extract_chain.invoke(document.page_content)['function']
# Construct a graph document
graph_document = GraphDocument(
nodes = [map_to_base_node(node) for node in data.nodes],
relationships = [map_to_base_relationship(rel) for rel in data.rels],
source = document
)
# Store information into a graph
graph.add_graph_documents([graph_document])