# 設定

本頁說明 ToriiDB 從哪裡讀取設定：資料目錄參數與環境變數。

## 設定來源

| 來源 | 設定方式 | 是否必填 |
|---|---|---|
| 資料目錄 | `store.New` 或 `daemon.New` 的 `dir` 參數 | 是 |
| OpenAI API key | `apiKey` 參數、`OPENAI_API_KEY` 或作業系統 keychain | 僅向量操作需要 |
| Embedding 維度 | `TORIIDB_EMBED_DIM` | 否 |

沒有設定檔。Go 程式不載入 `.env`；repo 的 Makefile 為自己的 target 執行 `include .env` + `export`。

## 資料目錄

```go
torii, err := store.New("/var/lib/myapp/toriidb")
d, err := daemon.New("/var/lib/myapp/toriidb")
```

- 空路徑回傳錯誤；目錄不存在時會自動建立。
- `db_0` 到 `db_15` 子目錄與其檔案在第一次寫入時才建立。
- `daemon.New` 會把目錄解析為絕對且無 symlink 的路徑，socket 只由該路徑決定。`./data`、`/abs/data/` 與指向它的 symlink 共用同一個 daemon。

Process 需要能建立檔案、`fsync`、rename，以及對目錄 `fsync`。

## 環境變數

| 變數 | 預設 | 效果 |
|---|---|---|
| `OPENAI_API_KEY` | 無 | 啟用 embedding（查找順序見上） |
| `TORIIDB_EMBED_DIM` | `256` | 請求的 embedding 維度；`<= 0` 時退回 `256` |

Embedding 維度是快取鍵的一部分，且必須與回傳向量長度相符。在既有資料上更改維度，舊向量長度不同，搜尋會略過它們。

## 相關頁面

- [API Key](/zh/configuration-api-key)
- [固定限制](/zh/configuration-limits)
- [模式判定](/zh/socket-daemon)
