fix: serialize UUID in pgvector data point payload
This commit is contained in:
parent
758698a35b
commit
897bbac699
2 changed files with 8 additions and 5 deletions
|
|
@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker
|
||||||
|
|
||||||
from cognee.infrastructure.engine import DataPoint
|
from cognee.infrastructure.engine import DataPoint
|
||||||
|
|
||||||
from .serialize_datetime import serialize_datetime
|
from .serialize_data import serialize_data
|
||||||
from ..models.ScoredResult import ScoredResult
|
from ..models.ScoredResult import ScoredResult
|
||||||
from ..vector_db_interface import VectorDBInterface
|
from ..vector_db_interface import VectorDBInterface
|
||||||
from ..embeddings.EmbeddingEngine import EmbeddingEngine
|
from ..embeddings.EmbeddingEngine import EmbeddingEngine
|
||||||
|
|
@ -113,7 +113,7 @@ class PGVectorAdapter(SQLAlchemyAdapter, VectorDBInterface):
|
||||||
PGVectorDataPoint(
|
PGVectorDataPoint(
|
||||||
id=data_point.id,
|
id=data_point.id,
|
||||||
vector=data_vectors[data_index],
|
vector=data_vectors[data_index],
|
||||||
payload=serialize_datetime(data_point.model_dump()),
|
payload=serialize_data(data_point.model_dump()),
|
||||||
)
|
)
|
||||||
for (data_index, data_point) in enumerate(data_points)
|
for (data_index, data_point) in enumerate(data_points)
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from uuid import UUID
|
||||||
|
|
||||||
def serialize_datetime(data):
|
def serialize_data(data):
|
||||||
"""Recursively convert datetime objects in dictionaries/lists to ISO format."""
|
"""Recursively convert datetime objects in dictionaries/lists to ISO format."""
|
||||||
if isinstance(data, dict):
|
if isinstance(data, dict):
|
||||||
return {key: serialize_datetime(value) for key, value in data.items()}
|
return {key: serialize_data(value) for key, value in data.items()}
|
||||||
elif isinstance(data, list):
|
elif isinstance(data, list):
|
||||||
return [serialize_datetime(item) for item in data]
|
return [serialize_data(item) for item in data]
|
||||||
elif isinstance(data, datetime):
|
elif isinstance(data, datetime):
|
||||||
return data.isoformat() # Convert datetime to ISO 8601 string
|
return data.isoformat() # Convert datetime to ISO 8601 string
|
||||||
|
elif isinstance(data, UUID):
|
||||||
|
return str(data)
|
||||||
else:
|
else:
|
||||||
return data
|
return data
|
||||||
Loading…
Add table
Reference in a new issue