SuperAPI AI 工具集

surrealdb-vector

通用与其它

查看项目

更新于 10-15 19:48

技能介绍

用途:在 SurrealDB 中实现向量搜索,通过 HNSW 索引和 KNN 查询做相似度检索,可用于向量索引创建与向量距离查询等场景。

主要能力:

  • 定义 HNSW 向量索引:DEFINE INDEX hnsw_idx ON pts FIELDS point HNSW DIMENSION 4;
  • 指定距离函数与数值类型:DEFINE INDEX hnsw_idx ON pts FIELDS point HNSW DIMENSION 4 DIST EUCLIDEAN TYPE F64;支持的类型有 F64、F32、I64、I32、I16。
  • 完整表定义示例(含字段与索引参数): DEFINE TABLE OVERWRITE document SCHEMALESS; DEFINE FIELD OVERWRITE embedding ON document TYPE array<float>; DEFINE INDEX OVERWRITE hnsw_idx_document ON document FIELDS embedding HNSW DIMENSION 384 DIST COSINE TYPE F32 EFC 150 M 12 M0 24;
  • HNSW 参数:DIMENSION(向量维度,须与嵌入一致)、DIST(距离函数,如 COSINE、EUCLIDEAN)、TYPE(数值类型)、EFC(构建搜索力度,越高索引越好)、M(每节点最大连接数)、M0(第 0 层最大连接数)。
  • 使用 <|K, EF|> 运算符做 KNN 搜索,K 为结果数,EF 为搜索力度(越高越准越慢)。推荐力度:40 为默认、精度较好;17 较快但可能漏结果。
  • 基础 KNN 查询:SELECT *, vector::distance::knn() AS dist FROM document WHERE embedding <|10, 40|> $vector;vector::distance::knn() 使用索引定义的距离函数。
  • 带阈值的评分结果: SELECT *, score FROM ( SELECT *, (1 - vector::distance::knn()) AS score FROM document WHERE embedding <|20, 40|> $vector ) WHERE score >= $threshold ORDER BY score DESC;

使用方式:按上述语句在 SurrealDB 中先定义索引,再用 KNN 运算符查询并可选计算评分、过滤阈值与排序。

适用场景:向量索引创建、向量 KNN 距离查询与相似度评分检索。

限制:资料未提供更多限制、版本要求或性能说明,暂未提供。