mcpField
S
surrealdb-vector

surrealdb-vector

github.com/surrealdbデータ・データベース28542 回インストール4 週間前に更新
リポジトリ

surrealdb-vector について

SurrealDB のベクトルインデックスとクエリを扱うリファレンススキルです。HNSW インデックスの設定、距離関数や数値型の選択、スコアとしきい値を使った K 近傍検索を説明します。

主な機能

  1. 01HNSW インデックス定義
  2. 02距離関数と数値型の選択
  3. 03KNN ベクトルクエリ
  4. 04しきい値付きスコア結果

活用シーン

  1. 01SurrealDB でのベクトルインデックス設定
  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;

コメント