# VSEARCH 與 VSIM

本頁說明 ToriiDB 如何以 `VSEARCH` 依餘弦相似度排序鍵，以及以 `VSIM`、`VGET` 比較或讀取已存向量。

## 語意搜尋

```text
VSEARCH embedded database
VSEARCH embedded database MATCH article:* LIMIT 5
VSEARCH embedded database LIMIT 5 MATCH article:*
```

| 參數 | REPL / `store` | Daemon `vsearch` |
|---|---|---|
| text | 必填，非空白 | 必填，非空白 |
| pattern | 選用 `MATCH`；空值匹配全部 | 必填 |
| limit | `<= 0` → `10` | `<= 0` → `100` |

查詢向量來自快取或同步 embedding 呼叫；新的查詢 embedding 也會被快取。接著在讀鎖下，略過內部鍵、已過期、無向量、向量長度不同、不符 `path.Match` 或範數為零的項目。以 min-heap 保留前 `k` 名，依相似度由高到低回傳鍵。

## 相似度與取得向量

```text
VSIM article:1 article:2
VGET article:1
```

| 呼叫 | 結果 |
|---|---|
| `VSim(key1, key2)` | 餘弦相似度；鍵不存在、無向量或零向量為 `vector is missing`（REPL 顯示 `(nil)`）；長度不同為 `vector is mismatch: a vs b` |
| `VGet(key)` | 儲存向量的複本，或 `false`；REPL 印出 JSON array 或 `(nil)` |

Daemon 不提供 `VSIM` 與 `VGET`。

## 相關頁面

- [附加向量](/zh/vector-search)
- [Server 端篩選](/zh/socket-daemon-filtering)
- [掃描與向量](/zh/cli-reference-scan)
