承接 edgebinder/weaviate-adapter 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

edgebinder/weaviate-adapter

最新稳定版本:v0.4.1

Composer 安装命令:

composer require edgebinder/weaviate-adapter

包简介

Weaviate adapter for EdgeBinder - Vector database relationship management with semantic search capabilities

README 文档

README

Tests Lint codecov PHP Version License

A Weaviate adapter for EdgeBinder that leverages Weaviate's vector database capabilities to store and query entity relationships with rich metadata and semantic similarity features.

???? Implementation Strategy: Phased Approach

Phase 1: Basic Adapter (Current Implementation)

Status: Ready to Implement

  • Uses current Zestic Weaviate PHP client capabilities
  • Implements core PersistenceAdapterInterface methods
  • Provides basic relationship storage and retrieval
  • Supports rich metadata without vector features

Phase 2: Vector Enhancement (Future)

Status: Requires Client Enhancement

  • Contribute vector query support to Zestic client
  • Add semantic similarity search capabilities
  • Implement advanced GraphQL query features
  • Enable AI/ML relationship discovery

Requirements

  • PHP 8.3 or higher
  • Composer
  • Weaviate 1.31+ (for integration testing)
  • Docker and Docker Compose (for local development)

Installation

composer require edgebinder/weaviate-adapter

Quick Start

Option 1: Using the Registry System (Recommended)

<?php use EdgeBinder\EdgeBinder; use EdgeBinder\Adapter\Weaviate\WeaviateAdapterFactory; use EdgeBinder\Registry\AdapterRegistry; use Weaviate\WeaviateClient; // Register the Weaviate adapter factory AdapterRegistry::register(new WeaviateAdapterFactory()); // Configure your container to provide the Weaviate client $container = /* your PSR-11 container */; // Create EdgeBinder using configuration $config = [ 'adapter' => 'weaviate', 'weaviate_client' => 'weaviate.client.default', 'collection_name' => 'MyAppBindings', 'schema' => [ 'auto_create' => true, 'vectorizer' => 'text2vec-openai' ] ]; $binder = EdgeBinder::fromConfiguration($config, $container); // Use EdgeBinder as normal $workspace = new Entity('workspace-123', 'Workspace'); $project = new Entity('project-456', 'Project'); $binding = $binder->bind( from: $workspace, to: $project, type: 'has_access', metadata: [ 'access_level' => 'write', 'granted_by' => 'user-789', 'confidence_score' => 0.95 ] );

Option 2: Direct Adapter Creation

<?php use EdgeBinder\EdgeBinder; use EdgeBinder\Adapter\Weaviate\WeaviateAdapter; use Weaviate\WeaviateClient; // Connect to Weaviate $weaviateClient = WeaviateClient::connectToLocal(); // Create the adapter directly $adapter = new WeaviateAdapter($weaviateClient, [ 'collection_name' => 'MyAppBindings', 'schema' => [ 'auto_create' => true, 'vectorizer' => 'text2vec-openai' ] ]); // Create EdgeBinder instance $binder = EdgeBinder::fromAdapter($adapter);

Framework Integration

The Weaviate adapter supports the EdgeBinder registry system, making it easy to integrate with any PHP framework:

Laminas/Mezzio

// In your Module.php or application bootstrap use EdgeBinder\Adapter\Weaviate\WeaviateAdapterFactory; use EdgeBinder\Registry\AdapterRegistry; AdapterRegistry::register(new WeaviateAdapterFactory()); // In your service factory public function __invoke(ContainerInterface $container): EdgeBinder { $config = $container->get('config')['edgebinder']['rag']; return EdgeBinder::fromConfiguration($config, $container); }

Symfony

// In your bundle boot method or compiler pass use EdgeBinder\Adapter\Weaviate\WeaviateAdapterFactory; use EdgeBinder\Registry\AdapterRegistry; AdapterRegistry::register(new WeaviateAdapterFactory()); // In your service public function createEdgeBinder(ContainerInterface $container): EdgeBinder { $config = $container->getParameter('edgebinder.rag'); return EdgeBinder::fromConfiguration($config, $container); }

Laravel

// In your service provider boot method use EdgeBinder\Adapter\Weaviate\WeaviateAdapterFactory; use EdgeBinder\Registry\AdapterRegistry; public function boot() { AdapterRegistry::register(new WeaviateAdapterFactory()); } // In your service public function createEdgeBinder(): EdgeBinder { $config = config('edgebinder.rag'); return EdgeBinder::fromConfiguration($config, app()); }

Configuration Example

return [ 'edgebinder' => [ 'rag' => [ 'adapter' => 'weaviate', 'weaviate_client' => 'weaviate.client.rag', 'collection_name' => 'RAGBindings', 'schema' => [ 'auto_create' => true, 'vectorizer' => 'text2vec-openai', ], 'vectorizer' => [ 'provider' => 'openai', 'model' => 'text-embedding-ada-002', ], 'performance' => [ 'batch_size' => 100, 'vector_cache_ttl' => 3600, ], ], ], ];

Development

Setup

# Clone the repository git clone https://github.com/edgebinder/weaviate-adapter.git cd weaviate-adapter # Install dependencies composer install

Running Tests

Unit Tests (No External Dependencies)

# Run unit tests only composer test-unit

Integration Tests (Requires Weaviate)

# Using Docker (Recommended) composer test-docker # Using external Weaviate instance export WEAVIATE_URL=http://localhost:8080 composer test-integration

All Tests

# Run all tests with Docker composer test-docker # Run all tests with external Weaviate composer test

Code Quality

# Run PHPStan static analysis composer phpstan # Check coding standards composer cs-check # Fix coding standards composer cs-fix # Run all linting composer lint

Docker Development

# Start Weaviate for development composer docker-start # Stop Weaviate composer docker-stop # Reset Weaviate data composer docker-reset

Features

Phase 1 (Current)

  • ✅ Core CRUD operations
  • ✅ Rich metadata storage
  • ✅ Entity-based queries
  • ✅ Multi-tenancy support
  • ✅ Automatic schema management

Phase 2 (Planned)

  • ???? Vector similarity search
  • ???? Semantic concept queries
  • ???? Advanced GraphQL queries
  • ???? Batch vector operations
  • ???? AI/ML integration features

Architecture

src/ ├── WeaviateAdapter.php # Main adapter implementation ├── Exception/ │ ├── WeaviateException.php # Weaviate-specific exceptions │ └── SchemaException.php # Schema-related exceptions ├── Query/ │ └── BasicQueryBuilder.php # Basic query capabilities ├── Schema/ │ └── SchemaManager.php # Schema management ├── Mapping/ │ └── BindingMapper.php # Object mapping └── Vector/ └── VectorGenerator.php # Vector generation (Phase 2) 

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Write tests for your changes
  4. Ensure all tests pass (composer test-docker)
  5. Ensure code quality passes (composer lint)
  6. Submit a pull request

License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

Support

For issues and questions, please use the GitHub issue tracker.

统计信息

  • 总下载量: 593
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固