{"data":{"slug":"kelindar-search","name":"search","tagline":"Go library for embedded vector search and semantic embeddings with llamacpp","github_url":"https://github.com/kelindar/search","owner":"kelindar","repo":"search","owner_avatar_url":"https://avatars.githubusercontent.com/u/583116?v=4","primary_language":"Go","stars":558,"forks":24,"topics":["ai","bert","embeddings","gguf","gpu","llamacpp","search-engine","semantic-search","simd","vector-search"],"archived":false,"github_pushed_at":"2026-03-06T18:57:20+00:00","maintenance_label":"Slowing","stars_delta_30d":3,"url":"https://www.graphcanon.com/tools/kelindar-search","markdown_url":"https://www.graphcanon.com/tools/kelindar-search.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/kelindar-search","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=kelindar-search","description":"Go library for embedded vector search and semantic embeddings using llama.cpp","homepage_url":null,"license":"MIT","open_issues":5,"watchers":3,"ai_summary":"Provides tools in Go for embedding vector search and creating semantic embeddings using the llama.cpp framework.","readme_excerpt":"<p align=\"center\">\n<img width=\"300\" height=\"100\" src=\".github/logo.png\" border=\"0\" alt=\"kelindar/search\">\n<br>\n<img src=\"https://img.shields.io/github/go-mod/go-version/kelindar/search\" alt=\"Go Version\">\n<a href=\"https://pkg.go.dev/github.com/kelindar/search\"><img src=\"https://pkg.go.dev/badge/github.com/kelindar/search\" alt=\"PkgGoDev\"></a>\n<a href=\"https://goreportcard.com/report/github.com/kelindar/search\"><img src=\"https://goreportcard.com/badge/github.com/kelindar/search\" alt=\"Go Report Card\"></a>\n<a href=\"https://opensource.org/licenses/MIT\"><img src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"License\"></a>\n<a href=\"https://coveralls.io/github/kelindar/search\"><img src=\"https://coveralls.io/repos/github/kelindar/search/badge.svg\" alt=\"Coverage\"></a>\n</p>\n\n# Semantic Search\n\nThis library was created to provide an **easy and efficient solution for embedding and vector search**, making it perfect for small to medium-scale projects that still need some **serious semantic power**. It’s built around a simple idea: if your dataset is small enough, you can achieve accurate results with brute-force techniques, and with some smart optimizations like **SIMD**, you can keep things fast and lean.\n\nThe library’s strength lies in its simplicity and support for **GGUF BERT models**, letting you leverage sophisticated embeddings without getting bogged down by the complexities of traditional search systems. It offers **GPU acceleration**, enabling quick computations on supported hardware. If your dataset has fewer than 100,000 entries, this library is a great fit for integrating semantic search into your Go applications with minimal hassle.\n\n\n\n## 🚀 Key Features\n\n- **llama.cpp without cgo**: The library is built to work with [llama.cpp](https://github.com/ggerganov/llama.cpp) without using cgo. Instead, it relies on [purego](https://github.com/ebitengine/purego) , which allows calling shared C libraries directly from Go code without the need for cgo. This design significantly simplifies the integration, deployment, and cross-compilation, making it easier to build Go applications that interface with native libraries.\n- **Support for BERT Models**: The library supports BERT models via [llama.cpp](https://github.com/ggerganov/llama.cpp/pull/5423). Vast variations of BERT models can be used, as long as they are using GGUF format.\n- **Precompiled Binaries with Vulkan GPU Support**: Available for Windows and Linux in the [dist](dist) directory, compiled with Vulkan for GPU acceleration. However, you can compile the library yourself with or without GPU support.\n- **Search Index for Embeddings**: The library supports the creation of a search index from computed embeddings, which can be saved to disk and loaded later. This feature is suitable for basic vector-based searches in small-scale applications, but it may face efficiency challenges with large datasets due to the use of brute-force techniques.\n\n## 🤔 Limitations\n\nWhile simple vector search excels in small-scale applications,avoid using this library if you have the following requirements.\n\n- **Large Datasets**: The current implementation is designed for small-scale applications, and datasets exceeding 100,000 entries may suffer from performance bottlenecks due to the brute-force search approach. For larger datasets, approximate nearest neighbor (ANN) algorithms and specialized data structures should be considered for efficiency.\n- **Complex Query Requirements**: The library focuses on simple vector similarity search and does not support advanced query capabilities like multi-field filtering, fuzzy matching, or SQL-like operations that are common in more sophisticated search engines.\n- **High-Dimensional Complex Embeddings**: Large language models (LLMs) generate embeddings that are both high-dimensional and computationally intensive. Handling these embeddings in real-time can be taxing on the system unless sufficient GPU resources are available and optimized for low-latency infer","github_created_at":"2024-09-29T17:05:04+00:00","created_at":"2026-07-11T11:35:08.715191+00:00","updated_at":"2026-08-23T06:02:21.304154+00:00","categories":[{"slug":"data-retrieval","name":"Data & Retrieval","url":"https://www.graphcanon.com/categories/data-retrieval","markdown_url":"https://www.graphcanon.com/categories/data-retrieval.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/data-retrieval"},{"slug":"vector-databases","name":"Vector Databases","url":"https://www.graphcanon.com/categories/vector-databases","markdown_url":"https://www.graphcanon.com/categories/vector-databases.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/vector-databases"}],"tags":[{"slug":"ai","name":"ai"},{"slug":"bert","name":"bert"},{"slug":"embeddings","name":"embeddings"},{"slug":"gguf","name":"gguf"},{"slug":"gpu","name":"gpu"},{"slug":"llamacpp","name":"llamacpp"},{"slug":"search-engine","name":"search-engine"},{"slug":"semantic-search","name":"semantic-search"}],"trust":{"provenance":{"is_fork":false,"github_id":864976834,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-08-23T06:02:20.572Z","maintenance":{"label":"Slowing","score":36,"methodology":"github_public_v1","releases_90d":0,"days_since_push":169,"last_release_at":"2026-03-06T18:57:20Z","stars_delta_30d":3,"open_issues_delta_30d":0},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-11T11:35:10.020Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-08-23T06:02:21.032Z"},"languages":{"value":["go"],"source":"github.language","observed_at":"2026-08-23T06:02:21.032Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-08-23T06:02:21.032Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":null,"constraints":null,"when_to_use":["Use for projects needing a lightweight, fast integration of semantic search capabilities within applications written in Go","Consider if your project benefits from the direct use of llamacpp for creating embeddings, emphasizing efficiency in embedding generation"],"when_not_to_use":["Avoid if relying on out-of-the-box support beyond Go or requiring heavy customization that is not supported directly by llama.cpp's capabilities","Not suitable when a more comprehensive database service with extensive querying and integration features is desired over an embedded solution"],"source":"enrich:decision_facts","observed_at":"2026-07-17T08:18:51.378Z"},"constraint_facets":null,"decision_summary":[{"label":"Adopt for","value":"search is a Go library enabling embedded vector search and semantic embeddings via the llama.cpp framework."}]}}