embedchain/docs/components/embedding-models.mdx
Embedchain supports several embedding models from the following providers:
<CardGroup cols={4}> <Card title="OpenAI" href="#openai"></Card> <Card title="GoogleAI" href="#google-ai"></Card> <Card title="Azure OpenAI" href="#azure-openai"></Card> <Card title="AWS Bedrock" href="#aws-bedrock"></Card> <Card title="GPT4All" href="#gpt4all"></Card> <Card title="Hugging Face" href="#hugging-face"></Card> <Card title="Vertex AI" href="#vertex-ai"></Card> <Card title="NVIDIA AI" href="#nvidia-ai"></Card> <Card title="Cohere" href="#cohere"></Card> <Card title="Ollama" href="#ollama"></Card> <Card title="Clarifai" href="#clarifai"></Card> </CardGroup>To use OpenAI embedding function, you have to set the OPENAI_API_KEY environment variable. You can obtain the OpenAI API key from the OpenAI Platform.
Once you have obtained the key, you can use it like this:
<CodeGroup>import os
from embedchain import App
os.environ['OPENAI_API_KEY'] = 'xxx'
# load embedding model configuration from config.yaml file
app = App.from_config(config_path="config.yaml")
app.add("https://en.wikipedia.org/wiki/OpenAI")
app.query("What is OpenAI?")
embedder:
provider: openai
config:
model: 'text-embedding-3-small'
text-embedding-3-small and text-embedding-3-large. Embedchain supports both these models. Below you can find YAML config for both:embedder:
provider: openai
config:
model: 'text-embedding-3-small'
embedder:
provider: openai
config:
model: 'text-embedding-3-large'
To use Google AI embedding function, you have to set the GOOGLE_API_KEY environment variable. You can obtain the Google API key from the Google Maker Suite
os.environ["GOOGLE_API_KEY"] = "xxx"
app = App.from_config(config_path="config.yaml")
```yaml config.yaml
embedder:
provider: google
config:
model: 'models/embedding-001'
task_type: "retrieval_document"
title: "Embeddings for Embedchain"
To use AWS Bedrock embedding function, you have to set the AWS environment variable.
<CodeGroup> ```python main.py import os from embedchain import Appos.environ["AWS_ACCESS_KEY_ID"] = "xxx" os.environ["AWS_SECRET_ACCESS_KEY"] = "xxx" os.environ["AWS_REGION"] = "us-west-2"
app = App.from_config(config_path="config.yaml")
```yaml config.yaml
embedder:
provider: aws_bedrock
config:
model: 'amazon.titan-embed-text-v2:0'
vector_dimension: 1024
task_type: "retrieval_document"
title: "Embeddings for Embedchain"
To use Azure OpenAI embedding model, you have to set some of the azure openai related environment variables as given in the code block below:
<CodeGroup>import os
from embedchain import App
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://xxx.openai.azure.com/"
os.environ["AZURE_OPENAI_API_KEY"] = "xxx"
os.environ["OPENAI_API_VERSION"] = "xxx"
app = App.from_config(config_path="config.yaml")
llm:
provider: azure_openai
config:
model: gpt-35-turbo
deployment_name: your_llm_deployment_name
temperature: 0.5
max_tokens: 1000
top_p: 1
stream: false
embedder:
provider: azure_openai
config:
model: text-embedding-ada-002
deployment_name: you_embedding_model_deployment_name
You can find the list of models and deployment name on the Azure OpenAI Platform.
GPT4All supports generating high quality embeddings of arbitrary length documents of text using a CPU optimized contrastively trained Sentence Transformer.
<CodeGroup>from embedchain import App
# load embedding model configuration from config.yaml file
app = App.from_config(config_path="config.yaml")
llm:
provider: gpt4all
config:
model: 'orca-mini-3b-gguf2-q4_0.gguf'
temperature: 0.5
max_tokens: 1000
top_p: 1
stream: false
embedder:
provider: gpt4all
Hugging Face supports generating embeddings of arbitrary length documents of text using Sentence Transformer library. Example of how to generate embeddings using hugging face is given below:
<CodeGroup>from embedchain import App
# load embedding model configuration from config.yaml file
app = App.from_config(config_path="config.yaml")
llm:
provider: huggingface
config:
model: 'google/flan-t5-xxl'
temperature: 0.5
max_tokens: 1000
top_p: 0.5
stream: false
embedder:
provider: huggingface
config:
model: 'sentence-transformers/all-mpnet-base-v2'
model_kwargs:
trust_remote_code: True # Only use if you trust your embedder
Embedchain supports Google's VertexAI embeddings model through a simple interface. You just have to pass the model_name in the config yaml and it would work out of the box.
from embedchain import App
# load embedding model configuration from config.yaml file
app = App.from_config(config_path="config.yaml")
llm:
provider: vertexai
config:
model: 'chat-bison'
temperature: 0.5
top_p: 0.5
embedder:
provider: vertexai
config:
model: 'textembedding-gecko'
NVIDIA AI Foundation Endpoints let you quickly use NVIDIA's AI models, such as Mixtral 8x7B, Llama 2 etc, through our API. These models are available in the NVIDIA NGC catalog, fully optimized and ready to use on NVIDIA's AI platform. They are designed for high speed and easy customization, ensuring smooth performance on any accelerated setup.
In order to use embedding models and LLMs from NVIDIA AI, create an account on NVIDIA NGC Service.
Generate an API key from their dashboard. Set the API key as NVIDIA_API_KEY environment variable. Note that the NVIDIA_API_KEY will start with nvapi-.
Below is an example of how to use LLM model and embedding model from NVIDIA AI:
<CodeGroup>import os
from embedchain import App
os.environ['NVIDIA_API_KEY'] = 'nvapi-xxxx'
config = {
"app": {
"config": {
"id": "my-app",
},
},
"llm": {
"provider": "nvidia",
"config": {
"model": "nemotron_steerlm_8b",
},
},
"embedder": {
"provider": "nvidia",
"config": {
"model": "nvolveqa_40k",
"vector_dimension": 1024,
},
},
}
app = App.from_config(config=config)
app.add("https://www.forbes.com/profile/elon-musk")
answer = app.query("What is the net worth of Elon Musk today?")
# Answer: The net worth of Elon Musk is subject to fluctuations based on the market value of his holdings in various companies.
# As of March 1, 2024, his net worth is estimated to be approximately $210 billion. However, this figure can change rapidly due to stock market fluctuations and other factors.
# Additionally, his net worth may include other assets such as real estate and art, which are not reflected in his stock portfolio.
To use embedding models and LLMs from COHERE, create an account on COHERE.
Generate an API key from their dashboard. Set the API key as COHERE_API_KEY environment variable.
Once you have obtained the key, you can use it like this:
<CodeGroup>import os
from embedchain import App
os.environ['COHERE_API_KEY'] = 'xxx'
# load embedding model configuration from config.yaml file
app = App.from_config(config_path="config.yaml")
embedder:
provider: cohere
config:
model: 'embed-english-light-v3.0'
embed-english-v3.0, embed-multilingual-v3.0, embed-multilingual-light-v3.0, embed-english-v2.0, embed-english-light-v2.0 and embed-multilingual-v2.0. Embedchain supports all these models. Below you can find YAML config for all:embedder:
provider: cohere
config:
model: 'embed-english-v3.0'
vector_dimension: 1024
embedder:
provider: cohere
config:
model: 'embed-multilingual-v3.0'
vector_dimension: 1024
embedder:
provider: cohere
config:
model: 'embed-multilingual-light-v3.0'
vector_dimension: 384
embedder:
provider: cohere
config:
model: 'embed-english-v2.0'
vector_dimension: 4096
embedder:
provider: cohere
config:
model: 'embed-english-light-v2.0'
vector_dimension: 1024
embedder:
provider: cohere
config:
model: 'embed-multilingual-v2.0'
vector_dimension: 768
Ollama enables the use of embedding models, allowing you to generate high-quality embeddings directly on your local machine. Make sure to install Ollama and keep it running before using the embedding model.
You can find the list of models at Ollama Embedding Models.
Below is an example of how to use embedding model Ollama:
<CodeGroup>import os
from embedchain import App
# load embedding model configuration from config.yaml file
app = App.from_config(config_path="config.yaml")
embedder:
provider: ollama
config:
model: 'all-minilm:latest'
Install related dependencies using the following command:
pip install --upgrade 'embedchain[clarifai]'
set the CLARIFAI_PAT as environment variable which you can find in the security page. Optionally you can also pass the PAT key as parameters in LLM/Embedder class.
Now you are all set with exploring Embedchain.
<CodeGroup>import os
from embedchain import App
os.environ["CLARIFAI_PAT"] = "XXX"
# load llm and embedder configuration from config.yaml file
app = App.from_config(config_path="config.yaml")
#Now let's add some data.
app.add("https://www.forbes.com/profile/elon-musk")
#Query the app
response = app.query("what college degrees does elon musk have?")
Head to Clarifai Platform to explore all the State of the Art embedding models available to use.
For passing LLM model inference parameters use model_kwargs argument in the config file. Also you can use api_key argument to pass CLARIFAI_PAT in the config.
llm:
provider: clarifai
config:
model: "https://clarifai.com/mistralai/completion/models/mistral-7B-Instruct"
model_kwargs:
temperature: 0.5
max_tokens: 1000
embedder:
provider: clarifai
config:
model: "https://clarifai.com/clarifai/main/models/BAAI-bge-base-en-v15"