This is an automated email from the ASF dual-hosted git repository.

alessandrobenedetti pushed a commit to branch branch_10x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_10x by this push:
     new ab9a70797f3 Text to vector refactoring (#4375)
ab9a70797f3 is described below

commit ab9a70797f340c65c0735fbcdd890f2d41e6a8ce
Author: Nicolò Rinaldi <[email protected]>
AuthorDate: Mon May 11 12:23:45 2026 +0200

    Text to vector refactoring (#4375)
    
    Co-authored-by: Alessandro Benedetti <[email protected]>
    (cherry picked from commit 500fbe04b32270572a0d5d26713a8fd6bb00fb5e)
---
 .../PR#4375-language-model-refactoring.yml         |   9 +
 ...lException.java => LanguageModelException.java} |   8 +-
 .../SolrLanguageModel.java}                        |  33 +++-
 .../model/SolrTextToVectorModel.java               |  38 ++--
 .../store => model}/package-info.java              |   4 +-
 .../model => }/package-info.java                   |   4 +-
 .../search/TextToVectorQParserPlugin.java          |   6 +-
 .../store => search}/package-info.java             |   4 +-
 .../store/rest/ManagedLanguageModelStore.java      | 199 ++++++++++++++++++++
 .../store/rest/ManagedTextToVectorModelStore.java  |  64 +++++++
 .../store => store/rest}/package-info.java         |   4 +-
 .../store/TextToVectorModelStore.java              |  67 -------
 .../store/rest/ManagedTextToVectorModelStore.java  | 200 ---------------------
 .../textvectorisation/store/rest/package-info.java |  19 --
 .../processor/TextToVectorUpdateProcessor.java     |   6 +-
 .../TextToVectorUpdateProcessorFactory.java        |   7 +-
 .../processor/factory}/package-info.java           |   4 +-
 .../update/processor/package-info.java             |   2 +-
 .../src/test-files/modelExamples/dummy-model.json  |   7 -
 .../modelExamples/exception-throwing-model.json    |   6 -
 ...olrconfig-language-models-query-parser-only.xml |   2 +-
 ...nguage-models-update-request-processor-only.xml |   2 +-
 .../conf/solrconfig-language-models.xml            |  10 +-
 .../cohere-model.json                              |   0
 .../dummy-model-ambiguous.json                     |   2 +-
 .../dummy-model-unsupported.json                   |   2 +-
 .../textToVectorModelExamples/dummy-model.json     |   7 +
 .../exception-throwing-model.json                  |   6 +
 .../huggingface-model.json                         |   0
 .../mistralai-model.json                           |   0
 .../openai-model.json                              |   0
 .../solr/languagemodels/TestLanguageModelBase.java |  23 +--
 .../model/DummyEmbeddingModel.java                 |   2 +-
 .../model/DummyEmbeddingModelTest.java             |   2 +-
 .../model/ExceptionThrowingEmbeddingModel.java     |   2 +-
 .../search/TextToVectorQParserTest.java            |   2 +-
 ...stManagedLanguageModelStoreInitialization.java} |   4 +-
 .../store/rest/TestModelManager.java               |   4 +-
 .../store/rest/TestModelManagerPersistence.java    |  16 +-
 .../processor/TextToVectorUpdateProcessorTest.java |   4 +-
 .../TextToVectorUpdateProcessorFactoryTest.java    |   6 +-
 .../pages/update-request-processors.adoc           |   2 +-
 .../modules/query-guide/pages/text-to-vector.adoc  |  13 +-
 43 files changed, 392 insertions(+), 410 deletions(-)

diff --git a/changelog/unreleased/PR#4375-language-model-refactoring.yml 
b/changelog/unreleased/PR#4375-language-model-refactoring.yml
new file mode 100644
index 00000000000..95d3f6b3745
--- /dev/null
+++ b/changelog/unreleased/PR#4375-language-model-refactoring.yml
@@ -0,0 +1,9 @@
+title: Refactor of the language-model module to accomodate new upcoming LLM 
oriented features avoiding code duplication.
+type: changed
+authors:
+  - name: Nicolò Rinaldi
+  - name: Anna Ruggero
+  - name: Alessandro benedetti
+links:
+- name: PR#4375
+  url: https://github.com/apache/solr/pull/4375
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/TextToVectorModelException.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/LanguageModelException.java
similarity index 78%
copy from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/TextToVectorModelException.java
copy to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/LanguageModelException.java
index 8709ebf6929..b047daa21e7 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/TextToVectorModelException.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/LanguageModelException.java
@@ -14,17 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.store;
+package org.apache.solr.languagemodels;
 
