amazon_opensearch
Adapted from the Griptape AI Framework documentation.
__all__ = ['AmazonOpenSearchVectorStoreDriver']
module-attribute
Bases:
OpenSearchVectorStoreDriver
Attributes
Name | Type | Description |
---|---|---|
session | Session | The boto3 session to use. |
service | str | Service name for AWS Signature v4. Values can be 'es' or 'aoss' for for OpenSearch Serverless. Defaults to 'es'. |
http_auth | str | tuple[str, str] | The HTTP authentication credentials to use. Defaults to using credentials in the boto3 session. |
client | OpenSearch | An optional OpenSearch client to use. Defaults to a new client using the host, port, http_auth, use_ssl, and verify_certs attributes. |
Source Code in griptape/drivers/vector/amazon_opensearch_vector_store_driver.py
@define class AmazonOpenSearchVectorStoreDriver(OpenSearchVectorStoreDriver): """A Vector Store Driver for Amazon OpenSearch. Attributes: session: The boto3 session to use. service: Service name for AWS Signature v4. Values can be 'es' or 'aoss' for for OpenSearch Serverless. Defaults to 'es'. http_auth: The HTTP authentication credentials to use. Defaults to using credentials in the boto3 session. client: An optional OpenSearch client to use. Defaults to a new client using the host, port, http_auth, use_ssl, and verify_certs attributes. """ session: Session = field(default=Factory(lambda: import_optional_dependency("boto3").Session()), kw_only=True) service: str = field(default="es", kw_only=True) http_auth: str | tuple[str, str] = field( default=Factory( lambda self: import_optional_dependency("opensearchpy").AWSV4SignerAuth( self.session.get_credentials(), self.session.region_name, self.service, ), takes_self=True, ), ) def upsert_vector( self, vector: list[float], *, vector_id: Optional[str] = None, namespace: Optional[str] = None, meta: Optional[dict] = None, **kwargs, ) -> str: """Inserts or updates a vector in OpenSearch. If a vector with the given vector ID already exists, it is updated; otherwise, a new vector is inserted. Metadata associated with the vector can also be provided. """ vector_id = vector_id or str_to_hash(str(vector)) doc = {"vector": vector, "namespace": namespace, "metadata": meta} doc.update(kwargs) if self.service == "aoss": response = self.client.index(index=self.index_name, body=doc) else: response = self.client.index(index=self.index_name, id=vector_id, body=doc) return response["_id"]
http_auth = field(default=Factory(lambda self: import_optional_dependency('opensearchpy').AWSV4SignerAuth(self.session.get_credentials(), self.session.region_name, self.service), takes_self=True))
class-attribute instance-attributeservice = field(default='es', kw_only=True)
class-attribute instance-attributesession = field(default=Factory(lambda: import_optional_dependency('boto3').Session()), kw_only=True)
class-attribute instance-attribute
upsert_vector(vector, *, vector_id=None, namespace=None, meta=None, **kwargs)
Source Code in griptape/drivers/vector/amazon_opensearch_vector_store_driver.py
def upsert_vector( self, vector: list[float], *, vector_id: Optional[str] = None, namespace: Optional[str] = None, meta: Optional[dict] = None, **kwargs, ) -> str: """Inserts or updates a vector in OpenSearch. If a vector with the given vector ID already exists, it is updated; otherwise, a new vector is inserted. Metadata associated with the vector can also be provided. """ vector_id = vector_id or str_to_hash(str(vector)) doc = {"vector": vector, "namespace": namespace, "metadata": meta} doc.update(kwargs) if self.service == "aoss": response = self.client.index(index=self.index_name, body=doc) else: response = self.client.index(index=self.index_name, id=vector_id, body=doc) return response["_id"]
Could this page be better? Report a problem or suggest an addition!