Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ai Click House Store Laravel Package

symfony/ai-click-house-store

ClickHouse vector store integration for Symfony AI Store. Store and query embeddings in ClickHouse using distance functions and ANN/vector indexes for fast similarity search. Links to ClickHouse docs plus Symfony AI contributing and issue tracker.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Vector Store Abstraction: The package extends Symfony AI’s StoreInterface, providing a clean abstraction for vector storage/retrieval in ClickHouse. This aligns well with Laravel/Symfony applications already using Symfony AI for embeddings, enabling plug-and-play replacement of existing stores (e.g., DoctrineStore, RedisStore).
  • ClickHouse Synergy: Leverages ClickHouse’s columnar storage, vector distance functions (L2, cosine), and ANN indexes (HNSW, SCANN) for high-dimensional embeddings (e.g., 768D for LLMs). Ideal for semantic search, recommendation systems, or RAG pipelines where scalability is critical.
  • Hybrid Query Support: Combines vector similarity with SQL filtering (e.g., WHERE metadata.category = 'tech'), enabling multi-modal search without post-processing. This is a unique advantage over standalone vector databases like Pinecone or Weaviate.
  • Symfony Ecosystem: Designed for Symfony’s dependency injection and configuration system, reducing boilerplate for Laravel apps using Symfony components.

Potential Gaps:

  • No Built-in Sharding: Relies on ClickHouse’s native ReplicatedMergeTree for horizontal scaling, which may require manual configuration for multi-region deployments.
  • Limited Async Support: Symfony AI’s store interface is synchronous; ClickHouse’s async query capabilities (e.g., SELECT ... ASYNC) aren’t exposed by this bridge.
  • Schema Management: No migrations or schema validation tools provided (developers must manually ensure ClickHouse tables match Symfony AI’s expectations).

Integration Feasibility

  • Prerequisites:
    • ClickHouse Server: Requires v22.8+ with vector support (confirm via SELECT version()). ANN indexes (e.g., HNSW) must be explicitly configured.
    • Symfony AI: Minimum v0.8.0 (check for StoreInterface changes in newer versions).
    • PHP Extensions: None required (uses clickhouse/client or HTTP driver).
  • Configuration Overhead:
    • Table Schema: Must define vectors as Array(Float32) with an ANN index (e.g., TYPE ann(1024) GRANULARITY=3). Example:
      CREATE TABLE vectors (
        id UInt64,
        embedding Array(Float32),
        metadata String,
        INDEX ann_index embedding TYPE ann(1024) GRANULARITY=3
      ) ENGINE = MergeTree();
      
    • Laravel Service Provider: Register the store in Symfony’s DI container (or Laravel’s service container via bind()).
  • Data Migration:
    • Export: Use existing store’s findAll() to serialize vectors (e.g., to JSON).
    • Import: Bulk-insert into ClickHouse using INSERT INTO ... VALUES or the HTTP API.
    • Validation: Verify dimensionality matches (e.g., 768D embeddings must align with ClickHouse’s Array(Float32)).

Key Dependencies:

Dependency Version Check Risk Level Notes
symfony/ai ^0.8.0 High Breaking changes possible in minor updates.
clickhouse/client ^1.0 Low Fallback to HTTP driver if needed.
ClickHouse v22.8+ Critical Vector/ANN features required.
PHP 8.1+ Medium Symfony AI’s minimum requirement.

Technical Risk

Risk Area Description Mitigation Strategy
Schema Mismatch Vector dimensionality or ANN index misconfiguration → queries fail or return incorrect results. Validate schema with a test dataset; use DESCRIBE TABLE to verify structure.
Performance Degradation Poor ANN index settings (e.g., GRANULARITY) → slow similarity searches. Benchmark with system.asynchronous_metrics; adjust GRANULARITY/GRAPH_SIZE based on query patterns.
Symfony AI Version Incompatible StoreInterface changes in newer Symfony AI versions. Pin to a stable version (e.g., symfony/ai:0.8.0) and test against minor updates.
ClickHouse Downtime No built-in retry logic for transient failures (e.g., network issues). Implement exponential backoff in Laravel’s HTTP client or use a circuit breaker pattern.
Vector Size Limits ClickHouse’s Array(Float32) has a 65K-element limit (may exceed for high-dimensional data). Use compression (e.g., Float16) or split vectors into multiple columns if needed.
Concurrency Issues High write throughput may overwhelm ClickHouse’s merge tree engine. Monitor system.merge_tree metrics; consider batching writes or using ReplicatedMergeTree.

