voyageai#
__all__ = ['VoyageAiEmbeddingDriver']module-attribute
Bases: BaseEmbeddingDriver “)
Attributes#
Name |
Type |
Description |
|---|---|---|
<a href="voyageai.mdx#griptape.drivers.embedding.voyageai.VoyageAiEmbeddingDriver.model" title="model = field(default=DEFAULT_MODEL, kw_only=True, metadata={'serializable': True}) class-attribute instance-attribute (griptape.drivers.embedding.voyageai.VoyageAiEmbeddingDriver.model)"><code class="language-python">model</code></a> |
str |
VoyageAI embedding model name. Defaults to voyage-large-2.<br/> |
<a href="voyageai.mdx#griptape.drivers.embedding.voyageai.VoyageAiEmbeddingDriver.api_key" title="api_key = field(default=None, kw_only=True, metadata={'serializable': False}) class-attribute instance-attribute (griptape.drivers.embedding.voyageai.VoyageAiEmbeddingDriver.api_key)"><code class="language-python">api_key</code></a> |
Optional[str] |
API key to pass directly. Defaults to VOYAGE_API_KEY environment variable.<br/> |
<a href="voyageai.mdx#griptape.drivers.embedding.voyageai.VoyageAiEmbeddingDriver.tokenizer" title="tokenizer = field(default=Factory(lambda self: VoyageAiTokenizer(model=self.model, api_key=self.api_key), takes_self=True), kw_only=True) class-attribute instance-attribute (griptape.drivers.embedding.voyageai.VoyageAiEmbeddingDriver.tokenizer)"><code class="language-python">tokenizer</code></a> |
<a href="../../tokenizers#griptape.tokenizers.VoyageAiTokenizer" title="VoyageAiTokenizer (griptape.tokenizers.VoyageAiTokenizer)"><code class="language-python">VoyageAiTokenizer</code></a> |
Optionally provide custom VoyageAiTokenizer.<br/> |
<a href="voyageai.mdx#griptape.drivers.embedding.voyageai.VoyageAiEmbeddingDriver.client" title="client() (griptape.drivers.embedding.voyageai.VoyageAiEmbeddingDriver.client)"><code class="language-python">client</code></a> |
Any |
Optionally provide custom VoyageAI Client.<br/> |
<a href="voyageai.mdx#griptape.drivers.embedding.voyageai.VoyageAiEmbeddingDriver.input_type" title="input_type = field(default='document', kw_only=True, metadata={'serializable': True}) class-attribute instance-attribute (griptape.drivers.embedding.voyageai.VoyageAiEmbeddingDriver.input_type)"><code class="language-python">input_type</code></a> |
str |
VoyageAI input type. Defaults to document.<br/> |
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]