语义代码分块与搜索库

一个高性能的Rust库,用于语义代码分块和搜索,支持Python和Node.js绑定,使用tree-sitter解析器智能地将代码分割成有意义的语义单元,同时保留上下文并提取丰富的元数据。

  • by casualjim
  • Rust
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 casualjim/breeze

使用说明

微风沙沙作响

一个用于语义代码分块和搜索的高性能Rust库,具有Python和Node.js的绑定。使用树型解析器将代码智能地拆分为有意义的语义单元,同时保留上下文并提取丰富的元数据。

特性

  • 语义代码分块:使用树形图在函数/类边界拆分代码
  • 100多种语言:通过nvim-treesitter查询提供支持
  • 代码搜索:使用向量嵌入的语义搜索
  • 多重绑定:Rust CLI、Python(PyO3)和Node.js(NAPI)
  • 流媒体API:高效处理大文件
  • API服务器:支持OpenAPI和MCP协议的HTTP/HTTPS

安装

目前,CI构建还没有生成二进制文件。但您可以从源代码安装该项目。

从源代码构建

获得所需工具的最简单方法是使用: 布置。但要使构建工作正常,我们需要:

  • 锈蚀1.84或以上
  • LLVM安装工作(树型解析器使用C或C++)
git clone https://github.com/casualjim/breeze-rustle
cd breeze-rustle

bun install
# npm install

# Install dependencies and build
mise build

安装CLI

# CPU based local embeddings
cargo install --path crates/breeze
# Cuda based local embeddings
cargo install --path crates/breeze --features cuda

注意:这将需要很长时间,因为我们有许多树型解析器需要链接。

用法

CLI命令

# Initialize configuration
breeze init

# Start the API server
breeze serve

# Index a codebase
breeze project create <name> <path>

# Search indexed code
breeze search --project PROJECT_ROOT <query>

配置

创建配置文件或使用 breeze init 生成一个。在以下位置(按顺序)搜索配置文件:

  1. .breeze.toml (当前目录)
  2. ~/Library/Application Support/com.github.casualjim.breeze.server/config.toml (仅限macOS)
  3. ~/.config/breeze/config.toml (用户配置)
  4. /etc/breeze/config.toml (全系统)
  5. /usr/share/breeze/config.toml (全系统)

您还可以使用以下命令指定自定义配置路径 --config 旗帜。请参阅 默认配置 在存储库中。

嵌入提供者

此应用程序可以通过onnxruntime使用本地嵌入。从技术上讲,我们也支持蜡烛变压器,但它们真的很慢,因为蜡烛在将嵌入的数字复制回CPU空间之前会等待所有GPU任务被释放,这会导致很大的延迟。

我们提供了一个本地嵌入引擎,这样您就可以立即开始,但您可能需要使用API。您将获得更高质量的嵌入和更快的索引。

远程嵌入提供商被假设为与OpenAI API兼容,适用于大多数提供商,如:vllm、infinity、ollama、llamacpp以及voyage、cohere。..

发展

# Run tests
mise test

# Build the project
mise build

# Clean build artifacts
mise clean

建筑

该项目被组织为一个包含多个crate的Rust工作区:

  • breeze -CLI应用程序
  • breeze-chunkers -使用树保姆的核心组块库
  • breeze-grammars -语法编译系统
  • breeze-indexer -代码索引和嵌入
  • breeze-server -HTTP/HTTPS API服务器
  • breeze-py -Python绑定
  • breeze-napi -Node.js绑定

演出

对我来说,在我的macbook M4 Pro上,用 cargo install --path crates/breeze --features metal.

看 docs/performance.md

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。