13 个版本 (7 个重大更新)
0.10.1 | 2024 年 8 月 12 日 |
---|---|
0.9.0 | 2024 年 8 月 12 日 |
0.5.1 | 2024 年 7 月 30 日 |
#316 在 数据库接口
1,491 每月下载量
98KB
2.5K SLoC
dRAGon
dRAGon 是一个嵌入式的 Rust 向量数据库,提供了 RAG(检索增强生成)的辅助函数。它提供了一种强大而灵活的解决方案来管理和查询向量嵌入,非常适合各种自然语言处理和机器学习应用。
功能
- 🚀 使用 PostgreSQL 和 pgvector 进行高效向量存储和检索
- 📄 支持多种文件格式(PDF、TXT、DOCX、CSV、Markdown)
- 🔍 相似性搜索功能
- 📦 批量操作以添加和更新向量
- 🧠 可定制的嵌入模型和通过 fastembed-rs 进行推理
- 🌐 RESTful API 以便于集成
- 🔄 结合全文和向量相似性的混合搜索
- 🔒 嵌入式 PostgreSQL 以便于设置和部署
目录
安装
先决条件
- Rust
protoc
(协议缓冲区编译器)
安装 protoc
MacOS
brew install protobuf
Linux
sudo apt-get install protobuf-compiler
Windows
choco install protobuf
或者
scoop install protobuf
从源码构建
-
克隆仓库
git clone https://github.com/portalcorp/dRAGon.git cd dRAGon
-
构建项目
cargo build --release
-
运行服务器
cargo run
使用方法
作为库使用
dRAGon 可以作为库在你的 Rust 项目中使用。以下是如何导入和使用它的示例
- 将 dRAGon 添加到你的项目中
cargo add dragon_db
- 在你的 Rust 代码中导入并使用 dRAGon
use dragon_db::start_server;
#[rocket::launch]
pub async fn run() -> _ {
start_server().await
}
此代码片段演示了如何从您的自己的包中启动 dRAGon 服务器。它使用 dRAGon 库中的 start_server()
函数来配置和启动服务器。
API 使用
一旦服务器启动,您可以通过 HTTP 请求与之交互。以下是一些示例 API 调用
startLine: 282
endLine: 433
有关详细 API 文档,请参阅在运行服务器时可在 https://127.0.0.1:8000/docs
可用的 docs UI。
API 端点
有关详细 API 文档,请参阅在运行服务器时可在 https://127.0.0.1:8000/docs
可用的 docs UI。
配置
可以使用环境变量配置 dRAGon 服务器
ROCKET_PORT
:服务器将监听的端口(默认:8000)BASE_PATH
:服务器将监听的基路径(默认:"/")DB_PATH
:存储数据库文件的路径(默认: "data/lance")COLLECTION_NAME
:默认集合的名称(默认: "vectors")EMBEDDING_MODEL
:要使用的嵌入模型(默认:“BGESmallENV15”)
开发
设置开发环境
- 安装Rust和Cargo:https://www.rust-lang.net.cn/tools/install
- 克隆仓库并导航到项目目录
- 安装依赖:
cargo build
- 运行开发服务器:
cargo run
测试
运行测试套件
cargo test -- --test-threads=1
我们禁用并行数据库测试,以避免创建多个临时数据库并增加内存使用。
许可证
dRAGon遵循MIT许可证发布。有关详细信息,请参阅LICENSE文件。
依赖关系
~87–125MB
~2M SLoC