MemoDokümantasyon
TR

CGO Bayrakları

Memo, mattn/go-sqlite3 sürücüsü aracılığıyla SQLite için CGO gerektirir. Tüm Go derleme, test ve çalıştırma komutlarında CGO etkinleştirilmiş olmalıdır.

Zorunlu CGO

CGO_ENABLED=1 go build .
CGO_ENABLED=1 go test ./...
CGO_ENABLED=1 go run . --port 8090

CGO_ENABLED=1 olmadan SQLite sürücüsü derlenemez ve bağlayıcı hataları alırsınız.

sqlite-vec Eklentisi

Memo, vektör benzerlik araması için sqlite-vec eklentisini kullanır. Bu, derlenmiş bir paylaşımlı kütüphanedir:

  • Linux: vec0.so (Memo binary'sinin yanında)
  • Windows: vec0.dll (Memo binary'sinin yanında)
  • macOS: vec0.dylib (Memo binary'sinin yanında)

Derleme

Eklenti, ana projeden ayrı olarak derlenir. Binary, hedef platform için derlenmelidir:

# Linux
gcc -shared -fPIC -o vec0.so sqlite-vec.c -lm

# Windows (MSYS2/MinGW)
gcc -shared -o vec0.dll sqlite-vec.c -lm

# macOS
clang -shared -fPIC -o vec0.dylib sqlite-vec.c -lm

Yerleştirme

Derlenen eklentiyi Memo çalıştırılabilir dosyasıyla aynı dizine yerleştirin veya yapılandırma ile yolu belirtin:

memory:
  vec_extension_path: "/path/to/vec0.so"

Go Yedek Modu

sqlite-vec eklentisi mevcut değilse, Memo saf Go kaba kuvvet kosinüs benzerlik aramasına düşer. Bu işlevseldir ancak büyük bellek depoları (>1000 girdi) için önemli ölçüde daha yavaştır. Eklenti eksik olduğunda başlangıçta bir uyarı yayınlanır.

macOS Notları

macOS'ta SQLite için ek bağlayıcı bayrakları ayarlamanız gerekebilir:

CGO_ENABLED=1 CGO_LDFLAGS="-L/usr/local/lib" go build .

sqlite-vec dylib dosyası kod imzalı olmalıdır, aksi takdirde Gatekeeper ilk çalıştırmada engelleyebilir.

Windows Notları

Windows'ta PATH'de bir C derleyicisi gereklidir. mingw-w64-x86_64-gcc ile MSYS2 kurun veya TDM-GCC kullanın. Derleyicinin kullanılabilir olduğundan emin olun:

gcc --version

vec0.dll, Memo binary'sinin bulunduğu dizinden erişilebilir olmalıdır.