diff --git a/_includes/code/csharp/QuickstartTest.cs b/_includes/code/csharp/QuickstartTest.cs index 894f41c68..45a21ffad 100644 --- a/_includes/code/csharp/QuickstartTest.cs +++ b/_includes/code/csharp/QuickstartTest.cs @@ -63,7 +63,7 @@ public static async Task FullQuickstartWorkflowTest() Property.Text("category"), ], VectorConfig = Configure.Vector("default", v => v.Text2VecWeaviate()), // Configure the Weaviate Embeddings integration - GenerativeConfig = Configure.Generative.Cohere(), // Configure the Cohere generative AI integration + GenerativeConfig = Configure.Generative.OpenAI(), // Configure the OpenAI generative AI integration } ); // highlight-end diff --git a/_includes/code/howto/go/docs/manage-data.read-all-objects_test.go b/_includes/code/howto/go/docs/manage-data.read-all-objects_test.go index f571d4edb..37b12e7cd 100644 --- a/_includes/code/howto/go/docs/manage-data.read-all-objects_test.go +++ b/_includes/code/howto/go/docs/manage-data.read-all-objects_test.go @@ -22,6 +22,7 @@ func Test_ManageDataReadAllObjects(t *testing.T) { t.Run("Read all objects", func(t *testing.T) { // CursorExample // Retrieve data + // START ReadAllProps sourceClient, err := weaviate.NewClient(weaviate.Config{ Scheme: "https", Host: "WEAVIATE_INSTANCE_URL", // Replace WEAVIATE_INSTANCE_URL with your instance URL @@ -59,6 +60,7 @@ func Test_ManageDataReadAllObjects(t *testing.T) { } return get.Do(context.Background()) } + // END ReadAllProps // Use this function to retrieve data // START FetchClassDefinition diff --git a/_includes/code/howto/go/docs/model-providers/2-usage-text/main.go b/_includes/code/howto/go/docs/model-providers/2-usage-text/main.go index f7a44f959..e25ed6a6e 100644 --- a/_includes/code/howto/go/docs/model-providers/2-usage-text/main.go +++ b/_includes/code/howto/go/docs/model-providers/2-usage-text/main.go @@ -288,8 +288,8 @@ func main() { "title_vector": { Vectorizer: map[string]interface{}{ "text2vec-google": map[string]interface{}{ - "project_id": "", - "model_id": "gemini-embedding-001", // (Optional) To manually set the model ID + "projectId": "", + "modelId": "gemini-embedding-001", // (Optional) To manually set the model ID }, }, }, @@ -321,8 +321,9 @@ func main() { "title_vector": { Vectorizer: map[string]interface{}{ "text2vec-google": map[string]interface{}{ - "properties": []string{"title"}, - "model_id": "gemini-embedding-001", // (Optional) To manually set the model ID + "properties": []string{"title"}, + "apiEndpoint": "generativelanguage.googleapis.com", + "modelId": "gemini-embedding-001", // (Optional) To manually set the model ID }, }, }, @@ -353,11 +354,11 @@ func main() { VectorConfig: map[string]models.VectorConfig{ "title_vector": { Vectorizer: map[string]interface{}{ - "text2vec-aws": map[string]interface{}{ - "properties": []string{"title"}, - "project_id": "", // Required for Vertex AU - "model_id": "textembedding-gecko@latest", // (Optional) To manually set the model ID - "api_endpoint": "", // (Optional) To manually set the API endpoint + "text2vec-google": map[string]interface{}{ + "properties": []string{"title"}, + "projectId": "", // Required for Vertex AI + "modelId": "textembedding-gecko@latest", // (Optional) To manually set the model ID + "apiEndpoint": "", // (Optional) To manually set the API endpoint }, }, }, diff --git a/_includes/code/howto/search.similarity.mmr.py b/_includes/code/howto/search.similarity.mmr.py index b860bc6ca..30811ab89 100644 --- a/_includes/code/howto/search.similarity.mmr.py +++ b/_includes/code/howto/search.similarity.mmr.py @@ -37,7 +37,7 @@ response = collection.query.near_vector( near_vector=base_vec, limit=20, - selection=Diversity.MMR( + diversity_selection=Diversity.mmr( limit=5, balance=0.5, ), @@ -75,7 +75,7 @@ response = collection.query.near_vector( near_vector=query_vector, limit=20, - selection=Diversity.MMR( + diversity_selection=Diversity.mmr( limit=5, balance=0.5, ), @@ -98,21 +98,21 @@ response_diverse = collection.query.near_vector( near_vector=base_vec, limit=20, - selection=Diversity.MMR(limit=5, balance=0.0), + diversity_selection=Diversity.mmr(limit=5, balance=0.0), ) # Balanced — equal weight on relevance and diversity response_balanced = collection.query.near_vector( near_vector=base_vec, limit=20, - selection=Diversity.MMR(limit=5, balance=0.5), + diversity_selection=Diversity.mmr(limit=5, balance=0.5), ) # Pure relevance — equivalent to standard vector search response_relevant = collection.query.near_vector( near_vector=base_vec, limit=20, - selection=Diversity.MMR(limit=5, balance=1.0), + diversity_selection=Diversity.mmr(limit=5, balance=1.0), ) # END MMRBalanceExamples diff --git a/_includes/code/java-v6/src/test/java/QuickstartTest.java b/_includes/code/java-v6/src/test/java/QuickstartTest.java index 3de3fa0b5..66bcb43bc 100644 --- a/_includes/code/java-v6/src/test/java/QuickstartTest.java +++ b/_includes/code/java-v6/src/test/java/QuickstartTest.java @@ -59,7 +59,7 @@ void testCreateCollection() throws Exception { collectionName, col -> col .vectorConfig(VectorConfig.text2vecWeaviate()) // Configure the Weaviate Embeddings integration - .generativeModule(Generative.cohere()) // Configure the Cohere generative AI integration + .generativeModule(Generative.openai()) // Configure the OpenAI generative AI integration ); CollectionHandle> questions = client.collections.use(collectionName); // highlight-end diff --git a/_includes/code/quickstart/quickstart.create_collection.mdx b/_includes/code/quickstart/quickstart.create_collection.mdx index 35925009c..1832d0339 100644 --- a/_includes/code/quickstart/quickstart.create_collection.mdx +++ b/_includes/code/quickstart/quickstart.create_collection.mdx @@ -88,7 +88,7 @@ curl -X POST \ "vectorizer": "text2vec-weaviate", "moduleConfig": { "text2vec-weaviate": {}, - "generative-cohere": {} + "generative-openai": {} } }' \ "$WEAVIATE_URL/v1/schema" diff --git a/_includes/code/quickstart/quickstart.query.rag.mdx b/_includes/code/quickstart/quickstart.query.rag.mdx index 63cf292cd..7f9b711b7 100644 --- a/_includes/code/quickstart/quickstart.query.rag.mdx +++ b/_includes/code/quickstart/quickstart.query.rag.mdx @@ -59,7 +59,7 @@ import JavaV6Code from "!!raw-loader!/_includes/code/java-v6/src/test/java/Quick # Best practice: store your credentials in environment variables # export WEAVIATE_URL="YOUR_INSTANCE_URL" # Your Weaviate instance URL # export WEAVIATE_API_KEY="YOUR_API_KEY" # Your Weaviate instance API key -# export COHERE_API_KEY="YOUR_API_KEY" # Your Cohere API key +# export OPENAI_API_KEY="YOUR_API_KEY" # Your OpenAI API key echo '{ "query": "{ @@ -92,7 +92,7 @@ echo '{ -X POST \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $WEAVIATE_API_KEY" \ - -H "X-Cohere-Api-Key: $COHERE_API_KEY" \ + -H "X-OpenAI-Api-Key: $OPENAI_API_KEY" \ -d @- \ $WEAVIATE_URL/v1/graphql ``` diff --git a/_includes/feature-notes/v137-preview.mdx b/_includes/feature-notes/v137-preview.mdx index 88182bb3f..156891a60 100644 --- a/_includes/feature-notes/v137-preview.mdx +++ b/_includes/feature-notes/v137-preview.mdx @@ -2,7 +2,6 @@ This is a preview feature. The API may change in future releases. -- **Python client**: Support is not yet in a released `weaviate-client`. Coming in the next release (tracked in [PR #1997](https://github.com/weaviate/weaviate-python-client/pull/1997)). - **Multi-node clusters**: MMR reranking may produce suboptimal results for collections whose shards are distributed across multiple nodes, since each shard returns its own candidate set before the coordinator reranks them. We are actively working on improving this. ::: diff --git a/docs/cloud/quickstart.mdx b/docs/cloud/quickstart.mdx index 7039863d7..bb652e9b8 100644 --- a/docs/cloud/quickstart.mdx +++ b/docs/cloud/quickstart.mdx @@ -74,7 +74,7 @@ Notes: ## Requirements - A [Weaviate Cloud account](./platform/create-account.mdx). -- In order to perform Retrieval Augmented Generation (RAG) in the last step, you will need a [Cohere](https://dashboard.cohere.com/) account. You can use a free Cohere trial API key. If you have another preferred [model provider](/weaviate/model-providers), you can use that instead of Cohere. +- In order to perform Retrieval Augmented Generation (RAG) in the last step, you will need an [OpenAI](https://platform.openai.com/) account and an OpenAI API key. If you have another preferred [model provider](/weaviate/model-providers), you can use that instead of OpenAI.
@@ -386,9 +386,9 @@ import QueryRAG from "/_includes/code/quickstart/quickstart.query.rag.mdx"; -:::info Cohere API key in the header +:::info OpenAI API key in the header -Note that this code includes an additional header for the Cohere API key. Weaviate uses this key to access the Cohere generative AI model and perform retrieval augmented generation (RAG). +Note that this code includes an additional header for the OpenAI API key. Weaviate uses this key to access the OpenAI generative AI model and perform retrieval augmented generation (RAG). ::: diff --git a/docs/deploy/configuration/env-vars/index.md b/docs/deploy/configuration/env-vars/index.md index 51defbdd0..65c811c77 100644 --- a/docs/deploy/configuration/env-vars/index.md +++ b/docs/deploy/configuration/env-vars/index.md @@ -80,7 +80,7 @@ import APITable from '@site/src/components/APITable'; | `OBJECTS_TTL_DELETE_SCHEDULE` | Schedule for deleting expired objects. Accepts standard 5-field cron format, 6-field (with seconds), 7-field (with seconds and year), descriptors (`@yearly`, `@monthly`, `@weekly`, `@daily`, `@hourly`), or hash expressions. Default: `""` (disabled)
Added in `v1.36` | `string - cron format` | `0 */6 * * *` (every 6 hours) | | `OBJECTS_TTL_PAUSE_DURATION` | How long to pause the TTL deletion process between batches. Longer pauses reduce resource pressure but slow down cleanup. If `0` there is no pause. Can be modified at runtime. Default: `1m`
Added in `v1.36` | `string - duration` | `20s`, `2m` | | `OBJECTS_TTL_PAUSE_EVERY_NO_BATCHES` | Number of batch deletions to process before pausing. With the default batch size of 10,000, a pause occurs every 100,000 deleted objects. If `0` there is no pause. Can be modified at runtime. Default: `10`
Added in `v1.36` | `string - number` | `3` | -| `OPERATIONAL_MODE` | Sets the [mode of operation](../status.md#operational-modes) for the instance. Options: `READ_WRITE` (default), `READ_ONLY`, `WRITE_ONLY`, `SCALE_OUT`. Limits available operations based on the mode selected. | `string` | `READ_WRITE` | +| `OPERATIONAL_MODE` | Sets the [mode of operation](../status.md#operational-modes) for the instance, limiting the available operations based on the mode selected. Options: `ReadWrite` (default), `ReadOnly`, `WriteOnly`, `ScaleOut`. These values are case-sensitive and matched exactly. An unrecognized value (such as `READ_ONLY`) silently falls back to the default `ReadWrite`, without a warning or an error, so a node you intended to restrict stays fully writable. | `string` | `ReadWrite` | | `ORIGIN` | Set the http(s) origin for Weaviate | `string - HTTP origin` | `https://my-weaviate-deployment.com` | | `PERSISTENCE_DATA_PATH` | Path to the Weaviate data store.
[Note about file systems and performance](/weaviate/concepts/resources.md#file-system). | `string - file path` | `/var/lib/weaviate`
Defaults to `./data`| | `PERSISTENCE_HNSW_DISABLE_SNAPSHOTS` | If set, [HNSW snapshotting](/weaviate/concepts/storage.md#persistence-and-crash-recovery) will be disabled. Default: `false` (enabled) as of `v1.36`; `true` (disabled) in `v1.31`–`v1.35`
Added in `v1.31` | `boolean` | `false` | diff --git a/docs/deploy/faqs/troubleshooting.md b/docs/deploy/faqs/troubleshooting.md index a5c013f29..c877c2d7e 100644 --- a/docs/deploy/faqs/troubleshooting.md +++ b/docs/deploy/faqs/troubleshooting.md @@ -39,7 +39,7 @@ To confirm and identify the issue, you'll want to first run the same query multi #### Resolving the issue -Check your settings to check if you have asynchronous replication enabled. If `async_replication_disabled` is set to "true" then you'll need to set that variable to "false." Once it is enabled, the logs will show messages that indicate successful peers checks and synchronization for the nodes. +Check whether asynchronous replication is enabled. If `ASYNC_REPLICATION_DISABLED` is set to `true`, set it to `false`. Once async replication is enabled, the logs will show successful peer checks and node synchronization. @@ -51,11 +51,21 @@ Check your settings to check if you have asynchronous replication enabled. If `a #### Identifying the issue -To confirm and identify the issue, you'll want to first run the same query multiple times to confirm that the results are inconsistent. If the inconsistent results are persisting, then you probably have asynchronous replication disabled for your deployment. +Start with the logs of a node that is failing to join. A membership problem reads differently from a data problem: you'll see repeated attempts to contact the founding member, gossip timeouts, or Raft messages about an election that never settles on a leader. A node in this state can still pass its own health checks, so if the live endpoint answers while the node stays outside the cluster, the process is healthy and the problem is membership. + +To confirm it, query the `/v1/cluster/statistics` endpoint. If it reports fewer nodes than you expect, or the top-level `synchronized` field is `false`, then your cluster has not reached consensus. #### Resolving the issue -Check your settings to check if you have asynchronous replication enabled. If `async_replication_disabled` is set to "true" then you'll need to set that variable to "false." Once it is enabled, the logs will show messages that indicate successful peers checks and synchronization for the nodes. Additionally, test the live and ready REST endpoints. and check the network configuration of the nodes. +Work outward from each node's own identity to the network between the nodes. + +- Point every joining node at the founding member with [`CLUSTER_JOIN`](/deploy/configuration/env-vars/index.md#CLUSTER_JOIN). The value is the service name and gossip port of that founding member, such as `weaviate-node-1:7100`, and every joining node must name the same one. +- Set [`CLUSTER_HOSTNAME`](/deploy/configuration/env-vars/index.md#CLUSTER_HOSTNAME) explicitly on every node. If you leave the hostname to the operating system and it changes across a restart, the node rejoins under a new name while the cluster is still holding a place for the old one. If the hostname cannot be resolved through DNS, set [`CLUSTER_ADVERTISE_ADDR`](/deploy/configuration/env-vars/index.md#CLUSTER_ADVERTISE_ADDR) to advertise the node's address directly. +- Give each node a [`CLUSTER_GOSSIP_BIND_PORT`](/deploy/configuration/env-vars/index.md#CLUSTER_GOSSIP_BIND_PORT), used to exchange network state information, and a [`CLUSTER_DATA_BIND_PORT`](/deploy/configuration/env-vars/index.md#CLUSTER_DATA_BIND_PORT), used to exchange data. By convention the data port is one higher than the gossip port. Then confirm that every node can actually reach every other node on both of those ports. A firewall rule, an unpublished container port, or a network policy that only exposes the HTTP port will let a node start up perfectly well and still leave it unable to find anyone. +- For consensus specifically, check the Raft settings. [`RAFT_JOIN`](/deploy/configuration/env-vars/index.md#RAFT_JOIN) names the voter nodes, and [`RAFT_BOOTSTRAP_EXPECT`](/deploy/configuration/env-vars/index.md#RAFT_BOOTSTRAP_EXPECT) sets how many voters the cluster waits for at bootstrap. If you set `RAFT_JOIN`, you must adjust `RAFT_BOOTSTRAP_EXPECT` by hand to match the number of voters you listed. When the two disagree, the cluster waits for a member that will never arrive. + +Once the nodes are talking, check `/v1/cluster/statistics` again. Every node should appear in the response, and `synchronized` should be `true`. + ### You've downgraded and now your clusters won't reach the `Ready` state. diff --git a/docs/weaviate/client-libraries/typescript/notes-best-practices.mdx b/docs/weaviate/client-libraries/typescript/notes-best-practices.mdx index 44ec04a23..e42d56cff 100644 --- a/docs/weaviate/client-libraries/typescript/notes-best-practices.mdx +++ b/docs/weaviate/client-libraries/typescript/notes-best-practices.mdx @@ -124,7 +124,7 @@ You can set `skipInitChecks` to `true` to skip these checks. ```js import weaviate from 'weaviate-client'; -Add commentMore actions + const client = await weaviate.connectToLocal({ skipInitChecks: true, }) @@ -147,7 +147,7 @@ type Article = { wordcount: number, }; -const collection = client.collections.get < Article > "Article"; +const collection = client.collections.get
("Article"); await collection.data.insert({ // compiler error since 'body' field is missing in '.insert' title: "TS is awesome!", diff --git a/docs/weaviate/manage-objects/read-all-objects.mdx b/docs/weaviate/manage-objects/read-all-objects.mdx index 87b0f61ff..198d812a5 100644 --- a/docs/weaviate/manage-objects/read-all-objects.mdx +++ b/docs/weaviate/manage-objects/read-all-objects.mdx @@ -47,8 +47,8 @@ The following code iterates through all objects, providing the properties and id @@ -95,14 +95,6 @@ Read through all data including the vectors. (Also applicable where [named vecto language="ts" /> - - - - - - diff --git a/docs/weaviate/model-providers/google/generative.md b/docs/weaviate/model-providers/google/generative.md index 426e568ec..a63783d05 100644 --- a/docs/weaviate/model-providers/google/generative.md +++ b/docs/weaviate/model-providers/google/generative.md @@ -320,15 +320,19 @@ You can also supply images as a part of the input when performing retrieval augm ### Available models +:::caution Always set the model explicitly +If no model is specified, the server falls back to a legacy PaLM model that Google has deprecated. Set the model explicitly when you configure a collection or when you run a query. +::: + Vertex AI: - `gemini-2.5-pro` -- `gemini-2.5-flash` (default) +- `gemini-2.5-flash` - `gemini-2.0-flash` - `gemini-1.5-pro` - `gemini-1.5-flash` Gemini API: -- `gemini-2.5-flash` (default) +- `gemini-2.5-flash` - `gemini-2.5-pro` - `gemini-2.0-flash` - `gemini-1.5-pro` diff --git a/docs/weaviate/search/similarity.md b/docs/weaviate/search/similarity.md index 5a4c2fe95..7a4b90472 100644 --- a/docs/weaviate/search/similarity.md +++ b/docs/weaviate/search/similarity.md @@ -675,7 +675,7 @@ import V137Preview from '/\_includes/feature-notes/v137-preview.mdx'; Standard vector search returns the closest matches to the query, which often means a cluster of near-duplicate results. **Maximum Marginal Relevance (MMR)** reranks results to balance relevance with diversity — each selected result must add something new to the result set. -Add the `selection` parameter to any vector search query: +Add the `diversity_selection` parameter to any vector search query: @@ -377,9 +377,9 @@ import QueryRAG from "/_includes/code/quickstart/quickstart.query.rag.mdx"; -:::info Cohere API key in the header +:::info OpenAI API key in the header -Note that this code includes an additional header for the Cohere API key. Weaviate uses this key to access the Cohere generative AI model and perform retrieval augmented generation (RAG). +Note that this code includes an additional header for the OpenAI API key. Weaviate uses this key to access the OpenAI generative AI model and perform retrieval augmented generation (RAG). ::: diff --git a/tests/test_python.py b/tests/test_python.py index 478f15171..af815e9d0 100644 --- a/tests/test_python.py +++ b/tests/test_python.py @@ -261,10 +261,6 @@ def test_search(empty_weaviates, script_loc): @pytest.mark.pyv4 -@pytest.mark.skip( - reason="Diversity/MMR not yet in a released weaviate-client; unskip once " - "https://github.com/weaviate/weaviate-python-client/pull/1997 ships" -) @pytest.mark.parametrize( "script_loc", [