Bases: BaseEmbeddingDriver
Amazon Bedrock Titan Embedding Driver.
Attributes:
Name |
Type |
Description |
model |
str
|
Embedding model name. Defaults to DEFAULT_MODEL.
|
tokenizer |
BaseTokenizer
|
Optionally provide custom BedrockTitanTokenizer .
|
session |
Session
|
Optionally provide custom boto3.Session .
|
client |
BedrockClient
|
Optionally provide custom bedrock-runtime client.
|
Source code in griptape/drivers/embedding/amazon_bedrock_titan_embedding_driver.py
| @define
class AmazonBedrockTitanEmbeddingDriver(BaseEmbeddingDriver):
"""Amazon Bedrock Titan Embedding Driver.
Attributes:
model: Embedding model name. Defaults to DEFAULT_MODEL.
tokenizer: Optionally provide custom `BedrockTitanTokenizer`.
session: Optionally provide custom `boto3.Session`.
client: Optionally provide custom `bedrock-runtime` client.
"""
DEFAULT_MODEL = "amazon.titan-embed-text-v1"
model: str = field(default=DEFAULT_MODEL, kw_only=True, metadata={"serializable": True})
session: boto3.Session = field(default=Factory(lambda: import_optional_dependency("boto3").Session()), kw_only=True)
tokenizer: BaseTokenizer = field(
default=Factory(lambda self: AmazonBedrockTokenizer(model=self.model), takes_self=True),
kw_only=True,
)
_client: BedrockClient = field(default=None, kw_only=True, alias="client", metadata={"serializable": False})
@lazy_property()
def client(self) -> BedrockClient:
return self.session.client("bedrock-runtime")
def try_embed_chunk(self, chunk: str) -> list[float]:
payload = {"inputText": chunk}
response = self.client.invoke_model(
body=json.dumps(payload),
modelId=self.model,
accept="application/json",
contentType="application/json",
)
response_body = json.loads(response.get("body").read())
return response_body.get("embedding")
|
DEFAULT_MODEL = 'amazon.titan-embed-text-v1'
class-attribute
instance-attribute
model: str = field(default=DEFAULT_MODEL, kw_only=True, metadata={'serializable': True})
class-attribute
instance-attribute
session: boto3.Session = field(default=Factory(lambda: import_optional_dependency('boto3').Session()), kw_only=True)
class-attribute
instance-attribute
tokenizer: BaseTokenizer = field(default=Factory(lambda self: AmazonBedrockTokenizer(model=self.model), takes_self=True), kw_only=True)
class-attribute
instance-attribute
client()
Source code in griptape/drivers/embedding/amazon_bedrock_titan_embedding_driver.py
| @lazy_property()
def client(self) -> BedrockClient:
return self.session.client("bedrock-runtime")
|
try_embed_chunk(chunk)
Source code in griptape/drivers/embedding/amazon_bedrock_titan_embedding_driver.py
| def try_embed_chunk(self, chunk: str) -> list[float]:
payload = {"inputText": chunk}
response = self.client.invoke_model(
body=json.dumps(payload),
modelId=self.model,
accept="application/json",
contentType="application/json",
)
response_body = json.loads(response.get("body").read())
return response_body.get("embedding")
|