一体化 Python AI 框架,覆盖语义搜索、RAG、LLM 编排与语言模型工作流。
kelindar/search
Go 语言向量搜索库,提供精确余弦相似度检索,并可选接入基于 llama.cpp 的本地 GGUF 嵌入或 OpenAI 兼容的云端嵌入。
- Star
- 561
- Fork
- 24
- 未关闭 Issue
- 5
- 最近提交
- 2个月前
这是什么?
kelindar/search 是一个 Go 库,用于把向量存入内存索引,并按余弦相似度查找最相近的条目。核心包没有原生依赖,独立完成索引、检索和持久化,适合中小规模、可接受精确全量扫描的数据集。
嵌入服务拆分为独立模块。llama 包通过 purego 调用 llama.cpp,可在本地运行 MiniLM 等 GGUF 模型,默认使用 CPU,也可指定 GPU 层。openai 包使用标准库调用 OpenAI 兼容的嵌入接口,包括 OpenRouter。任何返回 []float32 的函数也能通过一个简单接口为索引提供向量。
由于各部分是独立的 Go 模块,应用只需引入所用的提供方。使用本地嵌入前,需要先在 Linux、macOS 或 Windows 上编译 llama.cpp 封装库。
核心功能
- 01对内存中的向量做精确余弦相似度检索,结果按相关度排序。
- 02支持通过文件以及 io.Writer/Reader 持久化索引。
- 03通过 llama.cpp 运行本地 GGUF 嵌入模型,可选 GPU 层。
- 04通过 OpenAI 兼容接口(含 OpenRouter)获取云端嵌入,支持批量请求。
- 05与具体提供方解耦,任何返回向量的函数都能为索引提供数据。
适用场景
- 为数千到数万条文档的 Go 服务添加语义搜索。
- 使用 MiniLM 等 GGUF 模型在本地完成全部嵌入计算。
- 在不修改索引代码的前提下切换 OpenAI 与 OpenRouter 的嵌入模型。
- 快速验证检索功能,全量扫描的速度已足够满足需求。
快速上手
- 1
克隆仓库及其子模块和 LFS 文件
git submodule update --init --recursive - 2
通过 Git LFS 获取模型和向量测试数据
git lfs pull - 3
安装核心 search 库
go get github.com/kelindar/search
使用前须知
- 搜索为精确匹配并遍历所有向量,因此仅适合中小规模数据集。
- 本地嵌入需要使用 CMake 和 C/C++ 编译器自行编译原生 llama.cpp 库。
- 需要 Go 1.27 或更高版本。
收录于专题
标签
常见问题
- search 是什么?
- Go 语言向量搜索库,提供精确余弦相似度检索,并可选接入基于 llama.cpp 的本地 GGUF 嵌入或 OpenAI 兼容的云端嵌入。 kelindar/search 是一个 Go 库,用于把向量存入内存索引,并按余弦相似度查找最相近的条目。核心包没有原生依赖,独立完成索引、检索和持久化,适合中小规模、可接受精确全量扫描的数据集。
- search 可以免费使用吗?用的什么许可证?
- search 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- search 还在维护吗?
- 半年内有更新。search 最近一次提交是在 2026年9月19日。
- search 适合用来做什么?
- 为数千到数万条文档的 Go 服务添加语义搜索。 使用 MiniLM 等 GGUF 模型在本地完成全部嵌入计算。 在不修改索引代码的前提下切换 OpenAI 与 OpenRouter 的嵌入模型。 快速验证检索功能,全量扫描的速度已足够满足需求。
- search 怎么安装和运行?
- 克隆仓库及其子模块和 LFS 文件: git submodule update --init --recursive 通过 Git LFS 获取模型和向量测试数据: git lfs pull 安装核心 search 库: go get github.com/kelindar/search
- 在哪里获取 search?
- 源代码和安装说明在 GitHub 上:https://github.com/kelindar/search
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
开源的 LLM 负载均衡与推理服务平台,基于 llama.cpp 在自有 CPU/GPU 集群上部署和扩展大模型。
用 Rust 编写的推理服务,可通过 HTTP 或 gRPC 部署和提供开源文本向量模型服务。
本地运行的语义代码搜索命令行工具,支持调用图追踪,并可作为 MCP 服务供 AI 编程助手调用。
Epsilla 是一个开源 C++ 向量数据库,用于嵌入向量相似度搜索,支持元数据过滤、混合检索和 LLM 集成。
将 llama.cpp 集成进 ROS 2 的软件包,可在节点中运行 GGUF 格式的大语言模型与多模态模型。