Cộng đồng Go đang thể hiện sự quan tâm ngày càng tăng đối với các giải pháp thay thế cho CGO trong việc tích hợp thư viện gốc, như được thấy qua các cuộc thảo luận gần đây về thư viện tìm kiếm ngữ nghĩa của kelindar. Sự phát triển này cho thấy xu hướng ngày càng tăng hướng tới các giải pháp đơn giản và hiệu quả hơn cho việc phát triển đa nền tảng trong Go.
Sự chuyển dịch từ CGO sang Purego
Các nhà phát triển đặc biệt nhiệt tình về việc thư viện sử dụng purego thay vì CGO để giao tiếp với các thư viện gốc. Quyết định này đã nhận được phản hồi tích cực từ cộng đồng, với nhiều nhà phát triển chia sẻ câu chuyện thành công của họ khi chuyển từ CGO sang purego trong các dự án của mình.
Những lợi ích chính của Purego:
- Đơn giản hóa việc biên dịch chéo : Các nhà phát triển báo cáo quy trình triển khai dễ dàng hơn mà không gặp các phức tạp thường thấy của CGO
- Tính linh hoạt về nền tảng : Hoạt động mượt mà trên các hệ điều hành khác nhau
- Giảm thiểu chi phí phát triển : Không cần thiết lập biên dịch phức tạp
Các vấn đề về hiệu năng
Cuộc thảo luận của cộng đồng đã tiết lộ những hiểu biết thú vị về hiệu năng trong các triển khai tìm kiếm vector:
- Hiệu quả của phương pháp vét cạn : Đối với bộ dữ liệu dưới 100.000 mục, các nhà phát triển cho biết các phương pháp vét cạn đơn giản với tối ưu hóa SIMD có thể đạt thời gian truy vấn dưới 200ms trên M1 Mac
- Tối ưu hóa theo nền tảng : Người dùng Windows được hưởng lợi từ các khả năng tích hợp sẵn thông qua
syscall.NewLazyDLL
- Tối ưu hóa SIMD : Nhiều nhà phát triển đề cập đến việc sử dụng tối ưu hóa SIMD, một số tham khảo thư viện
viterin/vek
để nâng cao hiệu năng
Các phương pháp thay thế
Cuộc thảo luận đã làm nổi bật một số triển khai và cân nhắc thay thế:
- Giải pháp dựa trên máy chủ : Một số nhà phát triển ưa thích các phương pháp dựa trên máy chủ như Ollama
- Tích hợp thư viện trực tiếp : Những người khác đánh giá cao phương pháp tích hợp llama.cpp trực tiếp
- Tùy chọn theo ngôn ngữ : Người dùng Python có các lựa chọn thay thế như Sentence Transformers, đặc biệt phổ biến trong cộng đồng khoa học dữ liệu
Các cân nhắc phát triển
Mặc dù cộng đồng nhìn chung khen ngợi phương pháp purego, vẫn có những cuộc thảo luận đang diễn ra về quản lý phụ thuộc, với một số nhà phát triển bày tỏ lo ngại về việc sử dụng Git submodules để tích hợp mã nguồn của bên thứ ba.
Xu hướng áp dụng purego thể hiện một sự thay đổi đáng kể trong cách các nhà phát triển Go tiếp cận việc tích hợp thư viện gốc, có khả năng thiết lập một tiêu chuẩn mới cho các dự án tương lai yêu cầu chức năng tương tự.