Restore 0.1.5 version from stash
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
from .bit import FixedBitField
|
||||
from .halfvec import HalfVectorField
|
||||
from .sparsevec import SparseVectorField
|
||||
from .vector import VectorField
|
||||
from ..utils import HalfVector, SparseVector
|
||||
|
||||
__all__ = [
|
||||
'VectorField',
|
||||
'HalfVectorField',
|
||||
'FixedBitField',
|
||||
'SparseVectorField',
|
||||
'HalfVector',
|
||||
'SparseVector'
|
||||
]
|
||||
@@ -0,0 +1,21 @@
|
||||
from peewee import Expression, Field
|
||||
|
||||
|
||||
class FixedBitField(Field):
|
||||
field_type = 'bit'
|
||||
|
||||
def __init__(self, max_length=None, *args, **kwargs):
|
||||
self.max_length = max_length
|
||||
super(FixedBitField, self).__init__(*args, **kwargs)
|
||||
|
||||
def get_modifiers(self):
|
||||
return self.max_length and [self.max_length] or None
|
||||
|
||||
def _distance(self, op, vector):
|
||||
return Expression(lhs=self, op=op, rhs=self.to_value(vector))
|
||||
|
||||
def hamming_distance(self, vector):
|
||||
return self._distance('<~>', vector)
|
||||
|
||||
def jaccard_distance(self, vector):
|
||||
return self._distance('<%%>', vector)
|
||||
@@ -0,0 +1,34 @@
|
||||
from peewee import Expression, Field
|
||||
from ..utils import HalfVector
|
||||
|
||||
|
||||
class HalfVectorField(Field):
|
||||
field_type = 'halfvec'
|
||||
|
||||
def __init__(self, dimensions=None, *args, **kwargs):
|
||||
self.dimensions = dimensions
|
||||
super(HalfVectorField, self).__init__(*args, **kwargs)
|
||||
|
||||
def get_modifiers(self):
|
||||
return self.dimensions and [self.dimensions] or None
|
||||
|
||||
def db_value(self, value):
|
||||
return HalfVector._to_db(value)
|
||||
|
||||
def python_value(self, value):
|
||||
return HalfVector._from_db(value)
|
||||
|
||||
def _distance(self, op, vector):
|
||||
return Expression(lhs=self, op=op, rhs=self.to_value(vector))
|
||||
|
||||
def l2_distance(self, vector):
|
||||
return self._distance('<->', vector)
|
||||
|
||||
def max_inner_product(self, vector):
|
||||
return self._distance('<#>', vector)
|
||||
|
||||
def cosine_distance(self, vector):
|
||||
return self._distance('<=>', vector)
|
||||
|
||||
def l1_distance(self, vector):
|
||||
return self._distance('<+>', vector)
|
||||
@@ -0,0 +1,34 @@
|
||||
from peewee import Expression, Field
|
||||
from ..utils import SparseVector
|
||||
|
||||
|
||||
class SparseVectorField(Field):
|
||||
field_type = 'sparsevec'
|
||||
|
||||
def __init__(self, dimensions=None, *args, **kwargs):
|
||||
self.dimensions = dimensions
|
||||
super(SparseVectorField, self).__init__(*args, **kwargs)
|
||||
|
||||
def get_modifiers(self):
|
||||
return self.dimensions and [self.dimensions] or None
|
||||
|
||||
def db_value(self, value):
|
||||
return SparseVector._to_db(value)
|
||||
|
||||
def python_value(self, value):
|
||||
return SparseVector._from_db(value)
|
||||
|
||||
def _distance(self, op, vector):
|
||||
return Expression(lhs=self, op=op, rhs=self.to_value(vector))
|
||||
|
||||
def l2_distance(self, vector):
|
||||
return self._distance('<->', vector)
|
||||
|
||||
def max_inner_product(self, vector):
|
||||
return self._distance('<#>', vector)
|
||||
|
||||
def cosine_distance(self, vector):
|
||||
return self._distance('<=>', vector)
|
||||
|
||||
def l1_distance(self, vector):
|
||||
return self._distance('<+>', vector)
|
||||
@@ -0,0 +1,34 @@
|
||||
from peewee import Expression, Field
|
||||
from ..utils import Vector
|
||||
|
||||
|
||||
class VectorField(Field):
|
||||
field_type = 'vector'
|
||||
|
||||
def __init__(self, dimensions=None, *args, **kwargs):
|
||||
self.dimensions = dimensions
|
||||
super(VectorField, self).__init__(*args, **kwargs)
|
||||
|
||||
def get_modifiers(self):
|
||||
return self.dimensions and [self.dimensions] or None
|
||||
|
||||
def db_value(self, value):
|
||||
return Vector._to_db(value)
|
||||
|
||||
def python_value(self, value):
|
||||
return Vector._from_db(value)
|
||||
|
||||
def _distance(self, op, vector):
|
||||
return Expression(lhs=self, op=op, rhs=self.to_value(vector))
|
||||
|
||||
def l2_distance(self, vector):
|
||||
return self._distance('<->', vector)
|
||||
|
||||
def max_inner_product(self, vector):
|
||||
return self._distance('<#>', vector)
|
||||
|
||||
def cosine_distance(self, vector):
|
||||
return self._distance('<=>', vector)
|
||||
|
||||
def l1_distance(self, vector):
|
||||
return self._distance('<+>', vector)
|
||||
Reference in New Issue
Block a user