mcpField
S
surrealdb-vector

surrealdb-vector

github.com/surrealdb数据与数据库28542 次安装4 周前更新
代码仓库

关于 surrealdb-vector

介绍 SurrealDB 向量索引与查询的参考技能,涵盖 HNSW 索引设置、距离函数和数值类型选项,以及带分数和阈值的 K 近邻搜索。

主要功能

  1. 01定义 HNSW 索引
  2. 02配置距离函数与数值类型
  3. 03执行 KNN 向量查询
  4. 04按阈值筛选带分数结果

适用场景

  1. 01在 SurrealDB 中设置向量索引
  2. 02按向量相似度搜索记录
  3. 03筛选并排序带分数的匹配项

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/surrealdb/agent-skills --skill surrealdb-vector

安装后在 Claude Code 中输入/surrealdb-vector确认已加载。

详细介绍

SurrealDB 向量搜索

HNSW 索引

创建一个基础 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数值类型:F64、F32、I64、I32、I16
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;

评论

支持 Markdown