voyageai_embedding_driver
Bases:
BaseEmbeddingDriver
Attributes
Name | Type | Description |
---|---|---|
model | str | VoyageAI embedding model name. Defaults to voyage-large-2 . |
api_key | Optional[str] | API key to pass directly. Defaults to VOYAGE_API_KEY environment variable. |
tokenizer | VoyageAiTokenizer | Optionally provide custom VoyageAiTokenizer . |
client | Any | Optionally provide custom VoyageAI Client . |
input_type | str | VoyageAI input type. Defaults to document . |
Source Code in griptape/drivers/embedding/voyageai_embedding_driver.py
@define class VoyageAiEmbeddingDriver(BaseEmbeddingDriver): """VoyageAI Embedding Driver. Attributes: model: VoyageAI embedding model name. Defaults to `voyage-large-2`. api_key: API key to pass directly. Defaults to `VOYAGE_API_KEY` environment variable. tokenizer: Optionally provide custom `VoyageAiTokenizer`. client: Optionally provide custom VoyageAI `Client`. input_type: VoyageAI input type. Defaults to `document`. """ DEFAULT_MODEL = "voyage-large-2" model: str = field(default=DEFAULT_MODEL, kw_only=True, metadata={"serializable": True}) api_key: Optional[str] = field(default=None, kw_only=True, metadata={"serializable": False}) tokenizer: VoyageAiTokenizer = field( default=Factory(lambda self: VoyageAiTokenizer(model=self.model, api_key=self.api_key), takes_self=True), kw_only=True, ) input_type: str = field(default="document", kw_only=True, metadata={"serializable": True}) _client: Optional[Client] = field(default=None, kw_only=True, alias="client", metadata={"serializable": False}) @lazy_property() def client(self) -> Any: return import_optional_dependency("voyageai").Client(api_key=self.api_key) def try_embed_artifact(self, artifact: TextArtifact | ImageArtifact, **kwargs) -> list[float]: if isinstance(artifact, TextArtifact): return self.try_embed_chunk(artifact.value, **kwargs) pil_image = import_optional_dependency("PIL.Image") return self.client.multimodal_embed([[pil_image.open(BytesIO(artifact.value))]], model=self.model).embeddings[0] def try_embed_chunk(self, chunk: str, **kwargs) -> list[float]: return self.client.embed([chunk], model=self.model, input_type=self.input_type).embeddings[0]
DEFAULT_MODEL = 'voyage-large-2'
class-attribute instance-attribute_client = field(default=None, kw_only=True, alias='client', metadata={'serializable': False})
class-attribute instance-attributeapi_key = field(default=None, kw_only=True, metadata={'serializable': False})
class-attribute instance-attributeinput_type = field(default='document', kw_only=True, metadata={'serializable': True})
class-attribute instance-attributemodel = field(default=DEFAULT_MODEL, kw_only=True, metadata={'serializable': True})
class-attribute instance-attributetokenizer = field(default=Factory(lambda self: VoyageAiTokenizer(model=self.model, api_key=self.api_key), takes_self=True), kw_only=True)
class-attribute instance-attribute
client()
Source Code in griptape/drivers/embedding/voyageai_embedding_driver.py
@lazy_property() def client(self) -> Any: return import_optional_dependency("voyageai").Client(api_key=self.api_key)
try_embed_artifact(artifact, **kwargs)
Source Code in griptape/drivers/embedding/voyageai_embedding_driver.py
def try_embed_artifact(self, artifact: TextArtifact | ImageArtifact, **kwargs) -> list[float]: if isinstance(artifact, TextArtifact): return self.try_embed_chunk(artifact.value, **kwargs) pil_image = import_optional_dependency("PIL.Image") return self.client.multimodal_embed([[pil_image.open(BytesIO(artifact.value))]], model=self.model).embeddings[0]
try_embed_chunk(chunk, **kwargs)
Source Code in griptape/drivers/embedding/voyageai_embedding_driver.py
def try_embed_chunk(self, chunk: str, **kwargs) -> list[float]: return self.client.embed([chunk], model=self.model, input_type=self.input_type).embeddings[0]
Could this page be better? Report a problem or suggest an addition!