关于 surrealdb-vector
介绍 SurrealDB 向量索引与查询的参考技能,涵盖 HNSW 索引设置、距离函数和数值类型选项,以及带分数和阈值的 K 近邻搜索。
主要功能
- 01定义 HNSW 索引
- 02配置距离函数与数值类型
- 03执行 KNN 向量查询
- 04按阈值筛选带分数结果
适用场景
- 01在 SurrealDB 中设置向量索引
- 02按向量相似度搜索记录
- 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