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