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-attribute

  • api_key = field(default=None, kw_only=True, metadata={'serializable': False}) class-attribute instance-attribute

  • input_type = field(default='document', kw_only=True, metadata={'serializable': True}) class-attribute instance-attribute

  • model = field(default=DEFAULT_MODEL, kw_only=True, metadata={'serializable': True}) class-attribute instance-attribute

  • 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

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]