Summary
Implement embedding generation capabilities as outlined in docs/ARCHITECTURE.md and the development roadmap (#8, milestone 0.4.0).
Embeddings enable vector representations of text/content for use with vector databases, semantic search, and similarity comparisons.
Scope
Domain Layer
Builder & Client APIs
Provider Contracts & Registry
Provider Implementations
Testing & CLI
Documentation
Related
Open Questions
- Input shape for multiple documents — new
withEmbeddingInputs() vs. reusing message stack?
- Helper transformers on
EmbeddingResult (e.g., toVectors(), toAssociativeArray())?
- Provider-specific options (dimensions) — surface through
ModelConfig / SupportedOption?
Summary
Implement embedding generation capabilities as outlined in docs/ARCHITECTURE.md and the development roadmap (#8, milestone 0.4.0).
Embeddings enable vector representations of text/content for use with vector databases, semantic search, and similarity comparisons.
Scope
Domain Layer
EmbeddingDTO (src/Embeddings/DTO/Embedding.php) — vector validation, dimension helpersEmbeddingResultimplementingResultInterface— carries embeddings, token usage, provider metadataEmbeddingOperationfor async/long-running embedding jobsBuilder & Client APIs
PromptBuilder::withEmbeddingInput(string|Message $input)— collect inputs for embeddingPromptBuilder::generateEmbeddingsResult()/generateEmbeddingsOperation()/generateEmbeddings()AiClientfor traditional API surfaceCapabilityEnum::embeddingGenerationProvider Contracts & Registry
EmbeddingGenerationModelInterfaceEmbeddingGenerationOperationModelInterfaceWithEmbeddingOperationsInterfaceProviderRegistrydiscovery for embedding-capable modelsProvider Implementations
Testing & CLI
--capability=embeddings, output formats)Documentation
Related
docs/ARCHITECTURE.mdOpen Questions
withEmbeddingInputs()vs. reusing message stack?EmbeddingResult(e.g.,toVectors(),toAssociativeArray())?ModelConfig/SupportedOption?