迄今为止,我看到的大多数使用向量vector的示例,将它只作为 SQL 中的一种功能,尤其是围绕 VECTOR_Search 的 3 个函数。
* TO_VECTOR()
* vector_dot_product ()
* vector_cosine ()
在 iris-vector-search 演示包中隐藏着一个非常有用的摘要。
从那里,你可以通过多个链接找到所需的一切。
我还缺少更多的 VECTOR 方法,于是在 Idea Portal 上提出了相关请求。
接着,我想起每个 SQL 方法或存储过程都有一堆 ObjectScript 代码。
于是我开始搜索,下面就是我的研究的一些总结:
%Library.Vector 是对新数据类型的核心描述
这是一种复杂的结构,就像对象或 %DynamicObjects 或 $Bit Expressions 一样,需要特定的方式去访问。
我们还可以看到 2 个必备参数:
* DATATTYPE - 一旦设置就不能更改。 可接受的类型: "整数integer"(或 "int")、"双精度浮点double"、"十进制decimal"、"字符串 "和 "时间戳"。
* LEN >0 时,可以增长,但绝对不能缩小
$vector() / $ve() 是矢量访问的基本方法
* 设置矢量数据 >>> SET $VE(. . .) = val
* 返回矢量数据 >>> WRITE $VE(. . ) , SET var=$VE(. . )
提示:单个位置返回值,但从::到位置返回另一个矢量!
* 删除矢量数据 >> KILL $VE(. . .)
所有 3 个参数都需要至少 1 个位置参数。你可以把它理解为维度。
$isvector()显然是在开始操作前检查格式是否正确。
$vectorop() / $vop() 包括与向量有关的所有其他函数
调用参数通常为(operation、vector)
某些operation提供可选的 bitxpr。它标记了要排除/包含的位置/维数。
例如:
- 你只想对 x 轴和 y 轴进行操作,而不想对 z 轴进行操作。
单向量操作符
Aggregate Operations 汇总操作
* "count"
* "max"
* "min"
* "sum"
Filter Operations 过滤器操作
* "defined"
* "undefined"
* "<"
* "<="
* ">"
* ">="
* "="
* "!="
* "between"
Numeric Operations 数字相关操作
* "+"
* "-"
* "/"
* "*"
* "**"
* "#"
* "e-"
* "e/"
* "ceiling"
* "floor"
String Operations 字符串相关操作
* "_"
* "e_"
* "lower"
* "upper"
* "substring"
* "trim"
* "triml"
* "trimr"
Grouping Operations 组相关操作
* "group"
* "countgb"
Miscellaneous Operations 杂项操作
* "convert"
* "length"
* "mask"
* "positions"
* "set"
Informative Operations 信息化业务
* "bytesize"
* "type"
多向量操作符(通常为两个操作)
Vector-wise Filter Operations
* "v<"
* "v<="
* "v>"
* "v>="
* "v="
* "v!="
Vector-wise Arithmetic Operations
* "v+"
* "v-"
* "v/"
* "v*"
* "v**"
* "v#"
Vector Concatenation
* "v_"
Vector Grouping
* "countg"
* "maxg"
* "ming"
* "sumg"
Vector Merge
* "vset"
你看,现在已经有了一套丰富的工具。
如果你详细研究文档,结果的目的或优势可能不会立即显现出来。
不过,我希望你能对目前可用的工具有一个大致的了解。