Source code for langchain_fireworks.embeddings

from typing import List

from langchain_core.embeddings import Embeddings
from langchain_core.utils import secret_from_env
from openai import OpenAI
from pydantic import BaseModel, ConfigDict, Field, SecretStr, model_validator
from typing_extensions import Self

# type: ignore


[docs] class FireworksEmbeddings(BaseModel, Embeddings): """Fireworks embedding model integration. Setup: Install ``langchain_fireworks`` and set environment variable ``FIREWORKS_API_KEY``. .. code-block:: bash pip install -U langchain_fireworks export FIREWORKS_API_KEY="your-api-key" Key init args — completion params: model: str Name of Fireworks model to use. Key init args — client params: fireworks_api_key: SecretStr Fireworks API key. See full list of supported init args and their descriptions in the params section. Instantiate: .. code-block:: python from langchain_fireworks import FireworksEmbeddings model = FireworksEmbeddings( model='nomic-ai/nomic-embed-text-v1.5' # Use FIREWORKS_API_KEY env var or pass it in directly # fireworks_api_key="..." ) Embed multiple texts: .. code-block:: python vectors = embeddings.embed_documents(['hello', 'goodbye']) # Showing only the first 3 coordinates print(len(vectors)) print(vectors[0][:3]) .. code-block:: python 2 [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] Embed single text: .. code-block:: python input_text = "The meaning of life is 42" vector = embeddings.embed_query('hello') print(vector[:3]) .. code-block:: python [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] """ client: OpenAI = Field(default=None, exclude=True) #: :meta private: fireworks_api_key: SecretStr = Field( alias="api_key", default_factory=secret_from_env( "FIREWORKS_API_KEY", default="", ), ) """Fireworks API key. Automatically read from env variable `FIREWORKS_API_KEY` if not provided. """ model: str = "nomic-ai/nomic-embed-text-v1.5" model_config = ConfigDict( populate_by_name=True, arbitrary_types_allowed=True, ) @model_validator(mode="after") def validate_environment(self) -> Self: """Validate environment variables.""" self.client = OpenAI( api_key=self.fireworks_api_key.get_secret_value(), base_url="https://api.fireworks.ai/inference/v1", ) return self
[docs] def embed_documents(self, texts: List[str]) -> List[List[float]]: """Embed search docs.""" return [ i.embedding for i in self.client.embeddings.create(input=texts, model=self.model).data ]
[docs] def embed_query(self, text: str) -> List[float]: """Embed query text.""" return self.embed_documents([text])[0]