SemaDbAPI.jl
SemaDbAPI.jl is a Julia client library for interacting with SemaDB, a high-performance vector database designed for similarity search and semantic operations.
Overview
SemaDbAPI.jl provides a complete, strongly-typed interface to manage collections, insert points, and perform various search operations with different indexing strategies. The package was generated using OpenAPI.jl, ensuring type safety and comprehensive API coverage.
Key Features
Multiple Indexing Strategies:
- Vamana (graph-based approximate nearest neighbor search)
- Flat (exact search)
- Text indexing for semantic search
- Binary and Product quantization options
Rich Query Capabilities:
- Vector similarity search
- Metadata filtering
- Complex query composition with AND/OR operators
- Sorting and pagination
Strongly-Typed Interface:
- Generated models for all API requests and responses
- Compile-time validation of parameters
- Comprehensive error handling
Installation
julia> using Pkg
julia> Pkg.add("SemaDbAPI")
Quick Start
using SemaDbAPI
using UUIDs
# Initialize client
client = SemaDBClient("http://localhost:8081/v2")
# Create a collection with Vamana indexing
ivvp = IndexVectorVamanaParameters(
vectorSize = 2,
distanceMetric = "euclidean",
searchSize = 75,
degreeBound = 64,
alpha = 1.2
)
ischema = Dict("vector" => IndexSchemaValue(
type = "vectorVamana",
vectorVamana = ivvp
))
req = CreateCollectionRequest(id = "mycollection", indexSchema = ischema)
create_collection(client, "Julia", req)
# Insert points
points = [
Dict("_id" => string(uuid4()), "vector" => [1.0, 2.0], "metadata" => "first point"),
Dict("_id" => string(uuid4()), "vector" => [3.0, 4.0], "metadata" => "second point")
]
insert_req = InsertPointsRequest(points = points)
insert_point(client, "Julia", "mycollection", insert_req)
# Perform search
search_opts = SearchVectorVamanaOptions(vector = [1, 2], operator = "near")
query = Query(property = "vector", vectorVamana = search_opts)
search_req = SearchRequest(query = query, limit = 10)
search_res = search_point(client, "Julia", "mycollection", search_req)
# Clean up
delete_collection(client, "Julia", "mycollection")
Documentation Structure
License
This package is licensed under the MIT License.