kelindar/search
Go library for embedded vector search and semantic embeddings using llama.cpp
解決的問題
此專案提供一個輕量級、精確的餘弦相似度索引,用於管理與搜尋中小型向量資料集。它透過提供原生的 Go 實作來進行索引與搜尋,消除了對大型外部資料庫的需求,並整合了從本地與雲端供應商產生嵌入的功能。
運作方式
該函式庫包含一個核心搜尋索引,透過對所有向量進行線性掃描,根據餘弦相似度找出最相關的結果。為了將資料匯入索引,它提供了兩個選用的嵌入模組:
- 本地嵌入 (Local Embeddings):使用
llama.cpp透過purego在 CPU 或 GPU 上本地產生 GGUF 模型的嵌入。 - 雲端嵌入 (Cloud Embeddings):連接至 OpenAI 相容的 API (包含 OpenRouter) 來產生文字嵌入。
使用者也可以從任何自訂來源提供自己的向量,因為核心索引邏輯與嵌入供應商是解耦的。
適用對象
需要實作向量搜尋功能但不想承擔大型向量資料庫開銷的 Go 開發者,特別是針對適合線性掃描的中小型資料集。
特色亮點
- 核心零依賴:主要的搜尋套件沒有原生函式庫需求,也不依賴嵌入模組。
- 靈活的嵌入選項:支援本地 GGUF 模型與雲端 API。
- 持久化:包含內建方法,可將索引讀寫至檔案。
- 本地 GPU 支援:本地嵌入可編譯並啟用 GPU 加速 (例如 Vulkan)。
- 供應商無關:透過簡單的介面,可輕鬆更換嵌入供應商。
相關
- 專案
- 專案
- 專案
- 專案