Class AlloyDBEngine (0.8.0)

AlloyDBEngine(
    key: object,
    pool: sqlalchemy.ext.asyncio.engine.AsyncEngine,
    loop: typing.Optional[asyncio.events.AbstractEventLoop],
    thread: typing.Optional[threading.Thread],
)

A class for managing connections to a AlloyDB database.

Methods

AlloyDBEngine

AlloyDBEngine(
    key: object,
    pool: sqlalchemy.ext.asyncio.engine.AsyncEngine,
    loop: typing.Optional[asyncio.events.AbstractEventLoop],
    thread: typing.Optional[threading.Thread],
)

AlloyDBEngine constructor.

Parameters
Name Description
key object

Prevent direct constructor usage.

engine AsyncEngine

Async engine connection pool.

loop Optional[asyncio.AbstractEventLoop]

Async event loop used to create the engine.

thread Optional[Thread]

Thread used to create the engine async.

Exceptions
Type Description
Exception If the constructor is called directly by the user.

_ainit_chat_history_table

_ainit_chat_history_table(table_name: str, schema_name: str = "public") -> None

Create an AlloyDB table to save chat history messages.

Parameters
Name Description
table_name str

The table name to store chat history.

schema_name str

The schema name to store the chat history table. Default: "public".

_ainit_document_table

_ainit_document_table(
    table_name: str,
    schema_name: str = "public",
    content_column: str = "page_content",
    metadata_columns: typing.List[langchain_google_alloydb_pg.engine.Column] = [],
    metadata_json_column: str = "langchain_metadata",
    store_metadata: bool = True,
) -> None

Create a table for saving of langchain documents. If table already exists, a DuplicateTableError error is thrown.

Parameters
Name Description
table_name str

The PgSQL database table name.

schema_name str

The schema name. Default: "public".

content_column str

Name of the column to store document content. Default: "page_content".

metadata_columns List[Column]

A list of Columns to create for custom metadata. Optional.

metadata_json_column str

The column to store extra metadata in JSON format. Default: "langchain_metadata". Optional.

store_metadata bool

Whether to store extra metadata in a metadata column if not described in 'metadata' field list (Default: True).

_ainit_vectorstore_table

_ainit_vectorstore_table(
    table_name: str,
    vector_size: int,
    schema_name: str = "public",
    content_column: str = "content",
    embedding_column: str = "embedding",
    metadata_columns: typing.List[langchain_google_alloydb_pg.engine.Column] = [],
    metadata_json_column: str = "langchain_metadata",
    id_column: typing.Union[
        str, langchain_google_alloydb_pg.engine.Column
    ] = "langchain_id",
    overwrite_existing: bool = False,
    store_metadata: bool = True,
) -> None

Create a table for saving of vectors to be used with AlloyDBVectorStore.

Parameters
Name Description
table_name str

The Postgres database table name.

vector_size int

Vector size for the embedding model to be used.

schema_name str

The schema name. Default: "public".

content_column str

Name of the column to store document content. Default: "page_content".

embedding_column str

Name of the column to store vector embeddings. Default: "embedding".

metadata_columns List[Column]

A list of Columns to create for custom metadata. Default: []. Optional.

metadata_json_column str

The column to store extra metadata in JSON format. Default: "langchain_metadata". Optional.

id_column Union[str, Column]

Column to store ids. Default: "langchain_id" column name with data type UUID. Optional.

overwrite_existing bool

Whether to drop existing table. Default: False.

store_metadata bool

Whether to store metadata in the table. Default: True.

Exceptions
Type Description
DuplicateTableErro
UndefinedObjectErro

_aload_table_schema

_aload_table_schema(
    table_name: str, schema_name: str = "public"
) -> sqlalchemy.sql.schema.Table

Load table schema from an existing table in a PgSQL database, potentially from a specific database schema.

Returns
Type Description
(sqlalchemy.Table) The loaded table, including its table schema information.

_create

_create(
    project_id: str,
    region: str,
    cluster: str,
    instance: str,
    database: str,
    ip_type: typing.Union[str, google.cloud.alloydb.connector.enums.IPTypes],
    user: typing.Optional[str] = None,
    password: typing.Optional[str] = None,
    loop: typing.Optional[asyncio.events.AbstractEventLoop] = None,
    thread: typing.Optional[threading.Thread] = None,
    iam_account_email: typing.Optional[str] = None,
) -> langchain_google_alloydb_pg.engine.AlloyDBEngine

Create an AlloyDBEngine from an AlloyDB instance.

Parameters
Name Description
project_id str

GCP project ID.

region str

Cloud AlloyDB instance region.

cluster str

Cloud AlloyDB cluster name.

instance str

