centamiv/vektor
Laravel package for integrating Vektor telephony/CRM features: manage calls, events, and related data via a clean PHP API. Provides simple configuration, service classes, and helpers to streamline connecting your app to Vektor workflows.
Install via Composer
composer require centamiv/vektor
composer.json for PHP version requirements (likely ^8.1).Basic Initialization
use Centamiv\Vektor\VectorDB;
$db = new VectorDB('path/to/storage/directory');
First Use Case: Insert & Query
// Insert a vector (e.g., from an embedding model)
$db->insert('collection_name', [0.1, 0.5, -0.3, ...]);
// Query nearest neighbors
$results = $db->query('collection_name', [0.2, 0.6, -0.4], limit: 5);
src/Centamiv/Vektor/ for core classes (e.g., VectorDB, Collection)./tests to understand performance tradeoffs.Generate Embeddings
Use a library like php-ai/phpsentencebert or symfony/serializer to convert text/images to vectors.
$embedding = $embeddingModel->embed("Your data here");
Batch Insertion
$db->insertBatch('products', [
['vector1', 'metadata1'],
['vector2', 'metadata2'],
]);
Hybrid Search Combine with Laravel’s query builder for metadata filtering:
$vectorResults = $db->query('products', $queryVector, limit: 10);
$filtered = Product::whereIn('id', $vectorResults['ids'])->get();
Laravel Service Provider
Bind VectorDB to the container for dependency injection:
$this->app->singleton(VectorDB::class, function ($app) {
return new VectorDB(storage_path('app/vektor'));
});
Caching Results
Cache frequent queries with Illuminate\Support\Facades\Cache:
$results = Cache::remember("vector_query_{$queryHash}", now()->addHours(1), function () use ($db) {
return $db->query('collection', $vector);
});
Async Processing Use Laravel Queues for heavy embedding tasks:
InsertEmbeddingJob::dispatch($data, 'collection_name');
Binary Storage Quirks
hex2bin() to inspect stored vectors if queries return unexpected results.RAM Overhead Myth
memory_get_usage():
$usage = memory_get_usage(true);
Collection Locking
database connection locking:
DB::transaction(function () use ($db) {
$db->insert('collection', $vector);
});
Verify Vector Dimensions Mismatched dimensions cause silent failures. Log dimensions pre-insert:
$dimensions = count($vector);
$db->insert('collection', $vector); // Throws if $dimensions !== collection's expected dims
Check Storage Permissions If inserts fail, verify the storage directory is writable:
chmod -R 755 storage/app/vektor
Custom Distance Metrics
Extend Centamiv\Vektor\Metrics\DistanceInterface for cosine/specialized distances:
class CustomMetric implements DistanceInterface {
public function calculate(array $a, array $b): float { ... }
}
Indexing Strategies
Override Centamiv\Vektor\Collection::buildIndex() for custom partitioning (e.g., by metadata).
Laravel Scout Driver
Implement a VektorEngine for Laravel Scout:
class VektorEngine extends Engine {
public function search($query, array $options) { ... }
}
How can I help you explore Laravel packages today?