L1Distance
L1 (1-норма — таксомоторная геометрия).
Синтаксис
distanceL1
Аргументы
Возвращаемое значение
Возвращает расстояние по 1-норме. Для входных данных типа Array возвращает Float32, если наименьший общий супертип типов элементов — Float32 или BFloat16, в противном случае — Float64. Для входных данных типа Tuple возвращаемый тип соответствует арифметическому типу результата поэлементных операций (целочисленные типы сохраняются). (U)Int* или Float*
Примеры
Базовое использование
Query
Response
L1Norm
normL1
Аргументы
Возвращаемое значение
Возвращает L1-норму или расстояние в таксомоторной геометрии. UInt* или Float* или Decimal
Примеры
Базовое использование
Query
Response
L1Normalize
L1 (таксомоторная геометрия).
Синтаксис
normalizeL1
Аргументы
tuple— Кортеж из числовых значений.Tuple(T)
Tuple(Float64)
Примеры
Базовое использование
Query
Response
L2Distance
distanceL2
Аргументы
Возвращаемое значение
Возвращает расстояние по 2-норме. Для входных данных типа Array возвращает Float32, если наименьший общий супертип типов элементов — Float32 или BFloat16, в противном случае — Float64. Для входных данных типа Tuple всегда возвращает Float64. Float*
Примеры
Базовое использование
Query
Response
L2DistanceTransposed
distanceL2Transposed
Аргументы
vectors— Векторы.QBit(T, UInt64[, UInt64])reference— Опорный вектор.Array(T)p— Количество битов из каждого элемента вектора, используемых при вычислении расстояния (от 1 до битовой ширины элемента). Уровень квантования определяет компромисс между точностью и скоростью. Использование меньшего количества битов ускоряет операции ввода-вывода и вычисления, но снижает точность, тогда как большее количество битов повышает точность ценой производительности.UIntused_dims— Необязательно. Количество первых размерностей, которые нужно считывать, для поиска с уменьшенной размерностью вQBitсо stride. Должно быть кратно stride в QBit и не превышать его размерность, а опорный вектор должен содержать как минимум столько элементов (любые дополнительные конечные элементы игнорируются). Считываются только те группы stride, которые покрывают эти размерности.UInt
Float64. Float64
Примеры
Базовое использование
Query
Response
L2DistanceTransposedQuantized
QBit(Int8) из кодов quantizeBFloat16ToInt8 (деквантованных на лету) и опорным вектором. Опорный вектор (запрос) типа Float сравнивается напрямую с точностью Float32 — точностью восстановления деквантованных кодов, поэтому запрос Float64 сужается до Float32, а запрос BFloat16 точно расширяется до него (асимметричное вычисление расстояния); опорный вектор Array(Int8) сам рассматривается как коды quantizeBFloat16ToInt8 и деквантуется до своих уровней восстановления. Обратите внимание, что p усекает только сохранённые коды QBit; опорный Array(Int8) сам является полным запросом и всегда восстанавливается с полной 8-битной точностью, поэтому это симметричное расстояние между квантованными векторами только при p = 8 (при p < 8 только сохранённая сторона считывается с более грубой точностью). Он должен находиться в том же пространстве, в котором значения были до квантования (то есть после того же случайного поворота и масштабирования), и ответственность за это лежит на вызывающей стороне. Косинусное расстояние инвариантно к масштабу; скалярное произведение и расстояние L2 — нет.
Синтаксис
vectors— Векторы кодовquantizeBFloat16ToInt8.QBit(Int8, UInt64[, UInt64])reference— Опорный вектор (запрос): массивFloat(запрос сравнивается с точностьюFloat32— запросFloat64приводится кFloat32) илиArray(Int8)из кодовquantizeBFloat16ToInt8, деквантованных на лету.Array(Float32)илиArray(Int8)p— Количество старших битов каждого сохранённого кодаQBit, которые следует использовать (от 1 до 8). Меньшее количество битов восстанавливает более грубый встроенный квантизатор, обеспечивая более быстрый ввод-вывод ценой снижения точности; 8 бит — это восстановление с полной точностью.pусекает только сохранённыйQBit; опорныйArray(Int8)всегда восстанавливается с полной 8-битной точностью.UIntused_dims— Необязательно. Количество первых размерностей, которые нужно считывать, для поиска с уменьшенной размерностью (Matryoshka) вQBitсо stride. Должно быть кратно stride в QBit и не превышать его размерность, а опорный вектор должен содержать как минимум столько элементов (любые дополнительные конечные элементы игнорируются). Считываются только те группы stride, которые покрывают эти размерности.UInt
Float64. Float64
Примеры
Базовое использование
Query
L2Norm
normL2
Аргументы
Возвращаемое значение
Возвращает норму L2 или евклидово расстояние. UInt* или Float*
Примеры
Базовое использование
Query
Response
L2Normalize
normalizeL2
Аргументы
tuple— Кортеж числовых значений.Tuple(T)
Tuple(Float64)
Примеры
Базовое использование
Query
Response
L2SquaredDistance
distanceL2Squared
Аргументы
Возвращаемое значение
Возвращает сумму квадратов разностей соответствующих элементов двух векторов. Для входных значений Array возвращает Float32, если наименьший общий супертип типов элементов — Float32 или BFloat16, в противном случае — Float64. Для входных значений Tuple возвращаемый тип соответствует арифметическому типу результата поэлементных операций (целочисленные типы сохраняются). (U)Int* или Float*
Примеры
Базовое использование
Query
Response
L2SquaredNorm
L2Norm, то есть сумму квадратов элементов вектора.
Синтаксис
normL2Squared
Аргументы
Возвращаемое значение
Возвращает квадрат нормы L2. UInt* или Float* или Decimal
Примеры
Базовое использование
Query
Response
LinfDistance
L_{inf} (максимальная норма).
Синтаксис
distanceLinf
Аргументы
Возвращаемое значение
Возвращает расстояние в норме бесконечности. Для входных значений типа Array возвращает Float32, если наименьший общий супертип типов элементов — Float32 или BFloat16, в противном случае — Float64. Для входных значений типа Tuple всегда возвращает Float64. Float*
Примеры
Базовое использование
Query
Response
LinfNorm
normLinf
Аргументы
Возвращаемое значение
Возвращает норму Linf, то есть максимальное по модулю значение. Float64
Примеры
Базовое использование
Query
Response
LinfNormalize
L_{inf} (с использованием максимальной нормы).
Синтаксис
normalizeLinf
Аргументы
tuple— Кортеж из числовых значений.Tuple(T)
Tuple(Float64)
Примеры
Базовое использование
Query
Response
LpDistance
Lp (расстояние p-нормы).
Синтаксис
distanceLp
Аргументы
vector1— Первый вектор.Tuple(T)илиArray(T)vector2— Второй вектор.Tuple(T)илиArray(T)p— Степень. Возможные значения: действительное число в диапазоне[1; inf).UInt*илиFloat*
Array возвращает Float32, если наименьший общий супертип типов элементов — Float32 или BFloat16, в противном случае — Float64. Для аргументов типа Tuple всегда возвращает Float64. Float*
Примеры
Базовое использование
Query
Response
LpNorm
- При p=1 эквивалентна L1Norm (манхэттенское расстояние).
- При p=2 эквивалентна L2Norm (евклидово расстояние).
- При p=∞ эквивалентна LinfNorm (максимальная норма).
normLp
Аргументы
vector— Вектор или кортеж числовых значений.Tuple(T)илиArray(T)p— Степень. Возможные значения — действительные числа в диапазоне[1; inf).UInt*илиFloat*
Float64
Примеры
Базовое использование
Query
Response
LpNormalize
Lp (с использованием p-нормы).
Синтаксис
normalizeLp
Аргументы
tuple— Кортеж из числовых значений.Tuple(T)p— Степень. Возможные значения — любое число в диапазоне[1; inf).UInt*илиFloat*
Tuple(Float64)
Примеры
Пример использования
Query
Response
cosineDistance
distanceCosine
Аргументы
Возвращаемое значение
Возвращает косинусное расстояние (единица минус косинусное сходство). Для входных значений Array возвращается Float32, если наименьший общий супертип типов элементов — Float32 или BFloat16, иначе — Float64. Для входных значений Tuple всегда возвращается Float64. Float*
Примеры
Базовое использование
Query
Response
cosineDistanceTransposed
distanceCosineTransposed
Аргументы
vectors— Векторы.QBit(T, UInt64[, UInt64])reference— Опорный вектор.Array(T)p— Количество битов из каждого элемента вектора, используемых при вычислении расстояния (от 1 до разрядности элемента в битах). Уровень квантования определяет компромисс между точностью и скоростью. Использование меньшего количества битов ускоряет операции ввода-вывода и вычисления, но снижает точность, тогда как большее количество битов повышает точность ценой производительности.UIntused_dims— Необязательно. Количество начальных размерностей для чтения при поиске с уменьшенной размерностью (Matryoshka) поQBitсо stride. Должно быть кратно strideQBitи не превышать его размерность, а опорный вектор должен содержать как минимум столько элементов (любые дополнительные конечные элементы игнорируются). Считываются только группы stride, покрывающие эти размерности.UInt
Float64. Float64
Примеры
Базовое использование
Query
Response
cosineDistanceTransposedQuantized
QBit(Int8) функции quantizeBFloat16ToInt8 (деквантуемыми на лету) и опорным вектором. Чем меньше возвращаемое значение, тем больше сходство между векторами. Опорный вектор Float (вектор запроса) сравнивается напрямую с точностью Float32 — то есть с точностью восстановления деквантованных кодов, поэтому Float64-запрос приводится к Float32, а BFloat16-запрос точно расширяется до него (асимметричное вычисление расстояния); опорный Array(Int8) сам рассматривается как коды quantizeBFloat16ToInt8 и деквантуется до своих уровней восстановления. Обратите внимание: p усекает только сохранённые коды QBit; опорный Array(Int8) сам по себе является полным запросом и всегда восстанавливается с полной 8-битной точностью, поэтому симметричное расстояние между квантованными векторами здесь получается только при p = 8 (при p < 8 только сохранённая сторона читается с более грубой точностью). Он должен находиться в том же пространстве, в котором значения находились до квантования (то есть после того же случайного поворота и масштабирования); это ответственность вызывающей стороны. Косинусное расстояние инвариантно к масштабу; скалярное произведение и L2-расстояние — нет.
Синтаксис
vectors— Векторы кодовquantizeBFloat16ToInt8.QBit(Int8, UInt64[, UInt64])reference— Опорный вектор (запрос): массивFloat(запрос сравнивается с точностьюFloat32— запросFloat64приводится кFloat32) илиArray(Int8)с кодамиquantizeBFloat16ToInt8, деквантуемыми на лету.Array(Float32)илиArray(Int8)p— Число старших битов каждого хранимого кодаQBit, которое нужно использовать (от 1 до 8). Чем меньше битов, тем грубее восстанавливаемый квантизатор, но тем быстрее I/O и ниже точность; 8 бит — это восстановление с полной точностью.pусекает только хранимыйQBit; опорный векторArray(Int8)всегда восстанавливается с полной 8-битной точностью.UIntused_dims— Необязательно. Количество начальных размерностей, которые нужно считывать для поиска с уменьшенной размерностью (Matryoshka) по QBit со stride. Должно быть кратно strideQBitи не превышать его размерность, а опорный вектор должен содержать как минимум столько элементов (любые дополнительные конечные элементы игнорируются). Считываются только группы stride, покрывающие эти размерности.UInt
Float64. Float64
Примеры
Базовое использование
Query
dotProductTransposed
scalarProductTransposed
Аргументы
vectors— Векторы.QBit(T, UInt64[, UInt64])reference— Опорный вектор.Array(T)p— Количество битов из каждого элемента вектора, используемых при вычислении (от 1 до разрядности элемента в битах). Уровень квантования определяет компромисс между точностью и скоростью. Использование меньшего количества битов ускоряет операции ввода-вывода и вычисления, но снижает точность, тогда как большее количество битов повышает точность ценой производительности.UIntused_dims— Необязательно. Количество начальных размерностей, которые нужно считывать, для поиска с уменьшенной размерностью (Matryoshka) поQBitсо stride. Должно быть кратно stride в QBit и не превышать его размерность, а опорный вектор должен содержать как минимум столько элементов (любые дополнительные элементы в конце игнорируются). Считываются только группы stride, покрывающие эти размерности.UInt
Float64. Float64
Примеры
Базовое использование
Query
Response
dotProductTransposedQuantized
QBit(Int8), содержащим коды quantizeBFloat16ToInt8 (деквантуемые на лету), и опорным вектором. Это мера сходства: чем больше возвращаемое значение, тем более похожи векторы. Опорный вектор (запрос) типа Float сравнивается напрямую с точностью Float32 — точностью восстановления деквантованных кодов, поэтому запрос Float64 сужается до Float32, а запрос BFloat16 точно расширяется до этого типа (асимметричное вычисление расстояния); опорный вектор Array(Int8) сам рассматривается как коды quantizeBFloat16ToInt8 и деквантуется до уровней их восстановления. Обратите внимание, что p усекает только сохранённые коды QBit; опорный вектор Array(Int8) сам по себе является полным запросом и всегда восстанавливается с полной 8-битной точностью, поэтому симметричное расстояние между квантованными представлениями получается только при p = 8 (при p < 8 только сохранённая сторона считывается с более грубой точностью). Он должен находиться в том же пространстве, в котором значения были до квантования (то есть после того же случайного поворота и масштабирования), и это ответственность вызывающей стороны. Косинусное расстояние инвариантно к масштабу; скалярное произведение и расстояние L2 — нет.
Синтаксис
vectors— Векторы кодовquantizeBFloat16ToInt8.QBit(Int8, UInt64[, UInt64])reference— Опорный вектор (запрос): массивFloat(запрос сравнивается с точностьюFloat32— запрос типаFloat64приводится кFloat32) илиArray(Int8)из кодовquantizeBFloat16ToInt8, деквантуемых на лету.Array(Float32)илиArray(Int8)p— Количество старших битов каждого сохранённого кодаQBit, используемых при вычислении (от 1 до 8). Меньшее количество битов даёт более грубое восстановление встроенного квантизатора, что ускоряет ввод-вывод ценой снижения точности; 8 бит — это восстановление с полной точностью.pусекает только сохранённыйQBit; опорныйArray(Int8)всегда восстанавливается с полной 8-битной точностью.UIntused_dims— Необязательно. Количество начальных размерностей, которые нужно считывать, для поиска с уменьшенной размерностью (Matryoshka) поQBitсо stride. Должно быть кратно stride в QBit и не превышать его размерность, а опорный вектор должен содержать как минимум столько элементов (все дополнительные элементы в конце игнорируются). Считываются только группы stride, покрывающие эти размерности.UInt
Float64. Float64
Примеры
Базовое использование
Query