Cloud AlloyDB instance name.

database str

Database name.

ip_type Union[str, IPTypes]

IP address type. Defaults to IPTypes.PUBLIC.

user Optional[str]

Cloud AlloyDB user name. Defaults to None.

password Optional[str]

Cloud AlloyDB user password. Defaults to None.

loop Optional[asyncio.AbstractEventLoop]

Async event loop used to create the engine.

thread Optional[Thread]

Thread used to create the engine async.

iam_account_email Optional[str]

IAM service account email.

Exceptions
Type Description
ValueError Raises error if only one of 'user' or 'password' is specified.
Returns
Type Description
AlloyDBEngine A newly created AlloyDBEngine instance.

_run_as_async

_run_as_async(
    coro: typing.Awaitable[langchain_google_alloydb_pg.engine.T],
) -> langchain_google_alloydb_pg.engine.T

Run an async coroutine asynchronously

_run_as_sync

_run_as_sync(
    coro: typing.Awaitable[langchain_google_alloydb_pg.engine.T],
) -> langchain_google_alloydb_pg.engine.T

Run an async coroutine synchronously

afrom_instance

afrom_instance(
    project_id: str,
    region: str,
    cluster: str,
    instance: str,
    database: str,
    user: typing.Optional[str] = None,
    password: typing.Optional[str] = None,
    ip_type: typing.Union[
        str, google.cloud.alloydb.connector.enums.IPTypes
    ] = IPTypes.PUBLIC,
    iam_account_email: typing.Optional[str] = None,
) -> langchain_google_alloydb_pg.engine.AlloyDBEngine

Create an AlloyDBEngine from an AlloyDB instance.

Parameters
Name Description
project_id str

GCP project ID.

region str

Cloud AlloyDB instance region.

cluster str

Cloud AlloyDB cluster name.

instance str

Cloud AlloyDB instance name.

database str

Cloud AlloyDB database name.

user Optional[str], optional

Cloud AlloyDB user name. Defaults to None.

password Optional[str], optional

Cloud AlloyDB user password. Defaults to None.

ip_type Union[str, IPTypes], optional

IP address type. Defaults to IPTypes.PUBLIC.

iam_account_email Optional[str], optional

IAM service account email. Defaults to None.

Returns
Type Description
AlloyDBEngine A newly created AlloyDBEngine instance.

ainit_chat_history_table

ainit_chat_history_table(table_name: str, schema_name: str = "public") -> None

Create an AlloyDB table to save chat history messages.

Parameters
Name Description
table_name str

The table name to store chat history.

schema_name str

The schema name to store chat history table. Default: "public".

ainit_document_table

ainit_document_table(
    table_name: str,
    schema_name: str = "public",
    content_column: str = "page_content",
    metadata_columns: typing.List[langchain_google_alloydb_pg.engine.Column] = [],
    metadata_json_column: str = "langchain_metadata",
    store_metadata: bool = True,
) -> None

Create a table for saving of langchain documents.

Parameters
Name Description
table_name str

The PgSQL database table name.

schema_name str

The schema name. Default: "public".

content_column str

Name of the column to store document content. Default: "page_content".

metadata_columns List[sqlalchemy.Column]

A list of SQLAlchemy Columns to create for custom metadata. Optional.

metadata_json_column str

The column to store extra metadata in JSON format. Default: "langchain_metadata". Optional.

store_metadata bool

Whether to store extra metadata in a metadata column if not described in 'metadata' field list (Default: True).

Exceptions
Type Description
DuplicateTableErro

ainit_vectorstore_table

ainit_vectorstore_table(
    table_name: str,
    vector_size: int,
    schema_name: str = "public",
    content_column: str = "content",
    embedding_column: str = "embedding",
    metadata_columns: typing.List[langchain_google_alloydb_pg.engine.Column] = [],
    metadata_json_column: str = "langchain_metadata",
    id_column: typing.Union[
        str, langchain_google_alloydb_pg.engine.Column
    ] = "langchain_id",
    overwrite_existing: bool = False,
    store_metadata: bool = True,
) -> None

Create a table for saving of vectors to be used with AlloyDBVectorStore.

Parameters
Name Description
table_name str

The database table name.

vector_size int

Vector size for the embedding model to be used.

schema_name str

The schema name. Default: "public".

content_column str

Name of the column to store document content. Default: "page_content".

embedding_column str

Name of the column to store vector embeddings. Default: "embedding".

metadata_columns List[Column]

A list of Columns to create for custom metadata. Default: []. Optional.

metadata_json_column str

The column to store extra metadata in JSON format. Default: "langchain_metadata". Optional.

id_column Union[str, Column]

