Files
letta-server/tests/test_vector_embeddings.py
mlong93 9deacbd89e feat: orm passage migration (#2180)
Co-authored-by: Mindy Long <mindy@letta.com>
2024-12-10 18:09:35 -08:00

42 lines
1.3 KiB
Python

import numpy as np
import sqlite3
import base64
from numpy.testing import assert_array_almost_equal
import pytest
from letta.orm.sqlalchemy_base import adapt_array, convert_array
from letta.orm.sqlite_functions import verify_embedding_dimension
def test_vector_conversions():
"""Test the vector conversion functions"""
# Create test data
original = np.random.random(4096).astype(np.float32)
print(f"Original shape: {original.shape}")
# Test full conversion cycle
encoded = adapt_array(original)
print(f"Encoded type: {type(encoded)}")
print(f"Encoded length: {len(encoded)}")
decoded = convert_array(encoded)
print(f"Decoded shape: {decoded.shape}")
print(f"Dimension verification: {verify_embedding_dimension(decoded)}")
# Verify data integrity
np.testing.assert_array_almost_equal(original, decoded)
print("✓ Data integrity verified")
# Test with a list
list_data = original.tolist()
encoded_list = adapt_array(list_data)
decoded_list = convert_array(encoded_list)
np.testing.assert_array_almost_equal(original, decoded_list)
print("✓ List conversion verified")
# Test None handling
assert adapt_array(None) is None
assert convert_array(None) is None
print("✓ None handling verified")
# Run the tests