---
title: "Embedding recipes"
manual: "LLM Foundation"
version: "main"
permalink: "https://docs.typo3.org/permalink/netresearch/nr-llm:embedding-recipes@main"
source: "Developer/FeatureServices/Embedding.rst"
rendered: "2026-11-12T15:41:35+00:00"
---

# Embedding recipes {#embedding-recipes}

## EmbeddingService {#feature-services-embedding}

**Purpose**: Text-to-vector conversion and similarity search.

### Use cases {#feature-services-embedding-use-cases}

-   Semantic translation memory (textdb).
-   Content similarity.
-   Duplicate detection.
-   Semantic search.

### Key features {#feature-services-embedding-features}

-   Aggressive caching (deterministic).
-   Batch processing.
-   Cosine similarity calculations.
-   Top-K similarity search.

### Example {#feature-services-embedding-example}

**Example: Using EmbeddingService**

```php
use Netresearch\NrLlm\Service\Feature\EmbeddingService;

// Generate embedding
$vector = $embeddingService->embed('Search query text');

// Find similar
$similar = $embeddingService->findMostSimilar(
    queryVector: $vector,
    candidateVectors: $allVectors,
    topK: 5
);
```

### Methods {#feature-services-embedding-methods}

**EmbeddingService methods**

```php
// Generate embedding (cached automatically)
$vector = $embeddingService->embed('Some text');

// Full response with metadata
$response = $embeddingService->embedFull('Some text');

// Batch embedding
$vectors = $embeddingService->embedBatch(['Text 1', 'Text 2']);

// Calculate cosine similarity
$similarity = $embeddingService->cosineSimilarity($vectorA, $vectorB);

// Find most similar vectors
$results = $embeddingService->findMostSimilar(
    $queryVector,
    $candidateVectors,
    topK: 5
);

// Normalize a vector
$normalized = $embeddingService->normalize($vector);
```
