|
1 | 1 | import django |
2 | 2 | from django.conf import settings |
| 3 | +from django.contrib.postgres.fields import ArrayField |
3 | 4 | from django.core import serializers |
4 | 5 | from django.db import connection, migrations, models |
5 | 6 | from django.db.models import Avg, Sum |
@@ -46,6 +47,7 @@ class Item(models.Model): |
46 | 47 | half_embedding = HalfVectorField(dimensions=3, null=True, blank=True) |
47 | 48 | binary_embedding = BitField(length=3, null=True, blank=True) |
48 | 49 | sparse_embedding = SparseVectorField(dimensions=3, null=True, blank=True) |
| 50 | + embeddings = ArrayField(VectorField(dimensions=3), null=True, blank=True) |
49 | 51 |
|
50 | 52 | class Meta: |
51 | 53 | app_label = 'django_app' |
@@ -82,6 +84,7 @@ class Migration(migrations.Migration): |
82 | 84 | ('half_embedding', pgvector.django.HalfVectorField(dimensions=3, null=True, blank=True)), |
83 | 85 | ('binary_embedding', pgvector.django.BitField(length=3, null=True, blank=True)), |
84 | 86 | ('sparse_embedding', pgvector.django.SparseVectorField(dimensions=3, null=True, blank=True)), |
| 87 | + ('embeddings', ArrayField(pgvector.django.VectorField(dimensions=3), null=True, blank=True)), |
85 | 88 | ], |
86 | 89 | ), |
87 | 90 | migrations.AddIndex( |
@@ -433,3 +436,9 @@ def test_missing(self): |
433 | 436 | assert Item.objects.first().half_embedding is None |
434 | 437 | assert Item.objects.first().binary_embedding is None |
435 | 438 | assert Item.objects.first().sparse_embedding is None |
| 439 | + |
| 440 | + def test_vector_array(self): |
| 441 | + Item(id=1, embeddings=[np.array([1, 2, 3]), np.array([4, 5, 6])]).save() |
| 442 | + |
| 443 | + # this fails if the driver does not cast arrays |
| 444 | + # item = Item.objects.get(pk=1) |
0 commit comments