Column to store ids. Default: "langchain_id" column name with data type UUID. Optional.

overwrite_existing bool

Whether to drop existing table. Default: False.

store_metadata bool

Whether to store metadata in the table. Default: True.

close

close() -> None

Dispose of connection pool

from_engine

from_engine(
    engine: sqlalchemy.ext.asyncio.engine.AsyncEngine,
    loop: typing.Optional[asyncio.events.AbstractEventLoop] = None,
) -> langchain_google_alloydb_pg.engine.AlloyDBEngine

Create an AlloyDBEngine instance from an AsyncEngine.

from_engine_args

from_engine_args(
    url: typing.Union[str, sqlalchemy.engine.url.URL], **kwargs: typing.Any
) -> langchain_google_alloydb_pg.engine.AlloyDBEngine

Create an AlloyDBEngine instance from arguments

Parameter
Name Description
url Optional[str]

the URL used to connect to a database. Use url or set other arguments.

Exceptions
Type Description
ValueError If not all database url arguments are specified

from_instance

from_instance(
    project_id: str,
    region: str,
    cluster: str,
    instance: str,
    database: str,
    user: typing.Optional[str] = None,
    password: typing.Optional[str] = None,
    ip_type: typing.Union[
        str, google.cloud.alloydb.connector.enums.IPTypes
    ] = IPTypes.PUBLIC,
    iam_account_email: typing.Optional[str] = None,
) -> langchain_google_alloydb_pg.engine.AlloyDBEngine

Create an AlloyDBEngine from an AlloyDB instance.

Parameters
Name Description
project_id str

GCP project ID.

region str

Cloud AlloyDB instance region.

cluster str

Cloud AlloyDB cluster name.

instance str

Cloud AlloyDB instance name.

database str

Database name.

user Optional[str]

Cloud AlloyDB user name. Defaults to None.

password Optional[str]

Cloud AlloyDB user password. Defaults to None.

ip_type Union[str, IPTypes], optional

IP address type. Defaults to IPTypes.PUBLIC.

iam_account_email Optional[str], optional

IAM service account email. Defaults to None.

Returns
Type Description
AlloyDBEngine A newly created AlloyDBEngine instance.

init_chat_history_table

init_chat_history_table(table_name: str, schema_name: str = "public") -> None

Create a Cloud SQL table to store chat history.

Parameters
Name Description
table_name str

Table name to store chat history.

schema_name str

The schema name to store chat history table. Default: "public".

init_document_table

init_document_table(
    table_name: str,
    schema_name: str = "public",
    content_column: str = "page_content",
    metadata_columns: typing.List[langchain_google_alloydb_pg.engine.Column] = [],
    metadata_json_column: str = "langchain_metadata",
    store_metadata: bool = True,
) -> None

Create a table for saving of langchain documents.

Parameters
Name Description
table_name str

The PgSQL database table name.

schema_name str

The schema name to store the PgSQL database table. Default: "public".

content_column str

Name of the column to store document content. Default: "page_content".

metadata_columns List[sqlalchemy.Column]

A list of SQLAlchemy Columns to create for custom metadata. Optional.

metadata_json_column str

The column to store extra metadata in JSON format. Default: "langchain_metadata". Optional.

store_metadata bool

Whether to store extra metadata in a metadata column if not described in 'metadata' field list (Default: True).

Exceptions
Type Description
DuplicateTableErro

init_vectorstore_table

init_vectorstore_table(
    table_name: str,
    vector_size: int,
    schema_name: str = "public",
    content_column: str = "content",
    embedding_column: str = "embedding",
    metadata_columns: typing.List[langchain_google_alloydb_pg.engine.Column] = [],
    metadata_json_column: str = "langchain_metadata",
    id_column: typing.Union[
        str, langchain_google_alloydb_pg.engine.Column
    ] = "langchain_id",
    overwrite_existing: bool = False,
    store_metadata: bool = True,
) -> None

Create a table for saving of vectors to be used with AlloyDBVectorStore.

Parameters
Name Description
table_name str

The database table name.

vector_size int

Vector size for the embedding model to be used.

schema_name str

The schema name. Default: "public".

content_column str

Name of the column to store document content. Default: "page_content".

embedding_column str

Name of the column to store vector embeddings. Default: "embedding".

metadata_columns List[Column]

A list of Columns to create for custom metadata. Default: []. Optional.

metadata_json_column str

The column to store extra metadata in JSON format. Default: "langchain_metadata". Optional.

id_column Union[str, Column]

Column to store ids. Default: "langchain_id" column name with data type UUID. Optional.

overwrite_existing bool

Whether to drop existing table. Default: False.

store_metadata bool

Whether to store metadata in the table. Default: True.