mcpField
S
surrealdb-vector

surrealdb-vector

github.com/surrealdbData & databases28542 installsUpdated 4w ago
Repository

About surrealdb-vector

A reference skill for using SurrealDB vector indexes and queries. It covers HNSW index setup, distance and numeric type options, and K-nearest-neighbor searches with scored results and thresholds.

Key features

  1. 01HNSW index definitions
  2. 02Distance and numeric type options
  3. 03KNN vector queries
  4. 04Scored results with thresholds

Use cases

  1. 01Setting up vector indexes in SurrealDB
  2. 02Searching records by vector similarity
  3. 03Filtering and ordering scored matches

Install

Copy the command and run it in a terminal.

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

After installing, type/surrealdb-vectorin Claude Code to confirm it loaded.

Details

From the project README

SurrealDB Vector Search

HNSW Index

Create a basic HNSW index:

DEFINE INDEX hnsw_idx ON pts FIELDS point HNSW DIMENSION 4;

With specific distance function and type:

DEFINE INDEX hnsw_idx ON pts FIELDS point HNSW DIMENSION 4 DIST EUCLIDEAN TYPE F64;

Available types: F64, F32, I64, I32, I16.

Full Table Example
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 Parameters
ParameterDescription
DIMENSIONVector dimensionality (must match your embeddings)
DISTDistance function: COSINE, EUCLIDEAN, etc.
TYPENumeric type: F64, F32, I64, I32, I16
EFCConstruction search effort (higher = better index)
MMax connections per node
M0Max connections at layer 0

Querying Vectors

The <|K, EF|> operator performs KNN search. K is the number of results, EF is the search effort (higher = more accurate, slower).

Recommended effort values:

  • 40 — default, good accuracy
  • 17 — fast but may miss some results
Basic KNN Query
SELECT
    *,
    vector::distance::knn() AS dist
FROM document
WHERE embedding <|10, 40|> $vector;

vector::distance::knn() uses the distance function defined by the index.

Scored Results with Threshold
SELECT *, score
FROM (
    SELECT *, (1 - vector::distance::knn()) AS score
    FROM document
    WHERE embedding <|20, 40|> $vector
)
WHERE score >= $threshold
ORDER BY score DESC;

Comments

Markdown supported