Generative and reranker models
Visit the Vectorizer and vector config guide to find out how to configure an embedding model for your collection or to fine-tune the vector index settings.
Specify a reranker model integration
Configure a reranker
model integration for reranking retrieved results.
- Python Client v4
- Python Client v3
- JS/TS Client v3
- JS/TS Client v2
- Go
from weaviate.classes.config import Configure, Property, DataType
client.collections.create(
"Article",
vectorizer_config=Configure.Vectorizer.text2vec_openai(),
reranker_config=Configure.Reranker.cohere()
)
class_obj = {
"class": "Article",
"vectorizer": "text2vec-openai", # set your vectorizer module
"moduleConfig": {
"reranker-cohere": {} # set your reranker module
}
}
client.schema.create_class(class_obj)
import { vectorizer, reranker } from 'weaviate-client';
await client.collections.create({
name: 'Article',
vectorizers: vectorizer.text2VecOpenAI(),
reranker: reranker.cohere(),
})
const classWithReranker = {
class: 'Article',
properties: [
{
name: 'title',
dataType: ['text'],
},
],
vectorizer: 'text2vec-openai', // this could be any vectorizer
moduleConfig: {
'reranker-cohere': {}, // set your reranker module
},
};
// Add the class to the schema
result = await client.schema.classCreator().withClass(classWithReranker).do();
articleClass := &models.Class{
Class: "Article",
Description: "Collection of articles",
Vectorizer: "text2vec-openai",
ModuleConfig: map[string]interface{}{
"reranker-cohere": map[string]interface{}{
"model": "rerank-v3.5",
},
},
}
Update the reranker model integration
v1.25.23
, v1.26.8
and v1.27.1
The reranker
and generative
configurations are mutable from v1.25.23
, v1.26.8
and v1.27.1
.
Update the reranker
model integration for reranking retrieved results.
- Python Client v4
- Python Client v3
- JS/TS Client v3
- JS/TS Client v2
- Go
from weaviate.classes.config import Reconfigure
collection = client.collections.get("Article")
collection.config.update(
reranker_config=Reconfigure.Reranker.cohere() # Update the reranker module
)
class_obj = {
"moduleConfig": {
"reranker-cohere": {} # Update your reranker module
}
}
client.schema.update_config("Article", class_obj)
import { reconfigure } from 'weaviate-client';
const collection = client.collections.get('Article')
await collection.config.update({
reranker: reconfigure.reranker.cohere() // Update the reranker module
})
// Collection definition updates are not available in the v2 API.
// Consider upgrading to the v3 API, or deleting and recreating the collection.
updatedArticleClassConfig := &models.Class{
// Note: The new collection config must be provided in full,
// including the configuration that is not being updated.
// We suggest using the original class config as a starting point.
Class: "Article",
ModuleConfig: map[string]interface{}{
"reranker-cohere": map[string]interface{}{
"model": "rerank-v3.5",
},
},
}
Specify a generative model integration
Specify a generative
model integration for a collection (for RAG).
- Python Client v4
- Python Client v3
- JS/TS Client v3
- JS/TS Client v2
- Go
- Java
from weaviate.classes.config import Configure, Property, DataType
client.collections.create(
"Article",
vectorizer_config=Configure.Vectorizer.text2vec_openai(),
generative_config=Configure.Generative.openai(
model="gpt-4o" # set your generative model (optional parameter)
),
)
class_obj = {
"class": "Article",
"vectorizer": "text2vec-openai", # set your vectorizer module
"moduleConfig": {
"generative-openai": {
"model": "gpt-4o" # set your generative model (optional parameter)
}
}
}
client.schema.create_class(class_obj)
import { vectorizer, generative } from 'weaviate-client';
await client.collections.create({
name: 'Article',
vectorizers: vectorizer.text2VecOpenAI(),
generative: generative.openAI({
model: "gpt-4o" // set your generative model (optional parameter)
}),
})
const classWithGenerative = {
class: 'Article',
properties: [
{
name: 'title',
dataType: ['text'],
},
],
vectorizer: 'text2vec-openai', // this could be any vectorizer
moduleConfig: {
'generative-openai': {
model: 'gpt-4o' // set your generative model (optional parameter)
},
},
};
// Add the class to the schema
result = await client.schema.classCreator().withClass(classWithGenerative).do();
articleClass := &models.Class{
Class: "Article",
Description: "Collection of articles",
Vectorizer: "text2vec-openai",
ModuleConfig: map[string]interface{}{
"generative-openai": map[string]interface{}{
"model": "gpt-4o",
},
},
}
// Configure OpenAI text2vec module settings
Map<String, Object> text2vecOpenAI = new HashMap<>();
Map<String, Object> text2vecOpenAISettings = new HashMap<>();
text2vecOpenAISettings.put("model", "text-embedding-3-small"); // or your preferred embedding model
text2vecOpenAI.put("text2vec-openai", text2vecOpenAISettings);
// Configure OpenAI generative module settings
Map<String, Object> generativeOpenAI = new HashMap<>();
Map<String, Object> generativeOpenAISettings = new HashMap<>();
generativeOpenAISettings.put("model", "gpt-4");
generativeOpenAI.put("generative-openai", generativeOpenAISettings);
// Combine module configurations
Map<String, Object> moduleConfig = new HashMap<>();
moduleConfig.put("text2vec-openai", text2vecOpenAI);
moduleConfig.put("generative-openai", generativeOpenAI);
// Create the Article collection with vectorizer and generative configuration
WeaviateClass articleCollection = WeaviateClass.builder()
.className(collectionName)
.vectorizer("text2vec-openai") // Set the vectorizer
.moduleConfig(moduleConfig) // Set both vectorizer and generative configs
.build();
// Add the collection to the schema
Result<Boolean> result = client.schema().classCreator()
.withClass(articleCollection)
.run();
Update the generative model integration
v1.25.23
, v1.26.8
and v1.27.1
The reranker
and generative
configurations are mutable from v1.25.23
, v1.26.8
and v1.27.1
.
Update a generative
model integration.
- Python Client v4
- Python Client v3
- JS/TS Client v3
- JS/TS Client v2
- Go
from weaviate.classes.config import Reconfigure
collection = client.collections.get("Article")
collection.config.update(
generative_config=Reconfigure.Generative.cohere() # Update the generative module
)
class_obj = {
"class": "Article",
"moduleConfig": {
"generative-cohere": {} # Update your generative module
}
}
client.schema.update_config("Article", class_obj)
import { reconfigure } from 'weaviate-client';
const collection = client.collections.get("Article")
await collection.config.update({
generative: weaviate.reconfigure.generative.cohere() // Update the generative module
})
// Collection definition updates are not available in the v2 API.
// Consider upgrading to the v3 API, or deleting and recreating the collection.
updatedArticleClassConfig := &models.Class{
Class: "Article",
ModuleConfig: map[string]interface{}{
"generative-cohere": map[string]interface{}{},
},
}
You can override the generative integration settings at query time without updating it in the collection configuration.
Further resources
Questions and feedback
If you have any questions or feedback, let us know in the user forum.