From 0f9c8ec76ef449ff91579dc8addf441d86a0aa34 Mon Sep 17 00:00:00 2001 From: JP Hwang <61258750+databyjp@users.noreply.github.com> Date: Mon, 16 Sep 2024 11:13:33 +0200 Subject: [PATCH] 20240916 mistral text vectorizer (#2607) * wip * Add images; index pages; placeholder emb page * Add mistral embed page; add more xlinks --- .../integration_mistral_embedding.png | Bin 0 -> 31647 bytes .../integration_mistral_embedding_search.png | Bin 0 -> 36889 bytes .../_includes/provider.vectorizer.py | 41 +++ .../_includes/provider.vectorizer.ts | 18 +- .../model-providers/anthropic/index.md | 1 + .../model-providers/anyscale/index.md | 1 + .../weaviate/model-providers/aws/index.md | 1 + .../weaviate/model-providers/cohere/index.md | 1 + .../model-providers/databricks/index.md | 2 + .../model-providers/friendliai/index.md | 1 + .../weaviate/model-providers/google/index.md | 1 + .../weaviate/model-providers/gpt4all/index.md | 1 + .../model-providers/huggingface/index.md | 1 + .../model-providers/imagebind/index.md | 1 + developers/weaviate/model-providers/index.md | 2 +- .../weaviate/model-providers/jinaai/index.md | 1 + .../model-providers/mistral/embeddings.md | 257 ++++++++++++++++++ .../model-providers/mistral/generative.md | 4 + .../weaviate/model-providers/mistral/index.md | 12 + .../weaviate/model-providers/octoai/index.md | 1 + .../weaviate/model-providers/ollama/index.md | 1 + .../model-providers/openai-azure/index.md | 1 + .../weaviate/model-providers/openai/index.md | 2 + .../transformers/embeddings-multimodal.md | 5 + .../transformers/embeddings.md | 5 + .../model-providers/transformers/index.md | 1 + .../model-providers/voyageai/index.md | 1 + 27 files changed, 360 insertions(+), 3 deletions(-) create mode 100644 developers/weaviate/model-providers/_includes/integration_mistral_embedding.png create mode 100644 developers/weaviate/model-providers/_includes/integration_mistral_embedding_search.png create mode 100644 developers/weaviate/model-providers/mistral/embeddings.md diff --git a/developers/weaviate/model-providers/_includes/integration_mistral_embedding.png b/developers/weaviate/model-providers/_includes/integration_mistral_embedding.png new file mode 100644 index 0000000000000000000000000000000000000000..aa6dd1a5848a9170fb9b56c33f93680193faae62 GIT binary patch literal 31647 zcmd3N^;a8T^eq&3inX}AwMcL%Em{Z;1&T{35Hv_}ij*S7Jrs(&Q`{*|a0%}2?(ovj z_r0~=5AP3n$;z4}cjnxE_L0oKGYM5wk;lWPz(zts!c$a`(Lh4N03ac~(85GPeDeT6s`3c+_THM8Ly zmoEKf!FEaQF;4Eqt|#hgHQNr3_`E~M1kgOq+)|m@$i?4B|5k=wZ$Q0NM&$nLSIJrV z(zon;{0-lEpBslpdB0&!OASsyTal3Pf&WjAtiD5){hg(H`@R2;rT*rJm7%${h z!e>`VB#hM30CH2w8wK|YNLjnc*ne=|6WmHBINenUiCBN~ZhM}$sxDUC$cQBG@>aa! zl{#9+yEc;5jHD=^ce%E8#u7u zaRRdM$&Ht(6_#_af3
Wn&pd@sbcJHH8&b61y4(AjsJF1=cxK3>=Ls+D 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

r*@c0kKYcyop|8pEhz_Y;Fh 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 QxAYPzb`%C_PEAKB=L=Kufz literal 0 HcmV?d00001 diff --git a/developers/weaviate/model-providers/_includes/integration_mistral_embedding_search.png b/developers/weaviate/model-providers/_includes/integration_mistral_embedding_search.png new file mode 100644 index 0000000000000000000000000000000000000000..9e5f384c7ce004e764ef915df670f59b6318c65a GIT binary patch literal 36889 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
-v5_*LBYMoX_W6 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 Gko;f2bF3}^ literal 0 HcmV?d00001 diff --git a/developers/weaviate/model-providers/_includes/provider.vectorizer.py b/developers/weaviate/model-providers/_includes/provider.vectorizer.py index 3f8525bda4..03ad2cc7ca 100644 --- a/developers/weaviate/model-providers/_includes/provider.vectorizer.py +++ b/developers/weaviate/model-providers/_includes/provider.vectorizer.py @@ -398,6 +398,47 @@ # clean up client.collections.delete("DemoCollection") +# START BasicVectorizerMistral +from weaviate.classes.config import Configure + +client.collections.create( + "DemoCollection", + # highlight-start + vectorizer_config=[ + Configure.NamedVectors.text2vec_mistral( + name="title_vector", + source_properties=["title"], + ) + ], + # highlight-end + # Additional parameters not shown +) +# END BasicVectorizerMistral + +# clean up +client.collections.delete("DemoCollection") + +# START FullVectorizerMistral +from weaviate.classes.config import Configure + +client.collections.create( + "DemoCollection", + # highlight-start + vectorizer_config=[ + Configure.NamedVectors.text2vec_mistral( + name="title_vector", + source_properties=["title"], + model="mistral-embed" + ) + ], + # highlight-end + # Additional parameters not shown +) +# END FullVectorizerMistral + +# clean up +client.collections.delete("DemoCollection") + # START BasicVectorizerOctoAI from weaviate.classes.config import Configure diff --git a/developers/weaviate/model-providers/_includes/provider.vectorizer.ts b/developers/weaviate/model-providers/_includes/provider.vectorizer.ts index 38b4dcd5a9..049ad25ca1 100644 --- a/developers/weaviate/model-providers/_includes/provider.vectorizer.ts +++ b/developers/weaviate/model-providers/_includes/provider.vectorizer.ts @@ -473,6 +473,20 @@ await client.collections.create({ // Clean up await client.collections.delete('DemoCollection'); +// START BasicVectorizerMistral +// TS support & code example coming soon +// END BasicVectorizerMistral + +// Clean up +await client.collections.delete('DemoCollection'); + +// START FullVectorizerMistral +// TS support & code example coming soon +// END FullVectorizerMistral + +// Clean up +await client.collections.delete('DemoCollection'); + // START BasicVectorizerOctoAI // Code example coming soon // END BasicVectorizerOctoAI @@ -621,7 +635,7 @@ await client.collections.create({ name: 'title_vector', sourceProperties: ['title'], resourceName: '', - deploymentID: '', + deploymentId: '', }, ), ], @@ -648,7 +662,7 @@ await client.collections.create({ name: 'title_vector', sourceProperties: ['title'], resourceName: '', - deploymentID: '', + deploymentId: '', // // Further options // baseURL: '' }, diff --git a/developers/weaviate/model-providers/anthropic/index.md b/developers/weaviate/model-providers/anthropic/index.md index 9bb547c5b9..c4d8de68dd 100644 --- a/developers/weaviate/model-providers/anthropic/index.md +++ b/developers/weaviate/model-providers/anthropic/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_anthropic.jpg # tags: ['model providers', 'anthropic'] --- + Anthropic offers a wide range of models for natural language processing and generation. Weaviate seamlessly integrates with Anthropic's APIs, allowing users to leverage Anthropic's models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/anyscale/index.md b/developers/weaviate/model-providers/anyscale/index.md index ac93a7eb80..5001048c90 100644 --- a/developers/weaviate/model-providers/anyscale/index.md +++ b/developers/weaviate/model-providers/anyscale/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_anyscale.jpg # tags: ['model providers', 'anyscale'] --- + Anyscale offers a wide range of models for natural language processing and generation. Weaviate seamlessly integrates with Anyscale's Endpoints APIs, allowing users to leverage Anyscale's models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/aws/index.md b/developers/weaviate/model-providers/aws/index.md index fc8cd76a99..1ad4c7c594 100644 --- a/developers/weaviate/model-providers/aws/index.md +++ b/developers/weaviate/model-providers/aws/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_aws.jpg # tags: ['model providers', 'aws'] --- + AWS offers a wide range of models for natural language processing and generation. Weaviate seamlessly integrates with AWS's APIs, allowing users to leverage AWS's models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/cohere/index.md b/developers/weaviate/model-providers/cohere/index.md index 653c54f694..5b6c7a44a1 100644 --- a/developers/weaviate/model-providers/cohere/index.md +++ b/developers/weaviate/model-providers/cohere/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_cohere.jpg # tags: ['model providers', 'cohere'] --- + Cohere offers a wide range of models for natural language processing and generation. Weaviate seamlessly integrates with Cohere's APIs, allowing users to leverage Cohere's models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/databricks/index.md b/developers/weaviate/model-providers/databricks/index.md index a63de53e15..d5c0dfe3d7 100644 --- a/developers/weaviate/model-providers/databricks/index.md +++ b/developers/weaviate/model-providers/databricks/index.md @@ -5,6 +5,8 @@ image: og/docs/integrations/provider_integrations_databricks.jpg # tags: ['model providers', 'databricks'] --- + + :::info Added in `v1.26.3` ::: diff --git a/developers/weaviate/model-providers/friendliai/index.md b/developers/weaviate/model-providers/friendliai/index.md index 75c48fd8b2..aab9692c75 100644 --- a/developers/weaviate/model-providers/friendliai/index.md +++ b/developers/weaviate/model-providers/friendliai/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_friendliai.jpg # tags: ['model providers', 'friendliai'] --- + :::info Added in `v1.26.3` ::: diff --git a/developers/weaviate/model-providers/google/index.md b/developers/weaviate/model-providers/google/index.md index 2fe66c00ae..a8b1daa80c 100644 --- a/developers/weaviate/model-providers/google/index.md +++ b/developers/weaviate/model-providers/google/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_google.jpg # tags: ['model providers', 'google'] --- + Google AI offers a wide range of models for natural language processing and generation. Weaviate seamlessly integrates with [Google AI Studio](https://ai.google.dev/?utm_source=weaviate&utm_medium=referral&utm_campaign=partnerships&utm_content=) and [Google Vertex AI](https://cloud.google.com/vertex-ai) APIs, allowing users to leverage Google AI's models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/gpt4all/index.md b/developers/weaviate/model-providers/gpt4all/index.md index 8a0c051a6f..c58846dec5 100644 --- a/developers/weaviate/model-providers/gpt4all/index.md +++ b/developers/weaviate/model-providers/gpt4all/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_gpt4all.jpg # tags: ['model providers', 'gpt4all'] --- + The GPT4All library allows you to easily run a wide range of models on your own device. Weaviate seamlessly integrates with the GPT4All library, allowing users to leverage compatible models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/huggingface/index.md b/developers/weaviate/model-providers/huggingface/index.md index df9bc48cd9..a9c220027f 100644 --- a/developers/weaviate/model-providers/huggingface/index.md +++ b/developers/weaviate/model-providers/huggingface/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_huggingface.jpg # tags: ['model providers', 'huggingface'] --- + Hugging Face offers a wide range of models for natural language processing. Weaviate seamlessly integrates with Hugging Face's Inference API, allowing users to leverage Hugging Face Hub's models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/imagebind/index.md b/developers/weaviate/model-providers/imagebind/index.md index 9cb31ee0f7..e62c2dd29b 100644 --- a/developers/weaviate/model-providers/imagebind/index.md +++ b/developers/weaviate/model-providers/imagebind/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_imagebind.jpg # tags: ['model providers', 'huggingface', 'imagebind'] --- + Meta's ImageBind library can be used with a wide range of models for natural language processing. Weaviate seamlessly integrates with the ImageBind library, allowing users to leverage compatible models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/index.md b/developers/weaviate/model-providers/index.md index 7a8c8450fc..2c02160b24 100644 --- a/developers/weaviate/model-providers/index.md +++ b/developers/weaviate/model-providers/index.md @@ -26,7 +26,7 @@ This enables an enhanced developed experience, such as the ability to: | [Google](./google/index.md) | [Text](./google/embeddings.md), [Multimodal](./google/embeddings-multimodal.md) | [Text](./google/generative.md) | - | | [Hugging Face](./huggingface/index.md) | [Text](./huggingface/embeddings.md) | - | - | | [Jina AI](./jinaai/index.md) | [Text](./jinaai/embeddings.md) | - | - | -| [Mistral](./mistral/index.md) | - | [Text](./mistral/generative.md) | - | +| [Mistral](./mistral/index.md) | [Text](./mistral/embeddings.md) | [Text](./mistral/generative.md) | - | | [OctoAI](./octoai/index.md) | [Text](./octoai/embeddings.md) | [Text](./octoai/generative.md) | - | | [OpenAI](./openai/index.md) | [Text](./openai/embeddings.md) | [Text](./openai/generative.md) | - | | [Azure OpenAI](./openai-azure/index.md) | [Text](./openai-azure/embeddings.md) | [Text](./openai-azure/generative.md) | - | diff --git a/developers/weaviate/model-providers/jinaai/index.md b/developers/weaviate/model-providers/jinaai/index.md index 9a6d475c2d..35f2b27f6b 100644 --- a/developers/weaviate/model-providers/jinaai/index.md +++ b/developers/weaviate/model-providers/jinaai/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_jinaai.jpg # tags: ['model providers', 'jinaai'] --- + Jina AI offers a wide range of models for natural language processing. Weaviate seamlessly integrates with Jina AI's APIs, allowing users to leverage Jina AI's models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/mistral/embeddings.md b/developers/weaviate/model-providers/mistral/embeddings.md new file mode 100644 index 0000000000..d7b37dbadc --- /dev/null +++ b/developers/weaviate/model-providers/mistral/embeddings.md @@ -0,0 +1,257 @@ +--- +title: Text Embeddings +sidebar_position: 20 +image: og/docs/integrations/provider_integrations_mistral.jpg +# tags: ['model providers', 'mistral', 'embeddings'] +--- + +# Mistral Embeddings with Weaviate + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock'; +import PyConnect from '!!raw-loader!../_includes/provider.connect.py'; +import TSConnect from '!!raw-loader!../_includes/provider.connect.ts'; +import PyCode from '!!raw-loader!../_includes/provider.vectorizer.py'; +import TSCode from '!!raw-loader!../_includes/provider.vectorizer.ts'; + +Weaviate's integration with Mistral's APIs allows you to access their models' capabilities directly from Weaviate. + +[Configure a Weaviate vector index](#configure-the-vectorizer) to use an Mistral embedding model, and Weaviate will generate embeddings for various operations using the specified model and your Mistral API key. This feature is called the *vectorizer*. + +At [import time](#data-import), Weaviate generates text object embeddings and saves them into the index. For [vector](#vector-near-text-search) and [hybrid](#hybrid-search) search operations, Weaviate converts text queries into embeddings. + +![Embedding integration illustration](../_includes/integration_mistral_embedding.png) + +## Requirements + +### Weaviate configuration + +Your Weaviate instance must be configured with the Mistral vectorizer integration (`text2vec-mistral`) module. + +
+ For Weaviate Cloud (WCD) users + +This integration is enabled by default on Weaviate Cloud (WCD) serverless instances. + +
+ +
+ For self-hosted users + +- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. + +
+ +### API credentials + +You must provide a valid Mistral API key to Weaviate for this integration. Go to [Mistral](https://mistral.ai/) to sign up and obtain an API key. + +Provide the API key to Weaviate using one of the following methods: + +- Set the `MISTRAL_APIKEY` environment variable that is available to Weaviate. +- Provide the API key at runtime, as shown in the examples below. + + + + + + + + + + + + + +## Configure the vectorizer + +Set the vectorizer to configure Weaviate to use an Mistral embedding model: + + + + + + + + + + + + +import ConfigAfterEmb from '/developers/weaviate/model-providers/_includes/more-info-embeddings.mdx'; + + + +### Select a model + +You can specify one of the [available models](#available-models) for the vectorizer to use, as shown in the following configuration examples. + + + + + + + + + + + + +The [default model](#available-models) is used if no model is specified. + +## Data import + +After configuring the vectorizer, [import data](../../manage-data/import.mdx) into Weaviate. Weaviate generates embeddings for text objects using the specified model. + + + + + + + + + + + + + +:::tip Re-use existing vectors +If you already have a compatible model vector available, you can provide it directly to Weaviate. This can be useful if you have already generated embeddings using the same model and want to use them in Weaviate, such as when migrating data from another system. +::: + +## Searches + +Once the vectorizer is configured, Weaviate will perform vector and hybrid search operations using the specified Mistral model. + +![Embedding integration at search illustration](../_includes/integration_mistral_embedding_search.png) + +### Vector (near text) search + +When you perform a [vector search](../../search/similarity.md#search-with-text), Weaviate converts the text query into an embedding using the specified model and returns the most similar objects from the database. + +The query below returns the `n` most similar objects from the database, set by `limit`. + + + + + + + + + + + + + +### Hybrid search + +:::info What is a hybrid search? +A hybrid search performs a vector search and a keyword (BM25) search, before [combining the results](../../search/hybrid.md#change-the-ranking-method) to return the best matching objects from the database. +::: + +When you perform a [hybrid search](../../search/hybrid.md), Weaviate converts the text query into an embedding using the specified model and returns the best scoring objects from the database. + +The query below returns the `n` best scoring objects from the database, set by `limit`. + + + + + + + + + + + + + +## References + +### Available models + +As of September 2024, the only available model is `mistral-embed`. + +## Further resources + +### Other integrations + +- [Mistral generative models + Weaviate](./generative.md). + +### Code examples + +Once the integrations are configured at the collection, the data management and search operations in Weaviate work identically to any other collection. See the following model-agnostic examples: + +- The [how-to: manage data](../../manage-data/index.md) guides show how to perform data operations (i.e. create, update, delete). +- The [how-to: search](../../search/index.md) guides show how to perform search operations (i.e. vector, keyword, hybrid) as well as retrieval augmented generation. + +### External resources + +- Mistral [Embeddings documentation](https://docs.mistral.ai/capabilities/embeddings/) + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + + diff --git a/developers/weaviate/model-providers/mistral/generative.md b/developers/weaviate/model-providers/mistral/generative.md index 0412e7b90b..a90f2e4108 100644 --- a/developers/weaviate/model-providers/mistral/generative.md +++ b/developers/weaviate/model-providers/mistral/generative.md @@ -240,6 +240,10 @@ For further details on model parameters, see the [Mistral API documentation](htt ## Further resources +### Other integrations + +- [Mistral embedding models + Weaviate](./embeddings.md). + ### Code examples Once the integrations are configured at the collection, the data management and search operations in Weaviate work identically to any other collection. See the following model-agnostic examples: diff --git a/developers/weaviate/model-providers/mistral/index.md b/developers/weaviate/model-providers/mistral/index.md index ee05ceb128..219277d676 100644 --- a/developers/weaviate/model-providers/mistral/index.md +++ b/developers/weaviate/model-providers/mistral/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_mistral.jpg # tags: ['model providers', 'mistral'] --- + Mistral offers a wide range of models for natural language processing and generation. Weaviate seamlessly integrates with Mistral's APIs, allowing users to leverage Mistral's models directly within the Weaviate database. @@ -12,6 +13,16 @@ These integrations empower developers to build sophisticated AI-driven applicati ## Integrations with Mistral +### Embedding models for semantic search + +![Embedding integration illustration](../_includes/integration_mistral_embedding.png) + +Mistral's embedding models transform text data into high-dimensional vector representations, capturing semantic meaning and context. + +[Weaviate integrates with Mistral's embedding models](./embeddings.md) to enable seamless vectorization of data. This integration allows users to perform semantic and hybrid search operations without the need for additional preprocessing or data transformation steps. + +[Mistral embedding integration page](./embeddings.md) + ### Generative AI models for RAG ![Single prompt RAG integration generates individual outputs per search result](../_includes/integration_mistral_rag_single.png) @@ -34,6 +45,7 @@ You must provide a valid Mistral API key to Weaviate for these integrations. Go Then, go to the relevant integration page to learn how to configure Weaviate with the Mistral models and start using them in your applications. +- [Text Embeddings](./embeddings.md) - [Generative AI](./generative.md) ## Other third party integrations diff --git a/developers/weaviate/model-providers/octoai/index.md b/developers/weaviate/model-providers/octoai/index.md index 1337f49fb6..d73eea526b 100644 --- a/developers/weaviate/model-providers/octoai/index.md +++ b/developers/weaviate/model-providers/octoai/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_octoai.jpg # tags: ['model providers', 'octoai'] --- + :::info Added in `v1.25.0` ::: diff --git a/developers/weaviate/model-providers/ollama/index.md b/developers/weaviate/model-providers/ollama/index.md index a0a8a5a3f9..9865ba0461 100644 --- a/developers/weaviate/model-providers/ollama/index.md +++ b/developers/weaviate/model-providers/ollama/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_ollama.jpg # tags: ['model providers', 'ollama'] --- + The Ollama library allows you to easily run a wide range of models on your own device. Weaviate seamlessly integrates with the Ollama library, allowing users to leverage compatible models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/openai-azure/index.md b/developers/weaviate/model-providers/openai-azure/index.md index 8c81060edb..8e4d3c97f3 100644 --- a/developers/weaviate/model-providers/openai-azure/index.md +++ b/developers/weaviate/model-providers/openai-azure/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_openai_azure.jpg # tags: ['model providers', 'azure', 'openai'] --- + Microsoft Azure offers a wide range of OpenAI models for natural language processing and generation. Weaviate seamlessly integrates with Microsoft Azure's APIs, allowing users to leverage OpenAI's models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/openai/index.md b/developers/weaviate/model-providers/openai/index.md index 1e04ee0a44..4c5376b014 100644 --- a/developers/weaviate/model-providers/openai/index.md +++ b/developers/weaviate/model-providers/openai/index.md @@ -5,6 +5,8 @@ image: og/docs/integrations/provider_integrations_openai.jpg # tags: ['model providers', 'openai'] --- + + :::info Looking for Azure OpenAI integration docs? For Azure OpenAI integration docs, see [this page instead](../openai-azure/index.md). ::: diff --git a/developers/weaviate/model-providers/transformers/embeddings-multimodal.md b/developers/weaviate/model-providers/transformers/embeddings-multimodal.md index eccf4f0f47..1762f90718 100644 --- a/developers/weaviate/model-providers/transformers/embeddings-multimodal.md +++ b/developers/weaviate/model-providers/transformers/embeddings-multimodal.md @@ -355,6 +355,11 @@ Then, set `CLIP_INFERENCE_API="http://localhost:8000"`. If Weaviate is part of t ## Further resources +### Other integrations + +- [Transformers text embedding models + Weaviate](./embeddings.md). +- [Transformers reranker models + Weaviate](./reranker.md). + ### Code examples Once the integrations are configured at the collection, the data management and search operations in Weaviate work identically to any other collection. See the following model-agnostic examples: diff --git a/developers/weaviate/model-providers/transformers/embeddings.md b/developers/weaviate/model-providers/transformers/embeddings.md index fa05b99399..28f7fec324 100644 --- a/developers/weaviate/model-providers/transformers/embeddings.md +++ b/developers/weaviate/model-providers/transformers/embeddings.md @@ -428,6 +428,11 @@ Then, set `TRANSFORMERS_INFERENCE_API="http://localhost:8000"`. If Weaviate is p ## Further resources +### Other integrations + +- [Transformers multi-modal embedding models + Weaviate](./embeddings-multimodal.md). +- [Transformers reranker models + Weaviate](./reranker.md). + ### Chunking This integration automatically chunks text if it exceeds the model's maximum token length before it is passed to the model. It will then return the pooled vectors. diff --git a/developers/weaviate/model-providers/transformers/index.md b/developers/weaviate/model-providers/transformers/index.md index 6b39507f57..6ae4bd2c67 100644 --- a/developers/weaviate/model-providers/transformers/index.md +++ b/developers/weaviate/model-providers/transformers/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_transformers.jpg # tags: ['model providers', 'huggingface', 'transformers'] --- + Hugging Face's Transformers library can be used with a wide range of models for natural language processing. Weaviate seamlessly integrates with the Transformers library, allowing users to leverage compatible models directly within the Weaviate database. diff --git a/developers/weaviate/model-providers/voyageai/index.md b/developers/weaviate/model-providers/voyageai/index.md index 0f387df716..b7852ce2ea 100644 --- a/developers/weaviate/model-providers/voyageai/index.md +++ b/developers/weaviate/model-providers/voyageai/index.md @@ -5,6 +5,7 @@ image: og/docs/integrations/provider_integrations_voyageai.jpg # tags: ['model providers', 'voyageai'] --- + Voyage AI offers a wide range of models for natural language processing. Weaviate seamlessly integrates with Voyage AI's APIs, allowing users to leverage Voyage AI's models directly within the Weaviate database.