We think the future of AI lies on the 3 foundations.
- on device inference
- embedding generation
- faster retrieval
Our approach to all these problems is by making an unified framework that supports embedding generation, storage and language model APIs from one stack that runs natively on popular systems, an AI framework that is device/GPU vendor agnostic.
Edge is our open source effort.
Antarys Edge: A Next-Generation Vector Database
Antarys Edge is a lightweight vector database designed specifically for small to medium-sized projects. Built on top of Usearch and RocksDB along with http.zig, this version of Antarys provides a robust framework for managing vector operations.
Key Features:
- Compatibility: Antarys Edge supports standard Python and Node.js clients through compatible APIs, specifically for vector operations. Additional support for embeddings is currently planned.
- Customization: The codebase serves as a foundational starting point for users who wish to build a bespoke vector database utilizing Zig 0.15.1.
- Efficient Indexing: Incorporating Usearch for HNSW indexing and searching, the system offers capabilities comparable, yet nuanced, to proprietary search engines.
Usage Example: Usearch Bindings
The following code snippet demonstrates how to perform a search operation using Usearch bindings in Zig:
pub fn search(
index: *usearch.Index,
query: []const f32,
options: SearchOptions,
id_map: *const IdMap,
allocator: std.mem.Allocator,
) SearchError![]SearchResult {
// Implementation details...
}
Database Initialization
To initialize Antarys Edge with a simple collection, the following script can be utilized:
const db_path = ".test-antarysdb-basic";
var db = try AntarysDB.init(allocator, .{
.storage_path = db_path,
.enable_cache = true,
});
try db.createCollection("vectors", .{
.dimensions = 128,
.metric = .cosine,
});
Thread Pool API
Antarys Edge includes an internal ThreadPool API for enhanced concurrency and performance. An example of its implementation is as follows:
const ThreadPool = @import("threadpool.zig").ThreadPool;
var pool = try ThreadPool.init(allocator, .{ .num_workers = 4 });
Performance Considerations
This version is crafted for small teams working with the Antarys client API. Note that while Antarys Edge performs competitively in search functionalities, its indexing speed may lag behind leading solutions like Qdrant and Pinecone. The architecture utilizes an HTTP1.1 protocol, prioritizing compatibility and ease of use over maximum throughput.
Antarys Edge represents an accessible approach to integrating vector-based search and database functionalities within smaller projects and teams.
No comments yet.
Sign in to be the first to comment.