v0.7.0

向量搜尋

最後更新

本頁說明 ToriiDB 向量操作的前置條件,以及 SetVector 如何在背景為 entry 附加 OpenAI embedding。

前置條件

store.New 找到 API key 時會建立 embedder(見 設定)。沒有 embedder 時一般儲存照常運作,向量寫入與搜尋回傳 ErrNoEmbedder。

設定 值
模型 text-embedding-3-small
維度 TORIIDB_EMBED_DIM,預設 256
Endpoint https://api.openai.com/v1/embeddings
回應檢查 向量長度必須等於維度

附加向量

SET article:1 Redis-style embedded storage VECTOR
err := torii.SetVector(ctx, "article:1", "embedded JSON database", store.SetDefault, nil)
err = d.SetVector(ctx, 0, "article:1", "embedded JSON database", nil)

SetVector 拒絕空白文字,先執行一般 Set(值立即可讀,舊向量被清除),再啟動由 store wait group 追蹤的背景工作:

  1. 在讀鎖下查詢 embedding 快取。
  2. 未命中時在不持鎖的情況下呼叫 OpenAI(35 秒 timeout),並把結果存入快取。
  3. 在寫鎖下,只有鍵仍存在且值仍等於被 embedding 的文字時才附加向量。
  4. 附加一筆帶編碼向量的 SET 紀錄。

Embedding 失敗會被靜默丟棄;文字仍保存但沒有向量。Store.Close() 會等待尚未完成的工作。

一致性說明

相關頁面

EN