diff --git a/modules/ai_search/src/Plugin/EmbeddingStrategy/AveragePoolEmbeddingStrategy.php b/modules/ai_search/src/Plugin/EmbeddingStrategy/AveragePoolEmbeddingStrategy.php index 16c67feaf241241778c21bff158b8fc98a511a28..3cbfdd4b262bf7728678592981ca6233ff6cd172 100644 --- a/modules/ai_search/src/Plugin/EmbeddingStrategy/AveragePoolEmbeddingStrategy.php +++ b/modules/ai_search/src/Plugin/EmbeddingStrategy/AveragePoolEmbeddingStrategy.php @@ -33,6 +33,7 @@ class AveragePoolEmbeddingStrategy extends EmbeddingBase { ItemInterface $search_api_item, IndexInterface $index, ): array { + $this->searchApiItem = $search_api_item; $this->init($embedding_engine, $chat_model, $configuration); [$title, $contextual_content, $main_content] = $this->groupFieldData($fields, $index); $chunks = $this->getChunks($title, $main_content, $contextual_content); diff --git a/modules/ai_search/src/Plugin/EmbeddingStrategy/EmbeddingBase.php b/modules/ai_search/src/Plugin/EmbeddingStrategy/EmbeddingBase.php index 78595875897301765e669c2efeea3c41cfa8809b..8f3f500f5e410ede7c616740721df90d78890bcf 100644 --- a/modules/ai_search/src/Plugin/EmbeddingStrategy/EmbeddingBase.php +++ b/modules/ai_search/src/Plugin/EmbeddingStrategy/EmbeddingBase.php @@ -31,6 +31,13 @@ class EmbeddingBase extends EmbeddingStrategyPluginBase implements EmbeddingStra */ protected int $contextualContentMaxPercentage = 30; + /** + * The search_api_item. + * + * @var \Drupal\search_api\Item\ItemInterface + */ + protected ItemInterface $searchApiItem; + /** * {@inheritDoc} */ @@ -42,6 +49,7 @@ class EmbeddingBase extends EmbeddingStrategyPluginBase implements EmbeddingStra ItemInterface $search_api_item, IndexInterface $index, ): array { + $this->searchApiItem = $search_api_item; $this->init($embedding_engine, $chat_model, $configuration); [$title, $contextual_content, $main_content] = $this->groupFieldData($fields, $index); $chunks = $this->getChunks($title, $main_content, $contextual_content); @@ -118,10 +126,14 @@ class EmbeddingBase extends EmbeddingStrategyPluginBase implements EmbeddingStra if ($chunk) { // Normalize the chunk before embedding it. $input = new EmbeddingsInput($chunk); + $tags = ['ai_search']; + if ($this->searchApiItem !== NULL) { + $tags[] = $this->searchApiItem->getId(); + } $raw_embeddings[] = $embedding_llm->embeddings( $input, $this->modelId, - ['ai_search'], + $tags, )->getNormalized(); } }