filter out falsey values

This commit is contained in:
prestonrasmussen 2025-10-02 14:47:46 -04:00
parent 443f972f45
commit dd0d42855e
4 changed files with 33 additions and 25 deletions

View file

@ -646,6 +646,8 @@ def get_community_edge_from_record(record: Any):
async def create_entity_edge_embeddings(embedder: EmbedderClient, edges: list[EntityEdge]):
if len(edges) == 0:
return
fact_embeddings = await embedder.create_batch([edge.fact for edge in edges])
# filter out falsey values from edges
filtered_edges = [edge for edge in edges if edge.fact]
fact_embeddings = await embedder.create_batch([edge.fact for edge in filtered_edges])
for edge, fact_embedding in zip(edges, fact_embeddings, strict=True):
edge.fact_embedding = fact_embedding

View file

@ -96,7 +96,8 @@ class Node(BaseModel, ABC):
created_at: datetime = Field(default_factory=lambda: utc_now())
@abstractmethod
async def save(self, driver: GraphDriver): ...
async def save(self, driver: GraphDriver):
...
async def delete(self, driver: GraphDriver):
match driver.provider:
@ -344,10 +345,12 @@ class Node(BaseModel, ABC):
await driver.aoss_client.bulk(body=actions)
@classmethod
async def get_by_uuid(cls, driver: GraphDriver, uuid: str): ...
async def get_by_uuid(cls, driver: GraphDriver, uuid: str):
...
@classmethod
async def get_by_uuids(cls, driver: GraphDriver, uuids: list[str]): ...
async def get_by_uuids(cls, driver: GraphDriver, uuids: list[str]):
...
class EpisodicNode(Node):
@ -435,11 +438,11 @@ class EpisodicNode(Node):
@classmethod
async def get_by_group_ids(
cls,
driver: GraphDriver,
group_ids: list[str],
limit: int | None = None,
uuid_cursor: str | None = None,
cls,
driver: GraphDriver,
group_ids: list[str],
limit: int | None = None,
uuid_cursor: str | None = None,
):
cursor_query: LiteralString = 'AND e.uuid < $uuid' if uuid_cursor else ''
limit_query: LiteralString = 'LIMIT $limit' if limit is not None else ''
@ -569,7 +572,8 @@ class EntityNode(Node):
labels = ':'.join(self.labels + ['Entity'])
if driver.aoss_client:
await driver.save_to_aoss(ENTITY_INDEX_NAME, [entity_data]) # pyright: ignore reportAttributeAccessIssue
await driver.save_to_aoss(ENTITY_INDEX_NAME,
[entity_data]) # pyright: ignore reportAttributeAccessIssue
result = await driver.execute_query(
get_entity_node_save_query(driver.provider, labels, bool(driver.aoss_client)),
@ -618,12 +622,12 @@ class EntityNode(Node):
@classmethod
async def get_by_group_ids(
cls,
driver: GraphDriver,
group_ids: list[str],
limit: int | None = None,
uuid_cursor: str | None = None,
with_embeddings: bool = False,
cls,
driver: GraphDriver,
group_ids: list[str],
limit: int | None = None,
uuid_cursor: str | None = None,
with_embeddings: bool = False,
):
cursor_query: LiteralString = 'AND n.uuid < $uuid' if uuid_cursor else ''
limit_query: LiteralString = 'LIMIT $limit' if limit is not None else ''
@ -763,11 +767,11 @@ class CommunityNode(Node):
@classmethod
async def get_by_group_ids(
cls,
driver: GraphDriver,
group_ids: list[str],
limit: int | None = None,
uuid_cursor: str | None = None,
cls,
driver: GraphDriver,
group_ids: list[str],
limit: int | None = None,
uuid_cursor: str | None = None,
):
cursor_query: LiteralString = 'AND c.uuid < $uuid' if uuid_cursor else ''
limit_query: LiteralString = 'LIMIT $limit' if limit is not None else ''
@ -871,6 +875,8 @@ async def create_entity_node_embeddings(embedder: EmbedderClient, nodes: list[En
if not nodes: # Handle empty list case
return
name_embeddings = await embedder.create_batch([node.name for node in nodes])
# filter out falsey values from nodes
filtered_nodes = [node for node in nodes if node.name]
name_embeddings = await embedder.create_batch([node.name for node in filtered_nodes])
for node, name_embedding in zip(nodes, name_embeddings, strict=True):
node.name_embedding = name_embedding

View file

@ -1,7 +1,7 @@
[project]
name = "graphiti-core"
description = "A temporal graph building library"
version = "0.21.0pre10"
version = "0.21.0pre11"
authors = [
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
{ name = "Preston Rasmussen", email = "preston@getzep.com" },

4
uv.lock generated
View file

@ -1,5 +1,5 @@
version = 1
revision = 3
revision = 2
requires-python = ">=3.10, <4"
resolution-markers = [
"python_full_version >= '3.14'",
@ -783,7 +783,7 @@ wheels = [
[[package]]
name = "graphiti-core"
version = "0.21.0rc8"
version = "0.21.0rc11"
source = { editable = "." }
dependencies = [
{ name = "diskcache" },