OllamaEmbeddings#

class langchain_ollama.embeddings.OllamaEmbeddings[source]#

Bases: BaseModel, Embeddings

Ollama embedding model integration.

Set up a local Ollama instance:

Install the Ollama package and set up a local Ollama instance using the instructions here: ollama/ollama .

You will need to choose a model to serve.

You can view a list of available models via the model library (https://ollama.com/library).

To fetch a model from the Ollama model library use ollama pull <name-of-model>.

For example, to pull the llama3 model:

ollama pull llama3

This will download the default tagged version of the model. Typically, the default points to the latest, smallest sized-parameter model.

  • On Mac, the models will be downloaded to ~/.ollama/models

  • On Linux (or WSL), the models will be stored at /usr/share/ollama/.ollama/models

You can specify the exact version of the model of interest as such ollama pull vicuna:13b-v1.5-16k-q4_0.

To view pulled models:

ollama list

To start serving:

ollama serve

View the Ollama documentation for more commands.

ollama help
Install the langchain-ollama integration package:
pip install -U langchain_ollama
Key init args — completion params:
model: str

Name of Ollama model to use.

base_url: Optional[str]

Base url the model is hosted under.

See full list of supported init args and their descriptions in the params section.

Instantiate:
from langchain_ollama import OllamaEmbeddings

embed = OllamaEmbeddings(
    model="llama3"
)
Embed single text:
input_text = "The meaning of life is 42"
vector = embed.embed_query(input_text)
print(vector[:3])
[-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915]
Embed multiple texts:
 input_texts = ["Document 1...", "Document 2..."]
vectors = embed.embed_documents(input_texts)
print(len(vectors))
# The first 3 coordinates for the first vector
print(vectors[0][:3])
2
[-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915]
Async:
 vector = await embed.aembed_query(input_text)
print(vector[:3])

 # multiple:
 # await embed.aembed_documents(input_texts)
[-0.009100092574954033, 0.005071679595857859, -0.0029193938244134188]

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

param base_url: str | None = None#

Base url the model is hosted under.

param client_kwargs: dict | None = {}#

Additional kwargs to pass to the httpx Client. For a full list of the params, see [this link](https://pydoc.dev/httpx/latest/httpx.Client.html)

param model: str [Required]#

Model name to use.

async aembed_documents(texts: List[str]) List[List[float]][source]#

Embed search docs.

Parameters:

texts (List[str])

Return type:

List[List[float]]

async aembed_query(text: str) List[float][source]#

Embed query text.

Parameters:

text (str)

Return type:

List[float]

embed_documents(texts: List[str]) List[List[float]][source]#

Embed search docs.

Parameters:

texts (List[str])

Return type:

List[List[float]]

embed_query(text: str) List[float][source]#

Embed query text.

Parameters:

text (str)

Return type:

List[float]

Examples using OllamaEmbeddings