-public class TextToVectorModelException extends RuntimeException {
+public class LanguageModelException extends RuntimeException {
 
   private static final long serialVersionUID = 1L;
 
-  public TextToVectorModelException(String message) {
+  public LanguageModelException(String message) {
     super(message);
   }
 
-  public TextToVectorModelException(String message, Exception cause) {
+  public LanguageModelException(String message, Exception cause) {
     super(message, cause);
   }
 }
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/TextToVectorModelException.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/SolrLanguageModel.java
similarity index 50%
rename from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/TextToVectorModelException.java
rename to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/SolrLanguageModel.java
index 8709ebf6929..b0a6ecc4480 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/TextToVectorModelException.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/SolrLanguageModel.java
@@ -14,17 +14,36 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.store;
+package org.apache.solr.languagemodels.model;
 
-public class TextToVectorModelException extends RuntimeException {
+import java.util.Map;
 
-  private static final long serialVersionUID = 1L;
+/**
+ * Abstract base class for Solr-managed wrappers around langchain4j used in 
{@code language-models}
+ * module
+ */
+public abstract class SolrLanguageModel {
+
+  // common parameters
+  protected static final String TIMEOUT_PARAM = "timeout";
+  protected static final String MAX_RETRIES_PARAM = "maxRetries";
+
+  protected final String name;
+  protected final Map<String, Object> params;
 
-  public TextToVectorModelException(String message) {
-    super(message);
+  protected SolrLanguageModel(String name, Map<String, Object> params) {
+    this.name = name;
+    this.params = params;
   }
 
-  public TextToVectorModelException(String message, Exception cause) {
-    super(message, cause);
+  public String getName() {
+    return name;
   }
+
+  public Map<String, Object> getParams() {
+    return params;
+  }
+
+  /** Returns the class name of the underlying langchain4j model instance. */
+  public abstract String getModelClassName();
 }
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/model/SolrTextToVectorModel.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/SolrTextToVectorModel.java
similarity index 84%
rename from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/model/SolrTextToVectorModel.java
rename to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/SolrTextToVectorModel.java
index 21f7f8035be..cb34d7b621b 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/model/SolrTextToVectorModel.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/SolrTextToVectorModel.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.model;
+package org.apache.solr.languagemodels.model;
 
 import dev.langchain4j.data.embedding.Embedding;
 import dev.langchain4j.model.embedding.EmbeddingModel;
@@ -28,26 +28,21 @@ import org.apache.lucene.util.Accountable;
 import org.apache.lucene.util.RamUsageEstimator;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.core.SolrResourceLoader;
-import 
org.apache.solr.languagemodels.textvectorisation.store.TextToVectorModelException;
-import 
org.apache.solr.languagemodels.textvectorisation.store.rest.ManagedTextToVectorModelStore;
+import org.apache.solr.languagemodels.LanguageModelException;
+import org.apache.solr.languagemodels.store.rest.ManagedTextToVectorModelStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * This object wraps a {@link dev.langchain4j.model.embedding.EmbeddingModel} 
to encode text to
- * vector. It's meant to be used as a managed resource with the {@link
- * ManagedTextToVectorModelStore}
+ * This object wraps a {@link EmbeddingModel} to encode text to vector. It's 
meant to be used as a
+ * managed resource with the {@link ManagedTextToVectorModelStore}
  */
-public class SolrTextToVectorModel implements Accountable {
+public class SolrTextToVectorModel extends SolrLanguageModel implements 
Accountable {
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
   private static final long BASE_RAM_BYTES =
       RamUsageEstimator.shallowSizeOfInstance(SolrTextToVectorModel.class);
-  private static final String TIMEOUT_PARAM = "timeout";
   private static final String MAX_SEGMENTS_PER_BATCH_PARAM = 
"maxSegmentsPerBatch";
-  private static final String MAX_RETRIES_PARAM = "maxRetries";
 
-  private final String name;
-  private final Map<String, Object> params;
   private final EmbeddingModel textToVector;
   private final int hashCode;
 
@@ -56,7 +51,7 @@ public class SolrTextToVectorModel implements Accountable {
       String className,
       String name,
       Map<String, Object> params)
-      throws TextToVectorModelException {
+      throws LanguageModelException {
     try {
       /*
        * The idea here is to build a {@link 
dev.langchain4j.model.embedding.EmbeddingModel} using inversion
@@ -125,15 +120,14 @@ public class SolrTextToVectorModel implements Accountable 
{
       textToVector = (EmbeddingModel) 
builder.getClass().getMethod("build").invoke(builder);
       return new SolrTextToVectorModel(name, textToVector, params);
     } catch (final Exception e) {
-      throw new TextToVectorModelException("Model loading failed for " + 
className, e);
+      throw new LanguageModelException("Model loading failed for " + 
className, e);
     }
   }
 
   public SolrTextToVectorModel(
       String name, EmbeddingModel textToVector, Map<String, Object> params) {
-    this.name = name;
+    super(name, params);
     this.textToVector = textToVector;
-    this.params = params;
     this.hashCode = calculateHashCode();
   }
 
@@ -170,20 +164,12 @@ public class SolrTextToVectorModel implements Accountable 
{
   @Override
   public boolean equals(Object obj) {
     if (this == obj) return true;
-    if (!(obj instanceof SolrTextToVectorModel)) return false;
-    final SolrTextToVectorModel other = (SolrTextToVectorModel) obj;
+    if (!(obj instanceof SolrTextToVectorModel other)) return false;
     return Objects.equals(textToVector, other.textToVector) && 
Objects.equals(name, other.name);
   }
 
-  public String getName() {
-    return name;
-  }
-
-  public String getEmbeddingModelClassName() {
+  @Override
+  public String getModelClassName() {
     return textToVector.getClass().getName();
   }
-
-  public Map<String, Object> getParams() {
-    return params;
-  }
 }
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/package-info.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/package-info.java
similarity index 88%
copy from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/package-info.java
copy to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/package-info.java
index 5e79341f992..f385bff798d 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/package-info.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/package-info.java
@@ -15,5 +15,5 @@
  * limitations under the License.
  */
 
-/** Contains model store related classes. */
-package org.apache.solr.languagemodels.textvectorisation.store;
+/** Contains model related classes. */
+package org.apache.solr.languagemodels.model;
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/model/package-info.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/package-info.java
similarity index 86%
rename from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/model/package-info.java
rename to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/package-info.java
index cadec960174..42e741828e9 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/model/package-info.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/package-info.java
@@ -15,5 +15,5 @@
  * limitations under the License.
  */
 
-/** APIs and classes for implementing text to vector logic. */
-package org.apache.solr.languagemodels.textvectorisation.model;
+/** Contains the whole module for Language Models. */
+package org.apache.solr.languagemodels;
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/search/TextToVectorQParserPlugin.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/search/TextToVectorQParserPlugin.java
similarity index 94%
rename from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/search/TextToVectorQParserPlugin.java
rename to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/search/TextToVectorQParserPlugin.java
index 3c213928cb3..9cbfbf5dc1f 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/search/TextToVectorQParserPlugin.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/search/TextToVectorQParserPlugin.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.search;
+package org.apache.solr.languagemodels.search;
 
 import java.io.IOException;
 import java.util.Arrays;
@@ -26,8 +26,8 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrResourceLoader;
-import 
org.apache.solr.languagemodels.textvectorisation.model.SolrTextToVectorModel;
-import 
org.apache.solr.languagemodels.textvectorisation.store.rest.ManagedTextToVectorModelStore;
+import org.apache.solr.languagemodels.model.SolrTextToVectorModel;
+import org.apache.solr.languagemodels.store.rest.ManagedTextToVectorModelStore;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.rest.ManagedResource;
 import org.apache.solr.rest.ManagedResourceObserver;
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/package-info.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/search/package-info.java
similarity index 87%
copy from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/package-info.java
copy to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/search/package-info.java
index 5e79341f992..2a7237bd847 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/package-info.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/search/package-info.java
@@ -15,5 +15,5 @@
  * limitations under the License.
  */
 
-/** Contains model store related classes. */
-package org.apache.solr.languagemodels.textvectorisation.store;
+/** APIs and classes for implementing language models QueryParsers. */
+package org.apache.solr.languagemodels.search;
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/store/rest/ManagedLanguageModelStore.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/store/rest/ManagedLanguageModelStore.java
new file mode 100644
index 00000000000..f7c54722390
--- /dev/null
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/store/rest/ManagedLanguageModelStore.java
@@ -0,0 +1,199 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.solr.languagemodels.store.rest;
+
+import java.lang.invoke.MethodHandles;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import net.jcip.annotations.ThreadSafe;
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.core.SolrResourceLoader;
+import org.apache.solr.languagemodels.LanguageModelException;
+import org.apache.solr.languagemodels.model.SolrLanguageModel;
+import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.rest.BaseSolrResource;
+import org.apache.solr.rest.ManagedResource;
+import org.apache.solr.rest.ManagedResourceStorage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Abstract base class for {@link ManagedResource} wrappers that expose a 
{@link LanguageModelStore}
+ * via the REST API. Concrete subclasses supply the REST endpoint and the 
model instantiation logic.
+ */
+@ThreadSafe
+public abstract class ManagedLanguageModelStore<ModelT extends 
SolrLanguageModel>
+    extends ManagedResource implements ManagedResource.ChildResourceSupport {
+  private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  private static final String MODELS_JSON_FIELD = "models";
+
+  protected static final String CLASS_KEY = "class";
+  protected static final String NAME_KEY = "name";
+  protected static final String PARAMS_KEY = "params";
+
+  private final LanguageModelStore store;
+  private Object managedData;
+
+  protected ManagedLanguageModelStore(
+      String resourceId, SolrResourceLoader loader, 
ManagedResourceStorage.StorageIO storageIO)
+      throws SolrException {
+    super(resourceId, loader, storageIO);
+    store = new LanguageModelStore();
+  }
+
+  /**
+   * Creates a model instance from the JSON map persisted in the managed 
resource storage.
+   *
+   * @param loader the resource loader for the current core
+   * @param modelMap a map containing {@code "class"}, {@code "name"}, and 
{@code "params"} keys
+   * @return the instantiated model
+   */
+  protected abstract ModelT fromModelMap(SolrResourceLoader loader, 
Map<String, Object> modelMap);
+
+  private static LinkedHashMap<String, Object> toModelMap(SolrLanguageModel 
model) {
+    final LinkedHashMap<String, Object> modelMap = new LinkedHashMap<>(3, 
1.0f);
+    modelMap.put(NAME_KEY, model.getName());
+    modelMap.put(CLASS_KEY, model.getModelClassName());
+    modelMap.put(PARAMS_KEY, model.getParams());
+    return modelMap;
+  }
+
+  @Override
+  protected void onManagedDataLoadedFromStorage(NamedList<?> managedInitArgs, 
Object managedData)
+      throws SolrException {
+    store.clear();
+    this.managedData = managedData;
+  }
+
+  public void loadStoredModels() {
+    log.info("------ managed models ~ loading ------");
+    if ((managedData != null) && (managedData instanceof List)) {
+      @SuppressWarnings("unchecked")
+      final List<Map<String, Object>> models = (List<Map<String, Object>>) 
managedData;
+      for (final Map<String, Object> model : models) {
+        addModelFromMap(model);
+      }
+    }
+  }
+
+  private void addModelFromMap(Map<String, Object> modelMap) {
+    try {
+      addModel(fromModelMap(solrResourceLoader, modelMap));
+    } catch (final LanguageModelException e) {
+      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
+    }
+  }
+
+  public void addModel(ModelT model) throws SolrException {
+    try {
+      if (log.isInfoEnabled()) {
+        log.info("adding model {}", model.getName());
+      }
+      store.addModel(model);
+    } catch (final LanguageModelException e) {
+      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
+    }
+  }
+
+  @SuppressWarnings("unchecked")
+  @Override
+  protected Object applyUpdatesToManagedData(Object updates) {
+    if (updates instanceof List) {
+      final List<Map<String, Object>> models = (List<Map<String, Object>>) 
updates;
+      for (final Map<String, Object> model : models) {
+        addModelFromMap(model);
+      }
+    }
+    if (updates instanceof Map) {
+      addModelFromMap((Map<String, Object>) updates);
+    }
+    return modelsAsManagedResources(store.getModels());
+  }
+
+  @Override
+  public void doDeleteChild(BaseSolrResource endpoint, String childId) {
+    store.delete(childId);
+    storeManagedData(applyUpdatesToManagedData(null));
+  }
+
+  @Override
+  public void doGet(BaseSolrResource endpoint, String childId) {
+    final SolrQueryResponse response = endpoint.getSolrResponse();
+    response.add(MODELS_JSON_FIELD, 
modelsAsManagedResources(store.getModels()));
+  }
+
+  public ModelT getModel(String modelName) {
+    return store.getModel(modelName);
+  }
+
+  private static List<Object> modelsAsManagedResources(List<? extends 
SolrLanguageModel> models) {
+    return 
models.stream().map(ManagedLanguageModelStore::toModelMap).collect(Collectors.toList());
+  }
+
+  @Override
+  public String toString() {
+    return getClass().getSimpleName() + " [store=" + store + "]";
+  }
+
+  // Inner Data Structure to deal with Store persistence
+  private class LanguageModelStore {
+
+    private final Map<String, ModelT> availableModels;
+
+    public LanguageModelStore() {
+      availableModels = Collections.synchronizedMap(new LinkedHashMap<>());
+    }
+
+    public ModelT getModel(String name) {
+      return availableModels.get(name);
+    }
+
+    public void clear() {
+      availableModels.clear();
+    }
+
+    public List<ModelT> getModels() {
+      synchronized (availableModels) {
+        final List<ModelT> availableModelsValues = new 
ArrayList<>(availableModels.values());
+        return Collections.unmodifiableList(availableModelsValues);
+      }
+    }
+
+    @Override
+    public String toString() {
+      return "LanguageModelStore [availableModels=" + availableModels.keySet() 
+ "]";
+    }
+
+    public ModelT delete(String modelName) {
+      return availableModels.remove(modelName);
+    }
+
+    public void addModel(ModelT modelData) throws LanguageModelException {
+      final String name = modelData.getName();
+      if (availableModels.putIfAbsent(name, modelData) != null) {
+        throw new LanguageModelException(
+            "model '" + name + "' already exists. Please use a different 
name");
+      }
+    }
+  }
+}
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/store/rest/ManagedTextToVectorModelStore.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/store/rest/ManagedTextToVectorModelStore.java
new file mode 100644
index 00000000000..d0f364062e7
--- /dev/null
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/store/rest/ManagedTextToVectorModelStore.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.solr.languagemodels.store.rest;
+
+import java.util.Map;
+import net.jcip.annotations.ThreadSafe;
+import org.apache.solr.common.SolrException;
+import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.SolrResourceLoader;
+import org.apache.solr.languagemodels.model.SolrTextToVectorModel;
+import org.apache.solr.rest.ManagedResourceObserver;
+import org.apache.solr.rest.ManagedResourceStorage;
+
+/** Managed Resource wrapper for the text-to-vector model store, exposed via 
REST */
+@ThreadSafe
+public class ManagedTextToVectorModelStore
+    extends ManagedLanguageModelStore<SolrTextToVectorModel> {
+
+  /** the model store rest endpoint */
+  public static final String REST_END_POINT = 
"/schema/text-to-vector-model-store";
+
+  public static void registerManagedTextToVectorModelStore(
+      SolrResourceLoader solrResourceLoader, ManagedResourceObserver 
managedResourceObserver) {
+    solrResourceLoader
+        .getManagedResourceRegistry()
+        .registerManagedResource(
+            REST_END_POINT, ManagedTextToVectorModelStore.class, 
managedResourceObserver);
+  }
+
+  public static ManagedTextToVectorModelStore getManagedModelStore(SolrCore 
core) {
+    return (ManagedTextToVectorModelStore) 
core.getRestManager().getManagedResource(REST_END_POINT);
+  }
+
+  @Override
+  @SuppressWarnings("unchecked")
+  protected SolrTextToVectorModel fromModelMap(
+      SolrResourceLoader solrResourceLoader, Map<String, Object> 
textToVectorModel) {
+    return SolrTextToVectorModel.getInstance(
+        solrResourceLoader,
+        (String) textToVectorModel.get(CLASS_KEY), // modelClassName
+        (String) textToVectorModel.get(NAME_KEY), // modelName
+        (Map<String, Object>) textToVectorModel.get(PARAMS_KEY));
+  }
+
+  public ManagedTextToVectorModelStore(
+      String resourceId, SolrResourceLoader loader, 
ManagedResourceStorage.StorageIO storageIO)
+      throws SolrException {
+    super(resourceId, loader, storageIO);
+  }
+}
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/package-info.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/store/rest/package-info.java
similarity index 88%
rename from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/package-info.java
rename to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/store/rest/package-info.java
index 5e79341f992..dd4548c93a5 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/package-info.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/store/rest/package-info.java
@@ -15,5 +15,5 @@
  * limitations under the License.
  */
 
-/** Contains model store related classes. */
-package org.apache.solr.languagemodels.textvectorisation.store;
+/** Contains model store rest related classes. */
+package org.apache.solr.languagemodels.store.rest;
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/TextToVectorModelStore.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/TextToVectorModelStore.java
deleted file mode 100644
index 7d24d25f57e..00000000000
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/TextToVectorModelStore.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.languagemodels.textvectorisation.store;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import 
org.apache.solr.languagemodels.textvectorisation.model.SolrTextToVectorModel;
-
-/** Simple store to manage CRUD operations on the {@link 
SolrTextToVectorModel} */
-public class TextToVectorModelStore {
-
-  private final Map<String, SolrTextToVectorModel> availableModels;
-
-  public TextToVectorModelStore() {
-    availableModels = Collections.synchronizedMap(new LinkedHashMap<>());
-  }
-
-  public SolrTextToVectorModel getModel(String name) {
-    return availableModels.get(name);
-  }
-
-  public void clear() {
-    availableModels.clear();
-  }
-
-  public List<SolrTextToVectorModel> getModels() {
-    synchronized (availableModels) {
-      final List<SolrTextToVectorModel> availableModelsValues =
-          new ArrayList<SolrTextToVectorModel>(availableModels.values());
-      return Collections.unmodifiableList(availableModelsValues);
-    }
-  }
-
-  @Override
-  public String toString() {
-    return "ModelStore [availableModels=" + availableModels.keySet() + "]";
-  }
-
-  public SolrTextToVectorModel delete(String modelName) {
-    return availableModels.remove(modelName);
-  }
-
-  public void addModel(SolrTextToVectorModel modeldata) throws 
TextToVectorModelException {
-    final String name = modeldata.getName();
-    if (availableModels.putIfAbsent(modeldata.getName(), modeldata) != null) {
-      throw new TextToVectorModelException(
-          "model '" + name + "' already exists. Please use a different name");
-    }
-  }
-}
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/rest/ManagedTextToVectorModelStore.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/rest/ManagedTextToVectorModelStore.java
deleted file mode 100644
index 70c03ffc47e..00000000000
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/rest/ManagedTextToVectorModelStore.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.languagemodels.textvectorisation.store.rest;
-
-import java.lang.invoke.MethodHandles;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import net.jcip.annotations.ThreadSafe;
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrResourceLoader;
-import 
org.apache.solr.languagemodels.textvectorisation.model.SolrTextToVectorModel;
-import 
org.apache.solr.languagemodels.textvectorisation.store.TextToVectorModelException;
-import 
org.apache.solr.languagemodels.textvectorisation.store.TextToVectorModelStore;
-import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.rest.BaseSolrResource;
-import org.apache.solr.rest.ManagedResource;
-import org.apache.solr.rest.ManagedResourceObserver;
-import org.apache.solr.rest.ManagedResourceStorage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/** Managed Resource wrapper for the {@link TextToVectorModelStore} to expose 
it via REST */
-@ThreadSafe
-public class ManagedTextToVectorModelStore extends ManagedResource
-    implements ManagedResource.ChildResourceSupport {
-  private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  /** the model store rest endpoint */
-  public static final String REST_END_POINT = 
"/schema/text-to-vector-model-store";
-
-  /** Managed model store: the name of the attribute containing all the models 
of a model store */
-  private static final String MODELS_JSON_FIELD = "models";
-
-  /** name of the attribute containing a class */
-  static final String CLASS_KEY = "class";
-
-  /** name of the attribute containing a name */
-  static final String NAME_KEY = "name";
-
-  /** name of the attribute containing parameters */
-  static final String PARAMS_KEY = "params";
-
-  public static void registerManagedTextToVectorModelStore(
-      SolrResourceLoader solrResourceLoader, ManagedResourceObserver 
managedResourceObserver) {
-    solrResourceLoader
-        .getManagedResourceRegistry()
-        .registerManagedResource(
-            REST_END_POINT, ManagedTextToVectorModelStore.class, 
managedResourceObserver);
-  }
-
-  public static ManagedTextToVectorModelStore getManagedModelStore(SolrCore 
core) {
-    return (ManagedTextToVectorModelStore) 
core.getRestManager().getManagedResource(REST_END_POINT);
-  }
-
-  /**
-   * Returns the available models as a list of Maps objects. After an update 
the managed resources
-   * needs to return the resources in this format in order to store in json 
somewhere (zookeeper,
-   * disk...)
-   *
-   * @return the available models as a list of Maps objects
-   */
-  private static List<Object> 
modelsAsManagedResources(List<SolrTextToVectorModel> models) {
-    return models.stream()
-        .map(ManagedTextToVectorModelStore::toModelMap)
-        .collect(Collectors.toList());
-  }
-
-  @SuppressWarnings("unchecked")
-  public static SolrTextToVectorModel fromModelMap(
-      SolrResourceLoader solrResourceLoader, Map<String, Object> 
embeddingModel) {
-    return SolrTextToVectorModel.getInstance(
-        solrResourceLoader,
-        (String) embeddingModel.get(CLASS_KEY), // modelClassName
-        (String) embeddingModel.get(NAME_KEY), // modelName
-        (Map<String, Object>) embeddingModel.get(PARAMS_KEY));
-  }
-
-  private static LinkedHashMap<String, Object> 
toModelMap(SolrTextToVectorModel model) {
-    final LinkedHashMap<String, Object> modelMap = new LinkedHashMap<>(5, 
1.0f);
-    modelMap.put(NAME_KEY, model.getName());
-    modelMap.put(CLASS_KEY, model.getEmbeddingModelClassName());
-    modelMap.put(PARAMS_KEY, model.getParams());
-    return modelMap;
-  }
-
-  private final TextToVectorModelStore store;
-  private Object managedData;
-
-  public ManagedTextToVectorModelStore(
-      String resourceId, SolrResourceLoader loader, 
ManagedResourceStorage.StorageIO storageIO)
-      throws SolrException {
-    super(resourceId, loader, storageIO);
-    store = new TextToVectorModelStore();
-  }
-
-  @Override
-  protected ManagedResourceStorage createStorage(
-      ManagedResourceStorage.StorageIO storageIO, SolrResourceLoader loader) 
throws SolrException {
-    return new ManagedResourceStorage.JsonStorage(storageIO, loader, -1);
-  }
-
-  @Override
-  protected void onManagedDataLoadedFromStorage(NamedList<?> managedInitArgs, 
Object managedData)
-      throws SolrException {
-    store.clear();
-    this.managedData = managedData;
-  }
-
-  public void loadStoredModels() {
-    log.info("------ managed models ~ loading ------");
-
-    if ((managedData != null) && (managedData instanceof List)) {
-      @SuppressWarnings({"unchecked"})
-      final List<Map<String, Object>> textToVectorModels = (List<Map<String, 
Object>>) managedData;
-      for (final Map<String, Object> textToVectorModel : textToVectorModels) {
-        addModelFromMap(textToVectorModel);
-      }
-    }
-  }
-
-  private void addModelFromMap(Map<String, Object> modelMap) {
-    try {
-      addModel(fromModelMap(solrResourceLoader, modelMap));
-    } catch (final TextToVectorModelException e) {
-      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
-    }
-  }
-
-  public void addModel(SolrTextToVectorModel model) throws 
TextToVectorModelException {
-    try {
-      if (log.isInfoEnabled()) {
-        log.info("adding model {}", model.getName());
-      }
-      store.addModel(model);
-    } catch (final TextToVectorModelException e) {
-      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
-    }
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  protected Object applyUpdatesToManagedData(Object updates) {
-    if (updates instanceof List) {
-      final List<Map<String, Object>> textToVectorModels = (List<Map<String, 
Object>>) updates;
-      for (final Map<String, Object> textToVectorModel : textToVectorModels) {
-        addModelFromMap(textToVectorModel);
-      }
-    }
-
-    if (updates instanceof Map) {
-      final Map<String, Object> map = (Map<String, Object>) updates;
-      addModelFromMap(map);
-    }
-
-    return modelsAsManagedResources(store.getModels());
-  }
-
-  @Override
-  public void doDeleteChild(BaseSolrResource endpoint, String childId) {
-    store.delete(childId);
-    storeManagedData(applyUpdatesToManagedData(null));
-  }
-
-  /**
-   * Called to retrieve a named part (the given childId) of the resource at 
the given endpoint.
-   * Note: since we have a unique child managed store we ignore the childId.
-   */
-  @Override
-  public void doGet(BaseSolrResource endpoint, String childId) {
-    final SolrQueryResponse response = endpoint.getSolrResponse();
-    response.add(MODELS_JSON_FIELD, 
modelsAsManagedResources(store.getModels()));
-  }
-
-  public SolrTextToVectorModel getModel(String modelName) {
-    return store.getModel(modelName);
-  }
-
-  @Override
-  public String toString() {
-    return "ManagedModelStore [store=" + store + "]";
-  }
-}
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/rest/package-info.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/rest/package-info.java
deleted file mode 100644
index ca70f6d9611..00000000000
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/store/rest/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/** Contains the {@link org.apache.solr.rest.ManagedResource} that encapsulate 
the model stores. */
-package org.apache.solr.languagemodels.textvectorisation.store.rest;
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessor.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/TextToVectorUpdateProcessor.java
similarity index 93%
rename from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessor.java
rename to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/TextToVectorUpdateProcessor.java
index 116b4ba125b..44c75988e7f 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessor.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/TextToVectorUpdateProcessor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.solr.languagemodels.textvectorisation.update.processor;
+package org.apache.solr.languagemodels.update.processor;
 
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
@@ -23,7 +23,7 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.SolrInputField;
-import 
org.apache.solr.languagemodels.textvectorisation.model.SolrTextToVectorModel;
+import org.apache.solr.languagemodels.model.SolrTextToVectorModel;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
@@ -32,7 +32,7 @@ import 
org.apache.solr.update.processor.UpdateRequestProcessor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-class TextToVectorUpdateProcessor extends UpdateRequestProcessor {
+public class TextToVectorUpdateProcessor extends UpdateRequestProcessor {
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   private IndexSchema schema;
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessorFactory.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactory.java
similarity index 94%
rename from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessorFactory.java
rename to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactory.java
index f89766337ae..f8c35906093 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessorFactory.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactory.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.solr.languagemodels.textvectorisation.update.processor;
+package org.apache.solr.languagemodels.update.processor.factory;
 
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.RequiredSolrParams;
@@ -23,8 +23,9 @@ import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
-import 
org.apache.solr.languagemodels.textvectorisation.model.SolrTextToVectorModel;
-import 
org.apache.solr.languagemodels.textvectorisation.store.rest.ManagedTextToVectorModelStore;
+import org.apache.solr.languagemodels.model.SolrTextToVectorModel;
+import org.apache.solr.languagemodels.store.rest.ManagedTextToVectorModelStore;
+import 
org.apache.solr.languagemodels.update.processor.TextToVectorUpdateProcessor;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.rest.ManagedResource;
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/search/package-info.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/package-info.java
similarity index 85%
rename from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/search/package-info.java
rename to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/package-info.java
index 04aebea7789..94a7cf8104b 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/search/package-info.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/package-info.java
@@ -15,5 +15,5 @@
  * limitations under the License.
  */
 
-/** APIs and classes for implementing text to vector QueryParsers. */
-package org.apache.solr.languagemodels.textvectorisation.search;
+/** Contains update request processor factories. */
+package org.apache.solr.languagemodels.update.processor.factory;
diff --git 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/update/processor/package-info.java
 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/package-info.java
similarity index 91%
rename from 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/update/processor/package-info.java
rename to 
solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/package-info.java
index 877a4fa081b..c3d500fbec5 100644
--- 
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/textvectorisation/update/processor/package-info.java
+++ 
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/package-info.java
@@ -16,4 +16,4 @@
  */
 
 /** Contains update request processor related classes. */
-package org.apache.solr.languagemodels.textvectorisation.update.processor;
+package org.apache.solr.languagemodels.update.processor;
diff --git 
a/solr/modules/language-models/src/test-files/modelExamples/dummy-model.json 
b/solr/modules/language-models/src/test-files/modelExamples/dummy-model.json
deleted file mode 100644
index 115766e8612..00000000000
--- a/solr/modules/language-models/src/test-files/modelExamples/dummy-model.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "class": 
"org.apache.solr.languagemodels.textvectorisation.model.DummyEmbeddingModel",
-  "name": "dummy-1",
-  "params": {
-    "embedding": [1.0, 2.0, 3.0, 4.0]
-  }
-}
diff --git 
a/solr/modules/language-models/src/test-files/modelExamples/exception-throwing-model.json
 
b/solr/modules/language-models/src/test-files/modelExamples/exception-throwing-model.json
deleted file mode 100644
index 76e704f3ac4..00000000000
--- 
a/solr/modules/language-models/src/test-files/modelExamples/exception-throwing-model.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "class": 
"org.apache.solr.languagemodels.textvectorisation.model.ExceptionThrowingEmbeddingModel",
-  "name": "exception-throwing-model",
-  "params": {
-  }
-}
diff --git 
a/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models-query-parser-only.xml
 
b/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models-query-parser-only.xml
index 80054a9775a..5da6c14c04e 100644
--- 
a/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models-query-parser-only.xml
+++ 
b/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models-query-parser-only.xml
@@ -23,7 +23,7 @@
 
  <!-- Query parser used to run vector search queries-->
  <queryParser name="knn_text_to_vector"
-  
class="org.apache.solr.languagemodels.textvectorisation.search.TextToVectorQParserPlugin"
 />
+  class="org.apache.solr.languagemodels.search.TextToVectorQParserPlugin" />
 
  <query>
   <filterCache class="solr.CaffeineCache" size="4096"
diff --git 
a/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models-update-request-processor-only.xml
 
b/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models-update-request-processor-only.xml
index 664019200dc..1673199a1d2 100644
--- 
a/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models-update-request-processor-only.xml
+++ 
b/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models-update-request-processor-only.xml
@@ -51,7 +51,7 @@
  </requestHandler>
 
  <updateRequestProcessorChain name="textToVector">
-  <processor 
class="solr.languagemodels.textvectorisation.update.processor.TextToVectorUpdateProcessorFactory">
+  <processor 
class="solr.languagemodels.update.processor.factory.TextToVectorUpdateProcessorFactory">
    <str name="inputField">_text_</str>
    <str name="outputField">vector</str>
    <str name="model">dummy-1</str>
diff --git 
a/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models.xml
 
b/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models.xml
index e910d911826..3910f769a69 100644
--- 
a/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models.xml
+++ 
b/solr/modules/language-models/src/test-files/solr/collection1/conf/solrconfig-language-models.xml
@@ -23,7 +23,7 @@
 
  <!-- Query parser used to run vector search queries-->
  <queryParser name="knn_text_to_vector"
-  
class="org.apache.solr.languagemodels.textvectorisation.search.TextToVectorQParserPlugin"
 />
+  class="org.apache.solr.languagemodels.search.TextToVectorQParserPlugin" />
 
  <query>
   <filterCache class="solr.CaffeineCache" size="4096"
@@ -55,7 +55,7 @@
  </requestHandler>
 
  <updateRequestProcessorChain name="textToVector">
-  <processor 
class="solr.languagemodels.textvectorisation.update.processor.TextToVectorUpdateProcessorFactory">
+  <processor 
class="solr.languagemodels.update.processor.factory.TextToVectorUpdateProcessorFactory">
    <str name="inputField">_text_</str>
    <str name="outputField">vector</str>
    <str name="model">dummy-1</str>
@@ -64,7 +64,7 @@
  </updateRequestProcessorChain>
 
  <updateRequestProcessorChain name="failingTextToVector">
-  <processor 
class="solr.languagemodels.textvectorisation.update.processor.TextToVectorUpdateProcessorFactory">
+  <processor 
class="solr.languagemodels.update.processor.factory.TextToVectorUpdateProcessorFactory">
    <str name="inputField">_text_</str>
    <str name="outputField">vector</str>
    <str name="model">exception-throwing-model</str>
@@ -73,7 +73,7 @@
  </updateRequestProcessorChain>
 
   <updateRequestProcessorChain name="textToVectorStoredInputField">
-    <processor 
class="solr.languagemodels.textvectorisation.update.processor.TextToVectorUpdateProcessorFactory">
+    <processor 
class="solr.languagemodels.update.processor.factory.TextToVectorUpdateProcessorFactory">
       <str name="inputField">string_field</str>
       <str name="outputField">vector</str>
       <str name="model">dummy-1</str>
@@ -83,7 +83,7 @@
 
   <updateRequestProcessorChain name="textToVectorForPartialUpdates">
     <processor class="solr.DistributedUpdateProcessorFactory"/>
-    <processor 
class="solr.languagemodels.textvectorisation.update.processor.TextToVectorUpdateProcessorFactory">
+    <processor 
class="solr.languagemodels.update.processor.factory.TextToVectorUpdateProcessorFactory">
       <str name="inputField">string_field</str>
       <str name="outputField">vector</str>
       <str name="model">dummy-1</str>
diff --git 
a/solr/modules/language-models/src/test-files/modelExamples/cohere-model.json 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/cohere-model.json
similarity index 100%
rename from 
solr/modules/language-models/src/test-files/modelExamples/cohere-model.json
rename to 
solr/modules/language-models/src/test-files/textToVectorModelExamples/cohere-model.json
diff --git 
a/solr/modules/language-models/src/test-files/modelExamples/dummy-model-ambiguous.json
 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/dummy-model-ambiguous.json
similarity index 53%
rename from 
solr/modules/language-models/src/test-files/modelExamples/dummy-model-ambiguous.json
rename to 
solr/modules/language-models/src/test-files/textToVectorModelExamples/dummy-model-ambiguous.json
index c9fb4dc48db..48403b6b349 100644
--- 
a/solr/modules/language-models/src/test-files/modelExamples/dummy-model-ambiguous.json
+++ 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/dummy-model-ambiguous.json
@@ -1,5 +1,5 @@
 {
-  "class": 
"org.apache.solr.languagemodels.textvectorisation.model.DummyEmbeddingModel",
+  "class": "org.apache.solr.languagemodels.model.DummyEmbeddingModel",
   "name": "dummy-1",
   "params": {
     "embedding": [1.0, 2.0, 3.0, 4.0],
diff --git 
a/solr/modules/language-models/src/test-files/modelExamples/dummy-model-unsupported.json
 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/dummy-model-unsupported.json
similarity index 53%
rename from 
solr/modules/language-models/src/test-files/modelExamples/dummy-model-unsupported.json
rename to 
solr/modules/language-models/src/test-files/textToVectorModelExamples/dummy-model-unsupported.json
index cddbacfdac3..1df1e351c94 100644
--- 
a/solr/modules/language-models/src/test-files/modelExamples/dummy-model-unsupported.json
+++ 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/dummy-model-unsupported.json
@@ -1,5 +1,5 @@
 {
-  "class": 
"org.apache.solr.languagemodels.textvectorisation.model.DummyEmbeddingModel",
+  "class": "org.apache.solr.languagemodels.model.DummyEmbeddingModel",
   "name": "dummy-1",
   "params": {
     "embedding": [1.0, 2.0, 3.0, 4.0],
diff --git 
a/solr/modules/language-models/src/test-files/textToVectorModelExamples/dummy-model.json
 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/dummy-model.json
new file mode 100644
index 00000000000..8ce8f53de94
--- /dev/null
+++ 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/dummy-model.json
@@ -0,0 +1,7 @@
+{
+  "class": "org.apache.solr.languagemodels.model.DummyEmbeddingModel",
+  "name": "dummy-1",
+  "params": {
+    "embedding": [1.0, 2.0, 3.0, 4.0]
+  }
+}
diff --git 
a/solr/modules/language-models/src/test-files/textToVectorModelExamples/exception-throwing-model.json
 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/exception-throwing-model.json
new file mode 100644
index 00000000000..c0ef1aeedd8
--- /dev/null
+++ 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/exception-throwing-model.json
@@ -0,0 +1,6 @@
+{
+  "class": 
"org.apache.solr.languagemodels.model.ExceptionThrowingEmbeddingModel",
+  "name": "exception-throwing-model",
+  "params": {
+  }
+}
diff --git 
a/solr/modules/language-models/src/test-files/modelExamples/huggingface-model.json
 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/huggingface-model.json
similarity index 100%
rename from 
solr/modules/language-models/src/test-files/modelExamples/huggingface-model.json
rename to 
solr/modules/language-models/src/test-files/textToVectorModelExamples/huggingface-model.json
diff --git 
a/solr/modules/language-models/src/test-files/modelExamples/mistralai-model.json
 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/mistralai-model.json
similarity index 100%
rename from 
solr/modules/language-models/src/test-files/modelExamples/mistralai-model.json
rename to 
solr/modules/language-models/src/test-files/textToVectorModelExamples/mistralai-model.json
diff --git 
a/solr/modules/language-models/src/test-files/modelExamples/openai-model.json 
b/solr/modules/language-models/src/test-files/textToVectorModelExamples/openai-model.json
similarity index 100%
rename from 
solr/modules/language-models/src/test-files/modelExamples/openai-model.json
rename to 
solr/modules/language-models/src/test-files/textToVectorModelExamples/openai-model.json
diff --git 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/TestLanguageModelBase.java
 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/TestLanguageModelBase.java
index a54e8e1875d..f555f2e3b97 100644
--- 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/TestLanguageModelBase.java
+++ 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/TestLanguageModelBase.java
@@ -26,7 +26,7 @@ import java.util.Arrays;
 import java.util.List;
 import org.apache.commons.io.file.PathUtils;
 import org.apache.solr.common.SolrInputDocument;
-import 
org.apache.solr.languagemodels.textvectorisation.store.rest.ManagedTextToVectorModelStore;
+import org.apache.solr.languagemodels.store.rest.ManagedTextToVectorModelStore;
 import org.apache.solr.util.RestTestBase;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,11 +38,12 @@ public class TestLanguageModelBase extends RestTestBase {
   protected static Path tmpSolrHome;
   protected static Path tmpConfDir;
 
-  public static final String MODEL_FILE_NAME = 
"_schema_text-to-vector-model-store.json";
+  public static final String TEXT_TO_VECTOR_MODEL_FILE_NAME =
+      "_schema_text-to-vector-model-store.json";
   protected static final String COLLECTION = "collection1";
   protected static final String CONF_DIR = COLLECTION + "/conf";
 
-  protected static Path embeddingModelStoreFile = null;
+  protected static Path textToVectorModelStoreFile = null;
 
   protected static String IDField = "id";
   protected static String vectorField = "vector";
@@ -61,17 +62,17 @@ public class TestLanguageModelBase extends RestTestBase {
     tmpSolrHome = createTempDir();
     tmpConfDir = tmpSolrHome.resolve(CONF_DIR);
     PathUtils.copyDirectory(TEST_PATH(), tmpSolrHome.toAbsolutePath());
-    final Path modelStore = tmpConfDir.resolve(MODEL_FILE_NAME);
+    final Path textToVectorStore = 
tmpConfDir.resolve(TEXT_TO_VECTOR_MODEL_FILE_NAME);
 
     if (isPersistent) {
-      embeddingModelStoreFile = modelStore;
+      textToVectorModelStoreFile = textToVectorStore;
     }
 
-    if (Files.exists(modelStore)) {
+    if (Files.exists(textToVectorStore)) {
       if (log.isInfoEnabled()) {
-        log.info("remove model store config file in {}", 
modelStore.toAbsolutePath());
+        log.info("remove model store config file in {}", 
textToVectorStore.toAbsolutePath());
       }
-      Files.delete(modelStore);
+      Files.delete(textToVectorStore);
     }
 
     System.setProperty("managed.schema.mutable", "true");
@@ -87,7 +88,8 @@ public class TestLanguageModelBase extends RestTestBase {
   }
 
   public static void loadModel(String fileName, String status) throws 
Exception {
-    final URL url = TestLanguageModelBase.class.getResource("/modelExamples/" 
+ fileName);
+    final URL url =
+        TestLanguageModelBase.class.getResource("/textToVectorModelExamples/" 
+ fileName);
     final String multipleModels = Files.readString(Path.of(url.toURI()), 
StandardCharsets.UTF_8);
 
     assertJPut(
@@ -97,7 +99,8 @@ public class TestLanguageModelBase extends RestTestBase {
   }
 
   public static void loadModel(String fileName) throws Exception {
-    final URL url = TestLanguageModelBase.class.getResource("/modelExamples/" 
+ fileName);
+    final URL url =
+        TestLanguageModelBase.class.getResource("/textToVectorModelExamples/" 
+ fileName);
     final String multipleModels = Files.readString(Path.of(url.toURI()), 
StandardCharsets.UTF_8);
 
     assertJPut(
diff --git 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/model/DummyEmbeddingModel.java
 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/model/DummyEmbeddingModel.java
similarity index 97%
rename from 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/model/DummyEmbeddingModel.java
rename to 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/model/DummyEmbeddingModel.java
index cbb966348f0..bb813537b52 100644
--- 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/model/DummyEmbeddingModel.java
+++ 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/model/DummyEmbeddingModel.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.model;
+package org.apache.solr.languagemodels.model;
 
 import dev.langchain4j.data.embedding.Embedding;
 import dev.langchain4j.data.segment.TextSegment;
diff --git 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/model/DummyEmbeddingModelTest.java
 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/model/DummyEmbeddingModelTest.java
similarity index 96%
rename from 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/model/DummyEmbeddingModelTest.java
rename to 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/model/DummyEmbeddingModelTest.java
index 0948af705eb..7515e0dc3dd 100644
--- 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/model/DummyEmbeddingModelTest.java
+++ 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/model/DummyEmbeddingModelTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.model;
+package org.apache.solr.languagemodels.model;
 
 import org.apache.solr.SolrTestCase;
 import org.junit.Test;
diff --git 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/model/ExceptionThrowingEmbeddingModel.java
 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/model/ExceptionThrowingEmbeddingModel.java
similarity index 96%
rename from 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/model/ExceptionThrowingEmbeddingModel.java
rename to 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/model/ExceptionThrowingEmbeddingModel.java
index c0c3b52bf39..01eca396381 100644
--- 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/model/ExceptionThrowingEmbeddingModel.java
+++ 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/model/ExceptionThrowingEmbeddingModel.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.model;
+package org.apache.solr.languagemodels.model;
 
 import dev.langchain4j.data.embedding.Embedding;
 import dev.langchain4j.data.segment.TextSegment;
diff --git 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/search/TextToVectorQParserTest.java
 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/search/TextToVectorQParserTest.java
similarity index 99%
rename from 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/search/TextToVectorQParserTest.java
rename to 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/search/TextToVectorQParserTest.java
index 95395c18565..3f0b0a1f0c6 100644
--- 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/search/TextToVectorQParserTest.java
+++ 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/search/TextToVectorQParserTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.search;
+package org.apache.solr.languagemodels.search;
 
 import java.util.Arrays;
 import java.util.Locale;
diff --git 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/store/rest/TestManagedModelStoreInitialization.java
 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/store/rest/TestManagedLanguageModelStoreInitialization.java
similarity index 94%
rename from 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/store/rest/TestManagedModelStoreInitialization.java
rename to 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/store/rest/TestManagedLanguageModelStoreInitialization.java
index 244094b8764..4b414a18de6 100644
--- 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/store/rest/TestManagedModelStoreInitialization.java
+++ 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/store/rest/TestManagedLanguageModelStoreInitialization.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.store.rest;
+package org.apache.solr.languagemodels.store.rest;
 
 import org.apache.solr.languagemodels.TestLanguageModelBase;
 import org.junit.After;
 import org.junit.Test;
 
-public class TestManagedModelStoreInitialization extends TestLanguageModelBase 
{
+public class TestManagedLanguageModelStoreInitialization extends 
TestLanguageModelBase {
 
   @After
   public void cleanUp() throws Exception {
diff --git 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/store/rest/TestModelManager.java
 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/store/rest/TestModelManager.java
similarity index 98%
rename from 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/store/rest/TestModelManager.java
rename to 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/store/rest/TestModelManager.java
index 66b48884854..b3dd51a5944 100644
--- 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/store/rest/TestModelManager.java
+++ 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/store/rest/TestModelManager.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.store.rest;
+package org.apache.solr.languagemodels.store.rest;
 
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.languagemodels.TestLanguageModelBase;
-import 
org.apache.solr.languagemodels.textvectorisation.search.TextToVectorQParserPlugin;
+import org.apache.solr.languagemodels.search.TextToVectorQParserPlugin;
 import org.apache.solr.rest.ManagedResource;
 import org.apache.solr.rest.ManagedResourceStorage;
 import org.apache.solr.rest.RestManager;
diff --git 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/store/rest/TestModelManagerPersistence.java
 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/store/rest/TestModelManagerPersistence.java
similarity index 89%
rename from 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/store/rest/TestModelManagerPersistence.java
rename to 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/store/rest/TestModelManagerPersistence.java
index 92e8b68244e..21f8ba4b6dc 100644
--- 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/store/rest/TestModelManagerPersistence.java
+++ 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/store/rest/TestModelManagerPersistence.java
@@ -14,13 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.store.rest;
+package org.apache.solr.languagemodels.store.rest;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import org.apache.solr.common.util.Utils;
 import org.apache.solr.languagemodels.TestLanguageModelBase;
 import org.junit.After;
 import org.junit.Before;
@@ -38,15 +33,6 @@ public class TestModelManagerPersistence extends 
TestLanguageModelBase {
     afterTest();
   }
 
-  @Test
-  public void testModelAreStoredCompact() throws Exception {
-    loadModel("cohere-model.json");
-
-    final String JSONOnDisk = Files.readString(embeddingModelStoreFile, 
StandardCharsets.UTF_8);
-    Object objectFromDisk = Utils.fromJSONString(JSONOnDisk);
-    assertEquals(new String(Utils.toJSON(objectFromDisk, -1), UTF_8), 
JSONOnDisk);
-  }
-
   @Test
   public void testModelStorePersistence() throws Exception {
     // check models are empty
diff --git 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessorTest.java
 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/update/processor/TextToVectorUpdateProcessorTest.java
similarity index 98%
rename from 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessorTest.java
rename to 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/update/processor/TextToVectorUpdateProcessorTest.java
index 2dd9cda1a58..75a9f206f14 100644
--- 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessorTest.java
+++ 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/update/processor/TextToVectorUpdateProcessorTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.update.processor;
+package org.apache.solr.languagemodels.update.processor;
 
 import java.io.IOException;
 import java.util.Map;
@@ -24,7 +24,7 @@ import org.apache.solr.client.solrj.request.SolrQuery;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.languagemodels.TestLanguageModelBase;
-import 
org.apache.solr.languagemodels.textvectorisation.store.rest.ManagedTextToVectorModelStore;
+import org.apache.solr.languagemodels.store.rest.ManagedTextToVectorModelStore;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
diff --git 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessorFactoryTest.java
 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactoryTest.java
similarity index 96%
rename from 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessorFactoryTest.java
rename to 
solr/modules/language-models/src/test/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactoryTest.java
index 5ccb9d95e60..02617c64636 100644
--- 
a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessorFactoryTest.java
+++ 
b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactoryTest.java
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.languagemodels.textvectorisation.update.processor;
+package org.apache.solr.languagemodels.update.processor.factory;
 
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.languagemodels.TestLanguageModelBase;
-import 
org.apache.solr.languagemodels.textvectorisation.model.SolrTextToVectorModel;
-import 
org.apache.solr.languagemodels.textvectorisation.store.rest.ManagedTextToVectorModelStore;
+import org.apache.solr.languagemodels.model.SolrTextToVectorModel;
+import org.apache.solr.languagemodels.store.rest.ManagedTextToVectorModelStore;
 import org.apache.solr.request.SolrQueryRequestBase;
 import org.apache.solr.update.processor.UpdateRequestProcessor;
 import org.junit.After;
diff --git 
a/solr/solr-ref-guide/modules/configuration-guide/pages/update-request-processors.adoc
 
b/solr/solr-ref-guide/modules/configuration-guide/pages/update-request-processors.adoc
index 4d67da15241..e1863246267 100644
--- 
a/solr/solr-ref-guide/modules/configuration-guide/pages/update-request-processors.adoc
+++ 
b/solr/solr-ref-guide/modules/configuration-guide/pages/update-request-processors.adoc
@@ -423,7 +423,7 @@ See the README files associated with each module for 
details:
 
 The {solr-javadocs}/modules/language-models/index.html[`language-models`] 
module provides::
 
-{solr-javadocs}/modules/language-models/org/apache/solr/languagemodels/textvectorisation/update/processor/TextToVectorUpdateProcessorFactory.html[TextToVectorUpdateProcessorFactory]::
 Update processor which vectorises a textual field in input and adds the 
resulting vector as the value of a new field.
+{solr-javadocs}/modules/language-models/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactory.html[TextToVectorUpdateProcessorFactory]::
 Update processor which vectorises a textual field in input and adds the 
resulting vector as the value of a new field.
 It uses external text to vectors language models to perform the vectorisation 
for each processed document.
 For more information: xref:query-guide:text-to-vector.adoc[Update Request 
Processor]
 
diff --git a/solr/solr-ref-guide/modules/query-guide/pages/text-to-vector.adoc 
b/solr/solr-ref-guide/modules/query-guide/pages/text-to-vector.adoc
index aafafd861fb..7e3843230cf 100644
--- a/solr/solr-ref-guide/modules/query-guide/pages/text-to-vector.adoc
+++ b/solr/solr-ref-guide/modules/query-guide/pages/text-to-vector.adoc
@@ -85,7 +85,7 @@ See xref:configuration-guide:solr-modules.adoc[Solr Module] 
for more details.
 [source,xml]
 ----
 <updateRequestProcessorChain name="textToVector">
-  <processor 
class="solr.languagemodels.textvectorisation.update.processor.TextToVectorUpdateProcessorFactory">
+  <processor 
class="solr.languagemodels.update.processor.factory.TextToVectorUpdateProcessorFactory">
    <str name="inputField">_text_</str>
    <str name="outputField">vector</str>
    <str name="model">dummy-1</str>
@@ -97,7 +97,7 @@ See xref:configuration-guide:solr-modules.adoc[Solr Module] 
for more details.
 +
 [source,xml]
 ----
-<queryParser name="knn_text_to_vector" 
class="org.apache.solr.languagemodels.textvectorisation.search.TextToVectorQParserPlugin"/>
+<queryParser name="knn_text_to_vector" 
class="org.apache.solr.languagemodels.search.TextToVectorQParserPlugin"/>
 ----
 
 [NOTE]
@@ -301,7 +301,7 @@ To vectorise textual fields of your documents at indexing 
time you need to confi
 [source,xml]
 ----
 <updateRequestProcessorChain name="textToVector">
-  <processor 
class="solr.languagemodels.textvectorisation.update.processor.TextToVectorUpdateProcessorFactory">
+  <processor 
class="solr.languagemodels.update.processor.factory.TextToVectorUpdateProcessorFactory">
    <str name="inputField">_text_</str>
    <str name="outputField">vector</str>
    <str name="model">dummy-1</str>
@@ -355,7 +355,7 @@ This can be done in Solr defining two update request 
processors chains: one that
   <processor class="solr.processorN">
    ...
   </processor>
-<processor 
class="solr.languagemodels.textvectorisation.update.processor.TextToVectorUpdateProcessorFactory">
+<processor 
class="solr.languagemodels.update.processor.factory.TextToVectorUpdateProcessorFactory">
    <str name="inputField">_text_</str>
    <str name="outputField">vector</str>
    <str name="model">dummy-1</str>
@@ -394,7 +394,7 @@ You still define two chains, but this time the 
'vectorisation' one only includes
 ----
 <updateRequestProcessorChain name="vectorisation">
   <processor class="solr.DistributedUpdateProcessorFactory"/>
-  <processor 
class="solr.languagemodels.textvectorisation.update.processor.TextToVectorUpdateProcessorFactory">
+  <processor 
class="solr.languagemodels.update.processor.factory.TextToVectorUpdateProcessorFactory">
    <str name="inputField">_text_</str>
    <str name="outputField">vector</str>
    <str name="model">dummy-1</str>
@@ -434,9 +434,10 @@ Faceting or querying on the boolean 'vectorised' field can 
also give you a quick
 
 === Running a Text-to-Vector Query
 Before running a Text-to-Vector query, ensure that the `knn_text_to_vector` 
query parser is declared in `solrconfig.xml`:
+
 [source,xml]
 ----
-<queryParser name="knn_text_to_vector" 
class="org.apache.solr.languagemodels.textvectorisation.search.TextToVectorQParserPlugin"/>
+<queryParser name="knn_text_to_vector" 
class="org.apache.solr.languagemodels.search.TextToVectorQParserPlugin"/>
 ----
 
 To run a query that vectorises your query text, using a model you previously 
uploaded is simple:

Reply via email to