Critical Questions:

  1. Vector Dimensionality: What is the maximum dimension of your embeddings? Does it fit ClickHouse’s Array(Float32) limit (65K)?
  2. Query Patterns: Will you primarily use exact nearest neighbors or approximate (ANN)? This affects index tuning.
  3. Metadata Filtering: Do you need to filter vectors by metadata (e.g., WHERE category = 'tech')? If so, ensure ClickHouse tables include these columns.
  4. Symfony AI Caching: Are you using Symfony AI’s caching layer? If so, how will it interact with ClickHouse’s real-time queries (cache invalidation strategy)?
  5. Failure Modes: What is the acceptable latency for retries during ClickHouse outages (e.g., 5s vs. 30s)?

Integration Approach

Stack Fit

  • Ideal Use Cases:
    • Laravel/Symfony Applications: Seamless integration with Symfony AI’s ecosystem (e.g., symfony/ai-doctrine-store replacements).
    • High-Volume Vector Search: Outperforms traditional SQL databases for >100K vectors due to ClickHouse’s columnar storage.
    • Hybrid Search: Combine vector similarity with SQL filtering (e.g., WHERE embedding_date > '2023-01-01').
    • Cost Optimization: Replaces managed vector databases (e.g., Pinecone at $0.006/1K vectors) with near-zero marginal cost.
  • Not Ideal For:
    • Low-Latency, Small-Scale Apps: Overhead of ClickHouse setup may not justify benefits for <10K vectors.
    • ACID Transactions: ClickHouse is OLAP-focused; avoid for financial systems requiring strong consistency.
    • Non-Symfony PHP Stacks: Requires Symfony AI’s StoreInterface; not compatible with raw Laravel or other PHP frameworks.

Compatibility Matrix:

Component Compatible Versions Notes
Laravel 10.x+ (Symfony components) Use symfony/ai via Composer.
Symfony AI ^0.8.0 Test against minor updates.
ClickHouse v22.8+ Vector/ANN features required.
PHP 8.1+ Symfony AI’s minimum requirement.
Doctrine Optional (for hybrid ORM setups) Not required but may conflict with schema.

Migration Path

  1. Assessment Phase:

    • Benchmark Current Store: Measure latency/cost of existing vector store (e.g., symfony/ai-doctrine-store).
    • ClickHouse Feasibility: Verify server version (SELECT version()) and vector support.
    • Schema Design: Define ClickHouse table structure (e.g., embedding Array(Float32), ANN index).
  2. Setup ClickHouse:

    • Install/Configure Server: Use Docker or native install (e.g., clickhouse-local).
    • Create Table:
      CREATE TABLE vectors (
        id UInt64,
        embedding Array(Float32),
        metadata String,
        INDEX ann_index embedding TYPE ann(1024) GRANULARITY=3
      ) ENGINE = MergeTree() ORDER BY id;
      
    • Configure Laravel:
      // config/clickhouse.php
      'connections' => [
          'default' => [
              'driver' => 'http', // or 'native'
              'host' => env('CLICKHOUSE_HOST', 'localhost'),
              'port' => env('CLICKHOUSE_PORT', 8123),
              'database' => 'ai_vectors',
              'username' => env('CLICKHOUSE_USER', 'default'),
              'password' =>
      
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
monarobase/country-list
nasirkhan/laravel-sharekit
directorytree/privacy-filter-classifier
directorytree/privacy-filter
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata
splash/openapi
splash/scopes
splash/toolkit
testo/output-teamcity