Skip to content
Snippets Groups Projects
Unverified Commit c18b3234 authored by abhiram1809's avatar abhiram1809 Committed by GitHub
Browse files

Added Embeddings Option on custom Triplets (#10629)

parent 8143ad57
No related branches found
No related tags found
No related merge requests found
...@@ -244,17 +244,25 @@ class KnowledgeGraphIndex(BaseIndex[KG]): ...@@ -244,17 +244,25 @@ class KnowledgeGraphIndex(BaseIndex[KG]):
# Update the storage context's index_store # Update the storage context's index_store
self._storage_context.index_store.add_index_struct(self._index_struct) self._storage_context.index_store.add_index_struct(self._index_struct)
def upsert_triplet(self, triplet: Tuple[str, str, str]) -> None: def upsert_triplet(
"""Insert triplets. self, triplet: Tuple[str, str, str], include_embeddings: bool = False
) -> None:
"""Insert triplets and optionally embeddings.
Used for manual insertion of KG triplets (in the form Used for manual insertion of KG triplets (in the form
of (subject, relationship, object)). of (subject, relationship, object)).
Args: Args:
triplet (str): Knowledge triplet triplet (tuple): Knowledge triplet
embedding (Any, optional): Embedding option for the triplet. Defaults to None.
""" """
self._graph_store.upsert_triplet(*triplet) self._graph_store.upsert_triplet(*triplet)
triplet_str = str(triplet)
if include_embeddings:
set_embedding = self._service_context.embed_model.get_text_embedding(
triplet_str
)
self._index_struct.add_to_embedding_dict(str(triplet), set_embedding)
def add_node(self, keywords: List[str], node: BaseNode) -> None: def add_node(self, keywords: List[str], node: BaseNode) -> None:
"""Add node. """Add node.
...@@ -270,7 +278,10 @@ class KnowledgeGraphIndex(BaseIndex[KG]): ...@@ -270,7 +278,10 @@ class KnowledgeGraphIndex(BaseIndex[KG]):
self._docstore.add_documents([node], allow_update=True) self._docstore.add_documents([node], allow_update=True)
def upsert_triplet_and_node( def upsert_triplet_and_node(
self, triplet: Tuple[str, str, str], node: BaseNode self,
triplet: Tuple[str, str, str],
node: BaseNode,
include_embeddings: bool = False,
) -> None: ) -> None:
"""Upsert KG triplet and node. """Upsert KG triplet and node.
...@@ -281,11 +292,18 @@ class KnowledgeGraphIndex(BaseIndex[KG]): ...@@ -281,11 +292,18 @@ class KnowledgeGraphIndex(BaseIndex[KG]):
Args: Args:
keywords (List[str]): Keywords to index the node. keywords (List[str]): Keywords to index the node.
node (Node): Node to be indexed. node (Node): Node to be indexed.
include_embeddings (bool): Option to add embeddings for triplets. Defaults to False
""" """
subj, _, obj = triplet subj, _, obj = triplet
self.upsert_triplet(triplet) self.upsert_triplet(triplet)
self.add_node([subj, obj], node) self.add_node([subj, obj], node)
triplet_str = str(triplet)
if include_embeddings:
set_embedding = self._service_context.embed_model.get_text_embedding(
triplet_str
)
self._index_struct.add_to_embedding_dict(str(triplet), set_embedding)
def _delete_node(self, node_id: str, **delete_kwargs: Any) -> None: def _delete_node(self, node_id: str, **delete_kwargs: Any) -> None:
"""Delete a node.""" """Delete a node."""
......
...@@ -217,17 +217,25 @@ class KnowledgeGraphIndex(BaseIndex[KG]): ...@@ -217,17 +217,25 @@ class KnowledgeGraphIndex(BaseIndex[KG]):
) )
self._index_struct.add_to_embedding_dict(triplet_str, rel_embedding) self._index_struct.add_to_embedding_dict(triplet_str, rel_embedding)
def upsert_triplet(self, triplet: Tuple[str, str, str]) -> None: def upsert_triplet(
"""Insert triplets. self, triplet: Tuple[str, str, str], include_embeddings: bool = False
) -> None:
"""Insert triplets and optionally embeddings.
Used for manual insertion of KG triplets (in the form Used for manual insertion of KG triplets (in the form
of (subject, relationship, object)). of (subject, relationship, object)).
Args: Args:
triplet (str): Knowledge triplet triplet (tuple): Knowledge triplet
embedding (Any, optional): Embedding option for the triplet. Defaults to None.
""" """
self._graph_store.upsert_triplet(*triplet) self._graph_store.upsert_triplet(*triplet)
triplet_str = str(triplet)
if include_embeddings:
set_embedding = self._service_context.embed_model.get_text_embedding(
triplet_str
)
self._index_struct.add_to_embedding_dict(str(triplet), set_embedding)
def add_node(self, keywords: List[str], node: BaseNode) -> None: def add_node(self, keywords: List[str], node: BaseNode) -> None:
"""Add node. """Add node.
...@@ -243,7 +251,10 @@ class KnowledgeGraphIndex(BaseIndex[KG]): ...@@ -243,7 +251,10 @@ class KnowledgeGraphIndex(BaseIndex[KG]):
self._docstore.add_documents([node], allow_update=True) self._docstore.add_documents([node], allow_update=True)
def upsert_triplet_and_node( def upsert_triplet_and_node(
self, triplet: Tuple[str, str, str], node: BaseNode self,
triplet: Tuple[str, str, str],
node: BaseNode,
include_embeddings: bool = False,
) -> None: ) -> None:
"""Upsert KG triplet and node. """Upsert KG triplet and node.
...@@ -254,11 +265,18 @@ class KnowledgeGraphIndex(BaseIndex[KG]): ...@@ -254,11 +265,18 @@ class KnowledgeGraphIndex(BaseIndex[KG]):
Args: Args:
keywords (List[str]): Keywords to index the node. keywords (List[str]): Keywords to index the node.
node (Node): Node to be indexed. node (Node): Node to be indexed.
include_embeddings (bool): Option to add embeddings for triplets. Defaults to False
""" """
subj, _, obj = triplet subj, _, obj = triplet
self.upsert_triplet(triplet) self.upsert_triplet(triplet)
self.add_node([subj, obj], node) self.add_node([subj, obj], node)
triplet_str = str(triplet)
if include_embeddings:
set_embedding = self._service_context.embed_model.get_text_embedding(
triplet_str
)
self._index_struct.add_to_embedding_dict(str(triplet), set_embedding)
def _delete_node(self, node_id: str, **delete_kwargs: Any) -> None: def _delete_node(self, node_id: str, **delete_kwargs: Any) -> None:
"""Delete a node.""" """Delete a node."""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment