docs: update Google Cloud database integration docs (#18711)

**Description:** update Google Cloud database integration docs
 **Issue:** NA
**Dependencies:** NA
pull/18774/head
Averi Kitsch 6 months ago committed by GitHub
parent 010a234f1e
commit 8accee57a9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -10,7 +10,11 @@
"\n", "\n",
"> [AlloyDB](https://cloud.google.com/alloydb) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. AlloyDB is 100% compatible with PostgreSQL. Extend your database application to build AI-powered experiences leveraging AlloyDB's Langchain integrations.\n", "> [AlloyDB](https://cloud.google.com/alloydb) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. AlloyDB is 100% compatible with PostgreSQL. Extend your database application to build AI-powered experiences leveraging AlloyDB's Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use `AlloyDB for PostgreSQL` to load Documents with the `AlloyDBLoader` class." "This notebook goes over how to use `AlloyDB for PostgreSQL` to load Documents with the `AlloyDBLoader` class.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-alloydb-pg-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-alloydb-pg-python/blob/main/docs/document_loader.ipynb)"
] ]
}, },
{ {
@ -24,7 +28,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
" * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", " * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
" * [Enable the AlloyDB Admin API.](https://console.cloud.google.com/flows/enableapi?apiid=alloydb.googleapis.com)\n", " * [Enable the AlloyDB API](https://console.cloud.google.com/flows/enableapi?apiid=alloydb.googleapis.com)\n",
" * [Create a AlloyDB cluster and instance.](https://cloud.google.com/alloydb/docs/cluster-create)\n", " * [Create a AlloyDB cluster and instance.](https://cloud.google.com/alloydb/docs/cluster-create)\n",
" * [Create a AlloyDB database.](https://cloud.google.com/alloydb/docs/quickstart/create-and-connect)\n", " * [Create a AlloyDB database.](https://cloud.google.com/alloydb/docs/quickstart/create-and-connect)\n",
" * [Add a User to the database.](https://cloud.google.com/alloydb/docs/database-users/about)" " * [Add a User to the database.](https://cloud.google.com/alloydb/docs/database-users/about)"
@ -139,30 +143,6 @@
"! gcloud config set project {PROJECT_ID}" "! gcloud config set project {PROJECT_ID}"
] ]
}, },
{
"cell_type": "markdown",
"id": "rEWWNoNnKOgq",
"metadata": {
"id": "rEWWNoNnKOgq"
},
"source": [
"### 💡 API Enablement\n",
"The `langchain-google-alloydb-pg` package requires that you [enable the AlloyDB Admin API](https://console.cloud.google.com/flows/enableapi?apiid=alloydb.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "5utKIdq7KYi5",
"metadata": {
"id": "5utKIdq7KYi5"
},
"outputs": [],
"source": [
"# enable AlloyDB Admin API\n",
"!gcloud services enable alloydb.googleapis.com"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "f8f2830ee9ca1e01", "id": "f8f2830ee9ca1e01",

@ -10,6 +10,8 @@
"\n", "\n",
"This notebook goes over how to use [Bigtable](https://cloud.google.com/bigtable) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `BigtableLoader` and `BigtableSaver`.\n", "This notebook goes over how to use [Bigtable](https://cloud.google.com/bigtable) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `BigtableLoader` and `BigtableSaver`.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-bigtable-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-bigtable-python/blob/main/docs/document_loader.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-bigtable-python/blob/main/docs/document_loader.ipynb)"
] ]
}, },
@ -22,6 +24,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Enable the Bigtable API](https://console.cloud.google.com/flows/enableapi?apiid=bigtable.googleapis.com)\n",
"* [Create a Bigtable instance](https://cloud.google.com/bigtable/docs/creating-instance)\n", "* [Create a Bigtable instance](https://cloud.google.com/bigtable/docs/creating-instance)\n",
"* [Create a Bigtable table](https://cloud.google.com/bigtable/docs/managing-tables)\n", "* [Create a Bigtable table](https://cloud.google.com/bigtable/docs/managing-tables)\n",
"* [Create Bigtable access credentials](https://developers.google.com/workspace/guides/create-credentials)\n", "* [Create Bigtable access credentials](https://developers.google.com/workspace/guides/create-credentials)\n",
@ -461,7 +464,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.10.6" "version": "3.11.5"
} }
}, },
"nbformat": 4, "nbformat": 4,

@ -4,11 +4,13 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Google Cloud SQL for SQL Server\n", "# Google Cloud SQL for SQL server\n",
"\n", "\n",
"> [Cloud SQL](https://cloud.google.com/sql) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. It offers [MySQL](https://cloud.google.com/sql/mysql), [PostgreSQL](https://cloud.google.com/sql/postgres), and [SQL Server](https://cloud.google.com/sql/sqlserver) database engines. Extend your database application to build AI-powered experiences leveraging Cloud SQL's Langchain integrations.\n", "> [Cloud SQL](https://cloud.google.com/sql) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. It offers [MySQL](https://cloud.google.com/sql/mysql), [PostgreSQL](https://cloud.google.com/sql/postgres), and [SQL Server](https://cloud.google.com/sql/sqlserver) database engines. Extend your database application to build AI-powered experiences leveraging Cloud SQL's Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use [Cloud SQL for SQL Server](https://cloud.google.com/sql/sqlserver) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `MSSQLLoader` and `MSSQLDocumentSaver`.\n", "This notebook goes over how to use [Cloud SQL for SQL server](https://cloud.google.com/sql/sqlserver) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `MSSQLLoader` and `MSSQLDocumentSaver`.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-cloud-sql-mssql-python/).\n",
"\n", "\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-cloud-sql-mssql-python/blob/main/docs/document_loader.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-cloud-sql-mssql-python/blob/main/docs/document_loader.ipynb)"
] ]
@ -22,9 +24,10 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Create a Cloud SQL for SQL Server instance](https://cloud.google.com/sql/docs/sqlserver/create-instance)\n", "* [Enable the Cloud SQL Admin API.](https://console.cloud.google.com/marketplace/product/google/sqladmin.googleapis.com)\n",
"* [Create a Cloud SQL database](https://cloud.google.com/sql/docs/mssql/create-manage-databases)\n", "* [Create a Cloud SQL for SQL server instance](https://cloud.google.com/sql/docs/sqlserver/create-instance)\n",
"* [Add an IAM database user to the database](https://cloud.google.com/sql/docs/sqlserver/add-manage-iam-users#creating-a-database-user) (Optional)\n", "* [Create a Cloud SQL database](https://cloud.google.com/sql/docs/sqlserver/create-manage-databases)\n",
"* [Add an IAM database user to the database](https://cloud.google.com/sql/docs/sqlserver/create-manage-users) (Optional)\n",
"\n", "\n",
"After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts." "After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts."
] ]
@ -170,7 +173,7 @@
"\n", "\n",
"Before saving or loading documents from MSSQL table, we need first configures a connection pool to Cloud SQL database. The `MSSQLEngine` configures a [SQLAlchemy connection pool](https://docs.sqlalchemy.org/en/20/core/pooling.html#module-sqlalchemy.pool) to your Cloud SQL database, enabling successful connections from your application and following industry best practices.\n", "Before saving or loading documents from MSSQL table, we need first configures a connection pool to Cloud SQL database. The `MSSQLEngine` configures a [SQLAlchemy connection pool](https://docs.sqlalchemy.org/en/20/core/pooling.html#module-sqlalchemy.pool) to your Cloud SQL database, enabling successful connections from your application and following industry best practices.\n",
"\n", "\n",
"To create a `MSSQLEngine` using `MSSQLEngine.from_instance()` you need to provide only 6 things:\n", "To create a `MSSQLEngine` using `MSSQLEngine.from_instance()` you need to provide only 4 things:\n",
"\n", "\n",
"1. `project_id` : Project ID of the Google Cloud Project where the Cloud SQL instance is located.\n", "1. `project_id` : Project ID of the Google Cloud Project where the Cloud SQL instance is located.\n",
"1. `region` : Region where the Cloud SQL instance is located.\n", "1. `region` : Region where the Cloud SQL instance is located.\n",
@ -205,6 +208,7 @@
"### Initialize a table\n", "### Initialize a table\n",
"\n", "\n",
"Initialize a table of default schema via `MSSQLEngine.init_document_table(<table_name>)`. Table Columns:\n", "Initialize a table of default schema via `MSSQLEngine.init_document_table(<table_name>)`. Table Columns:\n",
"\n",
"- page_content (type: text)\n", "- page_content (type: text)\n",
"- langchain_metadata (type: JSON)\n", "- langchain_metadata (type: JSON)\n",
"\n", "\n",
@ -227,6 +231,7 @@
"### Save documents\n", "### Save documents\n",
"\n", "\n",
"Save langchain documents with `MSSQLDocumentSaver.add_documents(<documents>)`. To initialize `MSSQLDocumentSaver` class you need to provide 2 things:\n", "Save langchain documents with `MSSQLDocumentSaver.add_documents(<documents>)`. To initialize `MSSQLDocumentSaver` class you need to provide 2 things:\n",
"\n",
"1. `engine` - An instance of a `MSSQLEngine` engine.\n", "1. `engine` - An instance of a `MSSQLEngine` engine.\n",
"2. `table_name` - The name of the table within the Cloud SQL database to store langchain documents." "2. `table_name` - The name of the table within the Cloud SQL database to store langchain documents."
] ]
@ -270,6 +275,7 @@
"metadata": {}, "metadata": {},
"source": [ "source": [
"Load langchain documents with `MSSQLLoader.load()` or `MSSQLLoader.lazy_load()`. `lazy_load` returns a generator that only queries database during the iteration. To initialize `MSSQLDocumentSaver` class you need to provide:\n", "Load langchain documents with `MSSQLLoader.load()` or `MSSQLLoader.lazy_load()`. `lazy_load` returns a generator that only queries database during the iteration. To initialize `MSSQLDocumentSaver` class you need to provide:\n",
"\n",
"1. `engine` - An instance of a `MSSQLEngine` engine.\n", "1. `engine` - An instance of a `MSSQLEngine` engine.\n",
"2. `table_name` - The name of the table within the Cloud SQL database to store langchain documents." "2. `table_name` - The name of the table within the Cloud SQL database to store langchain documents."
] ]
@ -341,6 +347,7 @@
"For table with default schema (page_content, langchain_metadata), the deletion criteria is:\n", "For table with default schema (page_content, langchain_metadata), the deletion criteria is:\n",
"\n", "\n",
"A `row` should be deleted if there exists a `document` in the list, such that\n", "A `row` should be deleted if there exists a `document` in the list, such that\n",
"\n",
"- `document.page_content` equals `row[page_content]`\n", "- `document.page_content` equals `row[page_content]`\n",
"- `document.metadata` equals `row[langchain_metadata]`" "- `document.metadata` equals `row[langchain_metadata]`"
] ]
@ -448,6 +455,7 @@
"metadata": {}, "metadata": {},
"source": [ "source": [
"We can specify the content and metadata we want to load by setting the `content_columns` and `metadata_columns` when initializing the `MSSQLLoader`.\n", "We can specify the content and metadata we want to load by setting the `content_columns` and `metadata_columns` when initializing the `MSSQLLoader`.\n",
"\n",
"1. `content_columns`: The columns to write into the `page_content` of the document.\n", "1. `content_columns`: The columns to write into the `page_content` of the document.\n",
"2. `metadata_columns`: The columns to write into the `metadata` of the document.\n", "2. `metadata_columns`: The columns to write into the `metadata` of the document.\n",
"\n", "\n",
@ -486,12 +494,14 @@
"metadata": {}, "metadata": {},
"source": [ "source": [
"In order to save langchain document into table with customized metadata fields. We need first create such a table via `MSSQLEngine.init_document_table()`, and specify the list of `metadata_columns` we want it to have. In this example, the created table will have table columns:\n", "In order to save langchain document into table with customized metadata fields. We need first create such a table via `MSSQLEngine.init_document_table()`, and specify the list of `metadata_columns` we want it to have. In this example, the created table will have table columns:\n",
"\n",
"- description (type: text): for storing fruit description.\n", "- description (type: text): for storing fruit description.\n",
"- fruit_name (type text): for storing fruit name.\n", "- fruit_name (type text): for storing fruit name.\n",
"- organic (type tinyint(1)): to tell if the fruit is organic.\n", "- organic (type tinyint(1)): to tell if the fruit is organic.\n",
"- other_metadata (type: JSON): for storing other metadata information of the fruit.\n", "- other_metadata (type: JSON): for storing other metadata information of the fruit.\n",
"\n", "\n",
"We can use the following parameters with `MSSQLEngine.init_document_table()` to create the table:\n", "We can use the following parameters with `MSSQLEngine.init_document_table()` to create the table:\n",
"\n",
"1. `table_name`: The name of the table within the Cloud SQL database to store langchain documents.\n", "1. `table_name`: The name of the table within the Cloud SQL database to store langchain documents.\n",
"2. `metadata_columns`: A list of `sqlalchemy.Column` indicating the list of metadata columns we need.\n", "2. `metadata_columns`: A list of `sqlalchemy.Column` indicating the list of metadata columns we need.\n",
"3. `content_column`: The name of column to store `page_content` of langchain document. Default: `page_content`.\n", "3. `content_column`: The name of column to store `page_content` of langchain document. Default: `page_content`.\n",
@ -531,6 +541,7 @@
"metadata": {}, "metadata": {},
"source": [ "source": [
"Save documents with `MSSQLDocumentSaver.add_documents(<documents>)`. As you can see in this example, \n", "Save documents with `MSSQLDocumentSaver.add_documents(<documents>)`. As you can see in this example, \n",
"\n",
"- `document.page_content` will be saved into `description` column.\n", "- `document.page_content` will be saved into `description` column.\n",
"- `document.metadata.fruit_name` will be saved into `fruit_name` column.\n", "- `document.metadata.fruit_name` will be saved into `fruit_name` column.\n",
"- `document.metadata.organic` will be saved into `organic` column.\n", "- `document.metadata.organic` will be saved into `organic` column.\n",
@ -584,6 +595,7 @@
"We can also delete documents from table with customized metadata columns via `MSSQLDocumentSaver.delete(<documents>)`. The deletion criteria is:\n", "We can also delete documents from table with customized metadata columns via `MSSQLDocumentSaver.delete(<documents>)`. The deletion criteria is:\n",
"\n", "\n",
"A `row` should be deleted if there exists a `document` in the list, such that\n", "A `row` should be deleted if there exists a `document` in the list, such that\n",
"\n",
"- `document.page_content` equals `row[page_content]`\n", "- `document.page_content` equals `row[page_content]`\n",
"- For every metadata field `k` in `document.metadata`\n", "- For every metadata field `k` in `document.metadata`\n",
" - `document.metadata[k]` equals `row[k]` or `document.metadata[k]` equals `row[langchain_metadata][k]`\n", " - `document.metadata[k]` equals `row[k]` or `document.metadata[k]` equals `row[langchain_metadata][k]`\n",

@ -6,10 +6,12 @@
"source": [ "source": [
"# Google Cloud SQL for MySQL\n", "# Google Cloud SQL for MySQL\n",
"\n", "\n",
"> [Cloud SQL](https://cloud.google.com/sql) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. It offers [MySQL](https://cloud.google.com/sql/mysql), [PostgreSQL](https://cloud.google.com/sql/postgres), and [SQL Server](https://cloud.google.com/sql/sqlserver) database engines. Extend your database application to build AI-powered experiences leveraging Cloud SQL's Langchain integrations.\n", "> [Cloud SQL](https://cloud.google.com/sql) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. It offers [MySQL](https://cloud.google.com/sql/mysql), [PostgreSQL](https://cloud.google.com/sql/postgresql), and [SQL Server](https://cloud.google.com/sql/sqlserver) database engines. Extend your database application to build AI-powered experiences leveraging Cloud SQL's Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use [Cloud SQL for MySQL](https://cloud.google.com/sql/mysql) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `MySQLLoader` and `MySQLDocumentSaver`.\n", "This notebook goes over how to use [Cloud SQL for MySQL](https://cloud.google.com/sql/mysql) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `MySQLLoader` and `MySQLDocumentSaver`.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-cloud-sql-mysql-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-cloud-sql-mysql-python/blob/main/docs/document_loader.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-cloud-sql-mysql-python/blob/main/docs/document_loader.ipynb)"
] ]
}, },
@ -22,6 +24,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Enable the Cloud SQL Admin API.](https://console.cloud.google.com/marketplace/product/google/sqladmin.googleapis.com)\n",
"* [Create a Cloud SQL for MySQL instance](https://cloud.google.com/sql/docs/mysql/create-instance)\n", "* [Create a Cloud SQL for MySQL instance](https://cloud.google.com/sql/docs/mysql/create-instance)\n",
"* [Create a Cloud SQL database](https://cloud.google.com/sql/docs/mysql/create-manage-databases)\n", "* [Create a Cloud SQL database](https://cloud.google.com/sql/docs/mysql/create-manage-databases)\n",
"* [Add an IAM database user to the database](https://cloud.google.com/sql/docs/mysql/add-manage-iam-users#creating-a-database-user) (Optional)\n", "* [Add an IAM database user to the database](https://cloud.google.com/sql/docs/mysql/add-manage-iam-users#creating-a-database-user) (Optional)\n",
@ -137,24 +140,6 @@
"auth.authenticate_user()" "auth.authenticate_user()"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### API Enablement\n",
"The `langchain-google-cloud-sql-mysql` package requires that you [enable the Cloud SQL Admin API](https://console.cloud.google.com/flows/enableapi?apiid=sqladmin.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# enable Cloud SQL Admin API\n",
"!gcloud services enable sqladmin.googleapis.com"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},

@ -10,7 +10,11 @@
"\n", "\n",
"> [Cloud SQL for PostgreSQL](https://cloud.google.com/sql/docs/postgres) is a fully-managed database service that helps you set up, maintain, manage, and administer your PostgreSQL relational databases on Google Cloud Platform. Extend your database application to build AI-powered experiences leveraging Cloud SQL for PostgreSQL's Langchain integrations.\n", "> [Cloud SQL for PostgreSQL](https://cloud.google.com/sql/docs/postgres) is a fully-managed database service that helps you set up, maintain, manage, and administer your PostgreSQL relational databases on Google Cloud Platform. Extend your database application to build AI-powered experiences leveraging Cloud SQL for PostgreSQL's Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use `Cloud SQL for PostgreSQL` to load Documents with the `PostgreSQLLoader` class." "This notebook goes over how to use `Cloud SQL for PostgreSQL` to load Documents with the `PostgresLoader` class.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-cloud-sql-pg-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-cloud-sql-pg-python/blob/main/docs/document_loader.ipynb)"
] ]
}, },
{ {
@ -37,7 +41,7 @@
}, },
"source": [ "source": [
"### 🦜🔗 Library Installation\n", "### 🦜🔗 Library Installation\n",
"Install the integration library, `langchain-google-cloud-sql-pg`." "Install the integration library, `langchain_google_cloud_sql_pg`."
] ]
}, },
{ {
@ -53,7 +57,7 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"%pip install --upgrade --quiet langchain-google-cloud-sql-pg" "%pip install --upgrade --quiet langchain_google_cloud_sql_pg"
] ]
}, },
{ {
@ -139,30 +143,6 @@
"! gcloud config set project {PROJECT_ID}" "! gcloud config set project {PROJECT_ID}"
] ]
}, },
{
"cell_type": "markdown",
"id": "rEWWNoNnKOgq",
"metadata": {
"id": "rEWWNoNnKOgq"
},
"source": [
"### 💡 API Enablement\n",
"The `langchain_google_cloud_sql_pg` package requires that you [enable the Cloud SQL Admin API](https://console.cloud.google.com/flows/enableapi?apiid=sqladmin.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "5utKIdq7KYi5",
"metadata": {
"id": "5utKIdq7KYi5"
},
"outputs": [],
"source": [
"# enable Cloud SQL Admin API\n",
"!gcloud services enable sqladmin.googleapis.com"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "f8f2830ee9ca1e01", "id": "f8f2830ee9ca1e01",

@ -4,11 +4,13 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Google Firestore in Datastore mode\n", "# Google Firestore in Datastore Mode\n",
"\n", "\n",
"> [Firestore in Datastore mode](https://cloud.google.com/datastore) is a serverless document-oriented database that scales to meet any demand. Extend your database application to build AI-powered experiences leveraging Datastore's Langchain integrations.\n", "> [Firestore in Datastore Mode](https://cloud.google.com/datastore) is a NoSQL document database built for automatic scaling, high performance and ease of application development. Extend your database application to build AI-powered experiences leveraging Datastore's Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use [Firestore in Datastore mode](https://cloud.google.com/datastore) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `DatastoreLoader` and `DatastoreSaver`.\n", "This notebook goes over how to use [Firestore in Datastore Mode](https://cloud.google.com/datastore) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `DatastoreLoader` and `DatastoreSaver`.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-datastore-python/).\n",
"\n", "\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-datastore-python/blob/main/docs/document_loader.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-datastore-python/blob/main/docs/document_loader.ipynb)"
] ]
@ -22,21 +24,12 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Create a Datastore database](https://cloud.google.com/datastore/docs/manage-databases)\n", "* [Enable the Datastore API](https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com)\n",
"* [Create a Firestore in Datastore Mode database](https://cloud.google.com/datastore/docs/manage-databases)\n",
"\n", "\n",
"After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts." "After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts."
] ]
}, },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @markdown Please specify a source for demo purpose.\n",
"SOURCE = \"test\" # @param {type:\"Query\"|\"CollectionGroup\"|\"DocumentReference\"|\"string\"}"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
@ -128,24 +121,6 @@
"auth.authenticate_user()" "auth.authenticate_user()"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### API Enablement\n",
"The `langchain-google-datastore` package requires that you [enable the Datastore API](https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# enable Datastore API\n",
"!gcloud services enable datastore.googleapis.com"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
@ -159,9 +134,7 @@
"source": [ "source": [
"### Save documents\n", "### Save documents\n",
"\n", "\n",
"`DatastoreSaver` can store Documents into Datastore. By default it will try to extract the Document reference from the metadata\n", "Save langchain documents with `DatastoreSaver.upsert_documents(<documents>)`. By default it will try to extract the entity key from the `key` in the Document metadata."
"\n",
"Save langchain documents with `DatastoreSaver.upsert_documents(<documents>)`."
] ]
}, },
{ {
@ -173,8 +146,9 @@
"from langchain_core.documents import Document\n", "from langchain_core.documents import Document\n",
"from langchain_google_datastore import DatastoreSaver\n", "from langchain_google_datastore import DatastoreSaver\n",
"\n", "\n",
"data = [Document(page_content=\"Hello, World!\")]\n",
"saver = DatastoreSaver()\n", "saver = DatastoreSaver()\n",
"\n",
"data = [Document(page_content=\"Hello, World!\")]\n",
"saver.upsert_documents(data)" "saver.upsert_documents(data)"
] ]
}, },
@ -182,9 +156,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"#### Save documents without reference\n", "#### Save documents without key\n",
"\n", "\n",
"If a collection is specified the documents will be stored with an auto generated id." "If a `kind` is specified the documents will be stored with an auto generated id."
] ]
}, },
{ {
@ -193,7 +167,7 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"saver = DatastoreSaver(\"Collection\")\n", "saver = DatastoreSaver(\"MyKind\")\n",
"\n", "\n",
"saver.upsert_documents(data)" "saver.upsert_documents(data)"
] ]
@ -202,58 +176,31 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"#### Save documents with other references" "### Load documents via Kind\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"doc_ids = [\"AnotherCollection/doc_id\", \"foo/bar\"]\n",
"saver = DatastoreSaver()\n",
"\n",
"saver.upsert_documents(documents=data, document_ids=doc_ids)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load from Collection or SubCollection"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Load langchain documents with `DatastoreLoader.load()` or `Datastore.lazy_load()`. `lazy_load` returns a generator that only queries database during the iteration. To initialize `DatastoreLoader` class you need to provide:\n",
"\n", "\n",
"1. `source` - An instance of a Query, CollectionGroup, DocumentReference or the single `\\`-delimited path to a Datastore collection`." "Load langchain documents with `DatastoreLoader.load()` or `DatastoreLoader.lazy_load()`. `lazy_load` returns a generator that only queries database during the iteration. To initialize `DatastoreLoader` class you need to provide:\n",
"1. `source` - The source to load the documents. It can be an instance of Query or the name of the Datastore kind to read from."
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": 6,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"from langchain_google_datastore import DatastoreLoader\n", "from langchain_google_datastore import DatastoreLoader\n",
"\n", "\n",
"loader_collection = DatastoreLoader(\"Collection\")\n", "loader = DatastoreLoader(\"MyKind\")\n",
"loader_subcollection = DatastoreLoader(\"Collection/doc/SubCollection\")\n", "data = loader.load()"
"\n",
"\n",
"data_collection = loader_collection.load()\n",
"data_subcollection = loader_subcollection.load()"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### Load a single Document" "### Load documents via query\n",
"\n",
"Other than loading documents from kind, we can also choose to load documents from query. For example:"
] ]
}, },
{ {
@ -264,49 +211,22 @@
"source": [ "source": [
"from google.cloud import datastore\n", "from google.cloud import datastore\n",
"\n", "\n",
"client = datastore.Client()\n", "client = datastore.Client(database=\"non-default-db\", namespace=\"custom_namespace\")\n",
"doc_ref = client.collection(\"foo\").document(\"bar\")\n", "query_load = client.query(kind=\"MyKind\")\n",
"query_load.add_filter(\"region\", \"=\", \"west_coast\")\n",
"\n", "\n",
"loader_document = DatastoreLoader(doc_ref)\n", "loader_document = DatastoreLoader(query_load)\n",
"\n", "\n",
"data = loader_document.load()" "data = loader_document.load()"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load from CollectionGroup or Query"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from google.cloud.datastore import CollectionGroup, FieldFilter, Query\n",
"\n",
"col_ref = client.collection(\"col_group\")\n",
"collection_group = CollectionGroup(col_ref)\n",
"\n",
"loader_group = DatastoreLoader(collection_group)\n",
"\n",
"col_ref = client.collection(\"collection\")\n",
"query = col_ref.where(filter=FieldFilter(\"region\", \"==\", \"west_coast\"))\n",
"\n",
"loader_query = DatastoreLoader(query)"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### Delete documents\n", "### Delete documents\n",
"\n", "\n",
"Delete a list of langchain documents from Datastore collection with `DatastoreSaver.delete_documents(<documents>)`.\n", "Delete a list of langchain documents from Datastore with `DatastoreSaver.delete_documents(<documents>)`."
"\n",
"If document ids is provided, the Documents will be ignored."
] ]
}, },
{ {
@ -319,8 +239,13 @@
"\n", "\n",
"saver.delete_documents(data)\n", "saver.delete_documents(data)\n",
"\n", "\n",
"keys_to_delete = [\n",
" [\"Kind1\", \"identifier\"],\n",
" [\"Kind2\", 123],\n",
" [\"Kind3\", \"identifier\", \"NestedKind\", 456],\n",
"]\n",
"# The Documents will be ignored and only the document ids will be used.\n", "# The Documents will be ignored and only the document ids will be used.\n",
"saver.delete_documents(data, doc_ids)" "saver.delete_documents(data, keys_to_delete)"
] ]
}, },
{ {
@ -334,19 +259,19 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### Load documents with customize document page content & metadata\n", "### Load documents with customized document page content & metadata\n",
"\n", "\n",
"The arguments of `page_content_fields` and `metadata_fields` will specify the Datastore Document fields to be written into LangChain Document `page_content` and `metadata`." "The arguments of `page_content_properties` and `metadata_properties` will specify the Entity properties to be written into LangChain Document `page_content` and `metadata`."
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": 8,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"loader = DatastoreLoader(\n", "loader = DatastoreLoader(\n",
" source=\"foo/bar/subcol\",\n", " source=\"MyKind\",\n",
" page_content_fields=[\"data_field\"],\n", " page_content_fields=[\"data_field\"],\n",
" metadata_fields=[\"metadata_field\"],\n", " metadata_fields=[\"metadata_field\"],\n",
")\n", ")\n",
@ -358,7 +283,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"#### Customize Page Content Format\n", "### Customize Page Content Format\n",
"\n", "\n",
"When the `page_content` contains only one field the information will be the field value only. Otherwise the `page_content` will be in JSON format." "When the `page_content` contains only one field the information will be the field value only. Otherwise the `page_content` will be in JSON format."
] ]
@ -377,7 +302,7 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"from google.auth import compute_engine\n", "from google.auth import compute_engine\n",
"from google.cloud.datastore import Client\n", "from google.cloud.firestore import Client\n",
"\n", "\n",
"client = Client(database=\"non-default-db\", creds=compute_engine.Credentials())\n", "client = Client(database=\"non-default-db\", creds=compute_engine.Credentials())\n",
"loader = DatastoreLoader(\n", "loader = DatastoreLoader(\n",

@ -2,26 +2,29 @@
"cells": [ "cells": [
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {
"id": "NKbPFu-GWFDV"
},
"source": [ "source": [
"# Google El Carro Oracle Operator\n", "# Google El Carro for Oracle Workloads\n",
">\n", "\n",
"Google [El Carro Oracle Operator](https://github.com/GoogleCloudPlatform/elcarro-oracle-operator)\n", "> Google [El Carro Oracle Operator](https://github.com/GoogleCloudPlatform/elcarro-oracle-operator)\n",
"offers a way to run Oracle databases in Kubernetes as a portable, open source,\n", "offers a way to run Oracle databases in Kubernetes as a portable, open source,\n",
"community driven, no vendor lock-in container orchestration system. El Carro\n", "community driven, no vendor lock-in container orchestration system. El Carro\n",
"provides a powerful declarative API for comprehensive and consistent\n", "provides a powerful declarative API for comprehensive and consistent\n",
"configuration and deployment as well as for real-time operations and\n", "configuration and deployment as well as for real-time operations and\n",
"monitoring.\n", "monitoring.\n",
"Extend your Oracle database's capabilities to build AI-powered experiences by\n", "Extend your Oracle database's capabilities to build AI-powered experiences\n",
"leveraging the El Carro Langchain integration.\n", "by leveraging the El Carro Langchain integration.\n",
"\n", "\n",
"This guide goes over how to use El Carro Langchain integration to\n", "This guide goes over how to use El Carro Langchain integration to\n",
"[save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/)\n", "[save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/)\n",
"with `ElCarroLoader` and `ElCarroDocumentSaver`. This integration works for\n", "with `ElCarroLoader` and `ElCarroDocumentSaver`. This integration works for any Oracle database, regardless of where it is running.\n",
"any Oracle database, regardless of where it is running." "\n",
], "Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-el-carro-python/).\n",
"metadata": { "\n",
"collapsed": false "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-el-carro-python/blob/main/docs/document_loader.ipynb)"
} ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
@ -75,6 +78,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [], "outputs": [],
"source": [ "source": [
"# @title Set Your Values Here { display-mode: \"form\" }\n", "# @title Set Your Values Here { display-mode: \"form\" }\n",
@ -84,45 +90,46 @@
"TABLE_NAME = \"message_store\" # @param {type: \"string\"}\n", "TABLE_NAME = \"message_store\" # @param {type: \"string\"}\n",
"USER = \"my-user\" # @param {type: \"string\"}\n", "USER = \"my-user\" # @param {type: \"string\"}\n",
"PASSWORD = input(\"Please provide a password to be used for the database user: \")" "PASSWORD = input(\"Please provide a password to be used for the database user: \")"
], ]
"metadata": {
"collapsed": false
}
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [ "source": [
"\n", "\n",
"If you are using El Carro, you can find the hostname and port values in the\n", "If you are using El Carro, you can find the hostname and port values in the\n",
"status of the El Carro Kubernetes instance.\n", "status of the El Carro Kubernetes instance.\n",
"Use the user password you created for your PDB.\n", "Use the user password you created for your PDB.\n",
"Example" "\n",
], "Example Ouput:\n"
"metadata": { ]
"collapsed": false
}
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [ "source": [
"```\n",
"kubectl get -w instances.oracle.db.anthosapis.com -n db\n", "kubectl get -w instances.oracle.db.anthosapis.com -n db\n",
"NAME DB ENGINE VERSION EDITION ENDPOINT URL DB NAMES BACKUP ID READYSTATUS READYREASON DBREADYSTATUS DBREADYREASON\n", "NAME DB ENGINE VERSION EDITION ENDPOINT URL DB NAMES BACKUP ID READYSTATUS READYREASON DBREADYSTATUS DBREADYREASON\n",
"mydb Oracle 18c Express mydb-svc.db 34.71.69.25:6021 False CreateInProgress" "\n",
], "mydb Oracle 18c Express mydb-svc.db 34.71.69.25:6021 ['pdbname'] TRUE CreateComplete True CreateComplete\n",
"metadata": { "```"
"collapsed": false ]
}
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [ "source": [
"### ElCarroEngine Connection Pool\n", "### ElCarroEngine Connection Pool\n",
"\n", "\n",
"`ElCarroEngine` configures a connection pool to your Oracle database, enabling successful connections from your application and following industry best practices." "`ElCarroEngine` configures a connection pool to your Oracle database, enabling successful connections from your application and following industry best practices."
], ]
"metadata": {
"collapsed": false
}
}, },
{ {
"cell_type": "code", "cell_type": "code",
@ -135,11 +142,11 @@
"from langchain_google_el_carro import ElCarroEngine\n", "from langchain_google_el_carro import ElCarroEngine\n",
"\n", "\n",
"elcarro_engine = ElCarroEngine.from_instance(\n", "elcarro_engine = ElCarroEngine.from_instance(\n",
" db_host=\"127.0.0.1\",\n", " db_host=HOST,\n",
" db_port=3307,\n", " db_port=PORT,\n",
" db_name=\"PDB1\",\n", " db_name=DATABASE,\n",
" db_user=\"scott\",\n", " db_user=USER,\n",
" db_password=\"tiger\",\n", " db_password=PASSWORD,\n",
")" ")"
] ]
}, },
@ -152,7 +159,7 @@
"### Initialize a table\n", "### Initialize a table\n",
"\n", "\n",
"Initialize a table of default schema\n", "Initialize a table of default schema\n",
"via `elcarro_engine.init_document_table(<TABLE_NAME>)`. Table Columns:\n", "via `elcarro_engine.init_document_table(<table_name>)`. Table Columns:\n",
"\n", "\n",
"- page_content (type: text)\n", "- page_content (type: text)\n",
"- langchain_metadata (type: JSON)" "- langchain_metadata (type: JSON)"
@ -166,9 +173,9 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"TABLE_NAME = \"doc_table\"\n", "elcarro_engine.drop_document_table(TABLE_NAME)\n",
"elcarro_engine.init_document_table(\n", "elcarro_engine.init_document_table(\n",
" TABLE_NAME=TABLE_NAME,\n", " table_name=TABLE_NAME,\n",
")" ")"
] ]
}, },
@ -184,7 +191,7 @@
"To initialize `ElCarroDocumentSaver` class you need to provide 2 things:\n", "To initialize `ElCarroDocumentSaver` class you need to provide 2 things:\n",
"\n", "\n",
"1. `elcarro_engine` - An instance of a `ElCarroEngine` engine.\n", "1. `elcarro_engine` - An instance of a `ElCarroEngine` engine.\n",
"2. `TABLE_NAME` - The name of the table within the Oracle database to store\n", "2. `table_name` - The name of the table within the Oracle database to store\n",
" langchain documents." " langchain documents."
] ]
}, },
@ -206,7 +213,7 @@
"\n", "\n",
"saver = ElCarroDocumentSaver(\n", "saver = ElCarroDocumentSaver(\n",
" elcarro_engine=elcarro_engine,\n", " elcarro_engine=elcarro_engine,\n",
" TABLE_NAME=TABLE_NAME,\n", " table_name=TABLE_NAME,\n",
")\n", ")\n",
"saver.add_documents([doc])" "saver.add_documents([doc])"
] ]
@ -225,7 +232,7 @@
"To initialize `ElCarroLoader` class you need to provide:\n", "To initialize `ElCarroLoader` class you need to provide:\n",
"\n", "\n",
"1. `elcarro_engine` - An instance of a `ElCarroEngine` engine.\n", "1. `elcarro_engine` - An instance of a `ElCarroEngine` engine.\n",
"2. `TABLE_NAME` - The name of the table within the Oracle database to store\n", "2. `table_name` - The name of the table within the Oracle database to store\n",
" langchain documents.\n" " langchain documents.\n"
] ]
}, },
@ -239,7 +246,7 @@
"source": [ "source": [
"from langchain_google_el_carro import ElCarroLoader\n", "from langchain_google_el_carro import ElCarroLoader\n",
"\n", "\n",
"loader = ElCarroLoader(elcarro_engine=elcarro_engine, TABLE_NAME=TABLE_NAME)\n", "loader = ElCarroLoader(elcarro_engine=elcarro_engine, table_name=TABLE_NAME)\n",
"docs = loader.lazy_load()\n", "docs = loader.lazy_load()\n",
"for doc in docs:\n", "for doc in docs:\n",
" print(\"Loaded documents:\", doc)" " print(\"Loaded documents:\", doc)"
@ -269,7 +276,7 @@
"\n", "\n",
"loader = ElCarroLoader(\n", "loader = ElCarroLoader(\n",
" elcarro_engine=elcarro_engine,\n", " elcarro_engine=elcarro_engine,\n",
" query=f\"SELECT * FROM {TABLE_NAME} WHERE json_value(extra_json_metadata, '$.shape') = 'round'\",\n", " query=f\"SELECT * FROM {TABLE_NAME} WHERE json_value(langchain_metadata, '$.organic') = '1'\",\n",
")\n", ")\n",
"onedoc = loader.load()\n", "onedoc = loader.load()\n",
"print(onedoc)" "print(onedoc)"
@ -353,6 +360,7 @@
" price_per_unit NUMBER(6,2) NOT NULL,\n", " price_per_unit NUMBER(6,2) NOT NULL,\n",
" organic NUMBER(3) NOT NULL\n", " organic NUMBER(3) NOT NULL\n",
")\"\"\"\n", ")\"\"\"\n",
"elcarro_engine.drop_document_table(TABLE_NAME)\n",
"\n", "\n",
"with elcarro_engine.connect() as conn:\n", "with elcarro_engine.connect() as conn:\n",
" conn.execute(sqlalchemy.text(create_table_query))\n", " conn.execute(sqlalchemy.text(create_table_query))\n",
@ -406,7 +414,7 @@
"source": [ "source": [
"loader = ElCarroLoader(\n", "loader = ElCarroLoader(\n",
" elcarro_engine=elcarro_engine,\n", " elcarro_engine=elcarro_engine,\n",
" TABLE_NAME=TABLE_NAME,\n", " table_name=TABLE_NAME,\n",
")\n", ")\n",
"loaded_docs = loader.load()\n", "loaded_docs = loader.load()\n",
"print(f\"Loaded Documents: [{loaded_docs}]\")" "print(f\"Loaded Documents: [{loaded_docs}]\")"
@ -442,7 +450,7 @@
"source": [ "source": [
"loader = ElCarroLoader(\n", "loader = ElCarroLoader(\n",
" elcarro_engine=elcarro_engine,\n", " elcarro_engine=elcarro_engine,\n",
" TABLE_NAME=TABLE_NAME,\n", " table_name=TABLE_NAME,\n",
" content_columns=[\n", " content_columns=[\n",
" \"variety\",\n", " \"variety\",\n",
" \"quantity_in_stock\",\n", " \"quantity_in_stock\",\n",
@ -463,13 +471,13 @@
"source": [ "source": [
"### Save document with customized page content & metadata\n", "### Save document with customized page content & metadata\n",
"\n", "\n",
"In order to save langchain document into table with customized metadata fields.\n", "In order to save langchain document into table with customized metadata fields\n",
"We need first create such a table via `ElCarroEngine.init_document_table()`, and\n", "we need first create such a table via `ElCarroEngine.init_document_table()`, and\n",
"specify the list of `metadata_columns` we want it to have. In this example, the\n", "specify the list of `metadata_columns` we want it to have. In this example, the\n",
"created table will have table columns:\n", "created table will have table columns:\n",
"\n", "\n",
"- content (type: text): for storing fruit description.\n", "- content (type: text): for storing fruit description.\n",
"- type (type text): for storing fruit type.\n", "- type (type VARCHAR2(200)): for storing fruit type.\n",
"- weight (type INT): for storing fruit weight.\n", "- weight (type INT): for storing fruit weight.\n",
"- extra_json_metadata (type: JSON): for storing other metadata information of the\n", "- extra_json_metadata (type: JSON): for storing other metadata information of the\n",
" fruit.\n", " fruit.\n",
@ -477,7 +485,7 @@
"We can use the following parameters\n", "We can use the following parameters\n",
"with `elcarro_engine.init_document_table()` to create the table:\n", "with `elcarro_engine.init_document_table()` to create the table:\n",
"\n", "\n",
"1. `TABLE_NAME`: The name of the table within the Oracle database to store\n", "1. `table_name`: The name of the table within the Oracle database to store\n",
" langchain documents.\n", " langchain documents.\n",
"2. `metadata_columns`: A list of `sqlalchemy.Column` indicating the list of\n", "2. `metadata_columns`: A list of `sqlalchemy.Column` indicating the list of\n",
" metadata columns we need.\n", " metadata columns we need.\n",
@ -496,8 +504,9 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"elcarro_engine.drop_document_table(TABLE_NAME)\n",
"elcarro_engine.init_document_table(\n", "elcarro_engine.init_document_table(\n",
" TABLE_NAME=TABLE_NAME,\n", " table_name=TABLE_NAME,\n",
" metadata_columns=[\n", " metadata_columns=[\n",
" sqlalchemy.Column(\"type\", sqlalchemy.dialects.oracle.VARCHAR2(200)),\n", " sqlalchemy.Column(\"type\", sqlalchemy.dialects.oracle.VARCHAR2(200)),\n",
" sqlalchemy.Column(\"weight\", sqlalchemy.INT),\n", " sqlalchemy.Column(\"weight\", sqlalchemy.INT),\n",
@ -516,7 +525,7 @@
"Save documents with `ElCarroDocumentSaver.add_documents(<documents>)`. As you\n", "Save documents with `ElCarroDocumentSaver.add_documents(<documents>)`. As you\n",
"can see in this example,\n", "can see in this example,\n",
"\n", "\n",
"- `document.page_content` will be saved into `page_content` column.\n", "- `document.page_content` will be saved into `content` column.\n",
"- `document.metadata.type` will be saved into `type` column.\n", "- `document.metadata.type` will be saved into `type` column.\n",
"- `document.metadata.weight` will be saved into `weight` column.\n", "- `document.metadata.weight` will be saved into `weight` column.\n",
"- `document.metadata.organic` will be saved into `extra_json_metadata` column in\n", "- `document.metadata.organic` will be saved into `extra_json_metadata` column in\n",
@ -540,11 +549,25 @@
"\n", "\n",
"saver = ElCarroDocumentSaver(\n", "saver = ElCarroDocumentSaver(\n",
" elcarro_engine=elcarro_engine,\n", " elcarro_engine=elcarro_engine,\n",
" TABLE_NAME=TABLE_NAME,\n", " table_name=TABLE_NAME,\n",
" content_column=\"content\",\n", " content_column=\"content\",\n",
" metadata_json_column=\"extra_json_metadata\",\n", " metadata_json_column=\"extra_json_metadata\",\n",
")\n", ")\n",
"saver.add_documents([doc])" "saver.add_documents([doc])\n",
"\n",
"loader = ElCarroLoader(\n",
" elcarro_engine=elcarro_engine,\n",
" table_name=TABLE_NAME,\n",
" content_columns=[\"content\"],\n",
" metadata_columns=[\n",
" \"type\",\n",
" \"weight\",\n",
" ],\n",
" metadata_json_column=\"extra_json_metadata\",\n",
")\n",
"\n",
"loaded_docs = loader.load()\n",
"print(f\"Loaded Document: [{loaded_docs[0]}]\")"
] ]
}, },
{ {
@ -576,7 +599,8 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"saver.delete(loaded_docs)\n", "loader = ElCarroLoader(elcarro_engine=elcarro_engine, table_name=TABLE_NAME)\n",
"saver.delete(loader.load())\n",
"print(f\"Documents left: {len(loader.load())}\")" "print(f\"Documents left: {len(loader.load())}\")"
] ]
}, },

@ -10,6 +10,8 @@
"\n", "\n",
"This notebook goes over how to use [Firestore](https://cloud.google.com/firestore) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `FirestoreLoader` and `FirestoreSaver`.\n", "This notebook goes over how to use [Firestore](https://cloud.google.com/firestore) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `FirestoreLoader` and `FirestoreSaver`.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-firestore-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-firestore-python/blob/main/docs/document_loader.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-firestore-python/blob/main/docs/document_loader.ipynb)"
] ]
}, },
@ -22,6 +24,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Enable the Firestore API](https://console.cloud.google.com/flows/enableapi?apiid=firestore.googleapis.com)\n",
"* [Create a Firestore database](https://cloud.google.com/firestore/docs/manage-databases)\n", "* [Create a Firestore database](https://cloud.google.com/firestore/docs/manage-databases)\n",
"\n", "\n",
"After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts." "After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts."
@ -128,24 +131,6 @@
"auth.authenticate_user()" "auth.authenticate_user()"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### API Enablement\n",
"The `langchain-google-firestore` package requires that you [enable the Firestore Admin API](https://console.cloud.google.com/flows/enableapi?apiid=firestore.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# enable Firestore Admin API\n",
"!gcloud services enable firestore.googleapis.com"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
@ -170,7 +155,7 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"from langchain_core.documents.base import Document\n", "from langchain_core.documents import Document\n",
"from langchain_google_firestore import FirestoreSaver\n", "from langchain_google_firestore import FirestoreSaver\n",
"\n", "\n",
"saver = FirestoreSaver()\n", "saver = FirestoreSaver()\n",
@ -232,7 +217,7 @@
"source": [ "source": [
"Load langchain documents with `FirestoreLoader.load()` or `Firestore.lazy_load()`. `lazy_load` returns a generator that only queries database during the iteration. To initialize `FirestoreLoader` class you need to provide:\n", "Load langchain documents with `FirestoreLoader.load()` or `Firestore.lazy_load()`. `lazy_load` returns a generator that only queries database during the iteration. To initialize `FirestoreLoader` class you need to provide:\n",
"\n", "\n",
"1. `source` - An instance of a Query, CollectionGroup, DocumentReference or the single `\\`-delimited path to a Firestore collection`." "1. `source` - An instance of a Query, CollectionGroup, DocumentReference or the single `\\`-delimited path to a Firestore collection."
] ]
}, },
{ {

@ -12,6 +12,8 @@
"\n", "\n",
"This notebook goes over how to use [Memorystore for Redis](https://cloud.google.com/memorystore/docs/redis/memorystore-for-redis-overview) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `MemorystoreDocumentLoader` and `MemorystoreDocumentSaver`.\n", "This notebook goes over how to use [Memorystore for Redis](https://cloud.google.com/memorystore/docs/redis/memorystore-for-redis-overview) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `MemorystoreDocumentLoader` and `MemorystoreDocumentSaver`.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-memorystore-redis-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-memorystore-redis-python/blob/main/docs/document_loader.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-memorystore-redis-python/blob/main/docs/document_loader.ipynb)"
] ]
}, },
@ -24,6 +26,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Enable the Memorystore for Redis API](https://console.cloud.google.com/flows/enableapi?apiid=redis.googleapis.com)\n",
"* [Create a Memorystore for Redis instance](https://cloud.google.com/memorystore/docs/redis/create-instance-console). Ensure that the version is greater than or equal to 5.0.\n", "* [Create a Memorystore for Redis instance](https://cloud.google.com/memorystore/docs/redis/create-instance-console). Ensure that the version is greater than or equal to 5.0.\n",
"\n", "\n",
"After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts." "After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts."
@ -159,7 +162,7 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"import redis\n", "import redis\n",
"from langchain_core.documents.base import Document\n", "from langchain_core.documents import Document\n",
"from langchain_google_memorystore_redis import MemorystoreDocumentSaver\n", "from langchain_google_memorystore_redis import MemorystoreDocumentSaver\n",
"\n", "\n",
"test_docs = [\n", "test_docs = [\n",

@ -6,10 +6,12 @@
"source": [ "source": [
"# Google Spanner\n", "# Google Spanner\n",
"\n", "\n",
"> [Spanner](https://cloud.google.com/spanner) is a highly scalable database that combines unlimited scalability with relational semantics, such as secondary indexes, strong consistency, schemas, and SQL providing 99.999% availability in one easy solution. Extend your database application to build AI-powered experiences leveraging Spanner's Langchain integrations.\n", "> [Spanner](https://cloud.google.com/spanner) is a highly scalable database that combines unlimited scalability with relational semantics, such as secondary indexes, strong consistency, schemas, and SQL providing 99.999% availability in one easy solution.\n",
"\n", "\n",
"This notebook goes over how to use [Spanner](https://cloud.google.com/spanner) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `SpannerLoader` and `SpannerDocumentSaver`.\n", "This notebook goes over how to use [Spanner](https://cloud.google.com/spanner) to [save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/) with `SpannerLoader` and `SpannerDocumentSaver`.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-spanner-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-spanner-python/blob/main/docs/document_loader.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-spanner-python/blob/main/docs/document_loader.ipynb)"
] ]
}, },
@ -22,6 +24,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Enable the Cloud Spanner API](https://console.cloud.google.com/flows/enableapi?apiid=spanner.googleapis.com)\n",
"* [Create a Spanner instance](https://cloud.google.com/spanner/docs/create-manage-instances)\n", "* [Create a Spanner instance](https://cloud.google.com/spanner/docs/create-manage-instances)\n",
"* [Create a Spanner database](https://cloud.google.com/spanner/docs/create-manage-databases)\n", "* [Create a Spanner database](https://cloud.google.com/spanner/docs/create-manage-databases)\n",
"* [Create a Spanner table](https://cloud.google.com/spanner/docs/create-query-database-console#create-schema)\n", "* [Create a Spanner table](https://cloud.google.com/spanner/docs/create-query-database-console#create-schema)\n",
@ -58,7 +61,7 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"%pip install -upgrade --quiet langchain-google-spanner" "%pip install -upgrade --quiet langchain-google-spanner langchain"
] ]
}, },
{ {
@ -256,6 +259,34 @@
"## Advanced Usage" "## Advanced Usage"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Custom client\n",
"\n",
"The client created by default is the default client. To pass in `credentials` and `project` explicitly, a custom client can be passed to the constructor."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from google.cloud import spanner\n",
"from google.oauth2 import service_account\n",
"\n",
"creds = service_account.Credentials.from_service_account_file(\"/path/to/key.json\")\n",
"custom_client = spanner.Client(project=\"my-project\", credentials=creds)\n",
"loader = SpannerLoader(\n",
" INSTANCE_ID,\n",
" DATABASE_ID,\n",
" query,\n",
" client=custom_client,\n",
")"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
@ -412,9 +443,7 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"from google.cloud import spanner\n", "from google.cloud import spanner\n",
"from google.oauth2 import service_account\n",
"\n", "\n",
"creds = service_account.Credentials.from_service_account_file(\"/path/to/key.json\")\n",
"custom_client = spanner.Client(project=\"my-project\", credentials=creds)\n", "custom_client = spanner.Client(project=\"my-project\", credentials=creds)\n",
"saver = SpannerDocumentSaver(\n", "saver = SpannerDocumentSaver(\n",
" INSTANCE_ID,\n", " INSTANCE_ID,\n",

@ -8,7 +8,11 @@
"\n", "\n",
"> [AlloyDB](https://cloud.google.com/alloydb) is a fully managed PostgreSQL compatible database service for your most demanding enterprise workloads. AlloyDB combines the best of Google with PostgreSQL, for superior performance, scale, and availability. Extend your database application to build AI-powered experiences leveraging AlloyDB Langchain integrations.\n", "> [AlloyDB](https://cloud.google.com/alloydb) is a fully managed PostgreSQL compatible database service for your most demanding enterprise workloads. AlloyDB combines the best of Google with PostgreSQL, for superior performance, scale, and availability. Extend your database application to build AI-powered experiences leveraging AlloyDB Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use `AlloyDB for PostgreSQL` to store chat message history with the `AlloyDBChatMessageHistory` class." "This notebook goes over how to use `AlloyDB for PostgreSQL` to store chat message history with the `AlloyDBChatMessageHistory` class.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-alloydb-pg-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-alloydb-pg-python/blob/main/docs/chat_message_history.ipynb)"
] ]
}, },
{ {
@ -20,6 +24,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
" * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", " * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
" * [Enable the AlloyDB API](https://console.cloud.google.com/flows/enableapi?apiid=alloydb.googleapis.com)\n",
" * [Create a AlloyDB instance](https://cloud.google.com/alloydb/docs/instance-primary-create)\n", " * [Create a AlloyDB instance](https://cloud.google.com/alloydb/docs/instance-primary-create)\n",
" * [Create a AlloyDB database](https://cloud.google.com/alloydb/docs/database-create)\n", " * [Create a AlloyDB database](https://cloud.google.com/alloydb/docs/database-create)\n",
" * [Add an IAM database user to the database](https://cloud.google.com/alloydb/docs/manage-iam-authn) (Optional)" " * [Add an IAM database user to the database](https://cloud.google.com/alloydb/docs/manage-iam-authn) (Optional)"
@ -112,24 +117,6 @@
"!gcloud config set project {PROJECT_ID}" "!gcloud config set project {PROJECT_ID}"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 💡 API Enablement\n",
"The `langchain-google-alloydb-pg` package requires that you [enable the AlloyDB Admin API](https://console.cloud.google.com/flows/enableapi?apiid=alloydb.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# enable AlloyDB API\n",
"!gcloud services enable alloydb.googleapis.com"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},

@ -10,6 +10,8 @@
"\n", "\n",
"This notebook goes over how to use [Bigtable](https://cloud.google.com/bigtable) to store chat message history with the `BigtableChatMessageHistory` class.\n", "This notebook goes over how to use [Bigtable](https://cloud.google.com/bigtable) to store chat message history with the `BigtableChatMessageHistory` class.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-bigtable-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-bigtable-python/blob/main/docs/chat_message_history.ipynb)\n" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-bigtable-python/blob/main/docs/chat_message_history.ipynb)\n"
] ]
}, },
@ -22,6 +24,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Enable the Bigtable API](https://console.cloud.google.com/flows/enableapi?apiid=bigtable.googleapis.com)\n",
"* [Create a Bigtable instance](https://cloud.google.com/bigtable/docs/creating-instance)\n", "* [Create a Bigtable instance](https://cloud.google.com/bigtable/docs/creating-instance)\n",
"* [Create a Bigtable table](https://cloud.google.com/bigtable/docs/managing-tables)\n", "* [Create a Bigtable table](https://cloud.google.com/bigtable/docs/managing-tables)\n",
"* [Create Bigtable access credentials](https://developers.google.com/workspace/guides/create-credentials)" "* [Create Bigtable access credentials](https://developers.google.com/workspace/guides/create-credentials)"
@ -280,7 +283,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.10.6" "version": "3.11.5"
} }
}, },
"nbformat": 4, "nbformat": 4,

@ -11,7 +11,11 @@
"\n", "\n",
"> [Cloud SQL](https://cloud.google.com/sql) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. It offers MySQL, PostgreSQL, and SQL Server database engines. Extend your database application to build AI-powered experiences leveraging Cloud SQL's Langchain integrations.\n", "> [Cloud SQL](https://cloud.google.com/sql) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. It offers MySQL, PostgreSQL, and SQL Server database engines. Extend your database application to build AI-powered experiences leveraging Cloud SQL's Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use `Cloud SQL for SQL Server` to store chat message history with the `MSSQLChatMessageHistory` class." "This notebook goes over how to use `Cloud SQL for SQL Server` to store chat message history with the `MSSQLChatMessageHistory` class.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-cloud-sql-mssql-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-cloud-sql-mssql-python/blob/main/docs/chat_message_history.ipynb)"
] ]
}, },
{ {
@ -26,6 +30,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
" * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", " * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
" * [Enable the Cloud SQL Admin API.](https://console.cloud.google.com/marketplace/product/google/sqladmin.googleapis.com)\n",
" * [Create a Cloud SQL for SQL Server instance](https://cloud.google.com/sql/docs/sqlserver/create-instance)\n", " * [Create a Cloud SQL for SQL Server instance](https://cloud.google.com/sql/docs/sqlserver/create-instance)\n",
" * [Create a Cloud SQL database](https://cloud.google.com/sql/docs/sqlserver/create-manage-databases)\n", " * [Create a Cloud SQL database](https://cloud.google.com/sql/docs/sqlserver/create-manage-databases)\n",
" * [Create a database user](https://cloud.google.com/sql/docs/sqlserver/create-manage-users) (Optional if you choose to use the `sqlserver` user)" " * [Create a database user](https://cloud.google.com/sql/docs/sqlserver/create-manage-users) (Optional if you choose to use the `sqlserver` user)"
@ -143,30 +148,6 @@
"!gcloud config set project {PROJECT_ID}" "!gcloud config set project {PROJECT_ID}"
] ]
}, },
{
"cell_type": "markdown",
"id": "rEWWNoNnKOgq",
"metadata": {
"id": "rEWWNoNnKOgq"
},
"source": [
"### 💡 API Enablement\n",
"The `langchain-google-cloud-sql-mssql` package requires that you [enable the Cloud SQL Admin API](https://console.cloud.google.com/flows/enableapi?apiid=sqladmin.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "5utKIdq7KYi5",
"metadata": {
"id": "5utKIdq7KYi5"
},
"outputs": [],
"source": [
"# enable Cloud SQL Admin API\n",
"!gcloud services enable sqladmin.googleapis.com"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "f8f2830ee9ca1e01", "id": "f8f2830ee9ca1e01",

@ -13,6 +13,8 @@
"\n", "\n",
"This notebook goes over how to use `Cloud SQL for MySQL` to store chat message history with the `MySQLChatMessageHistory` class.\n", "This notebook goes over how to use `Cloud SQL for MySQL` to store chat message history with the `MySQLChatMessageHistory` class.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-cloud-sql-mysql-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-cloud-sql-mysql-python/blob/main/docs/chat_message_history.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-cloud-sql-mysql-python/blob/main/docs/chat_message_history.ipynb)"
] ]
}, },
@ -28,6 +30,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
" * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", " * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
" * [Enable the Cloud SQL Admin API.](https://console.cloud.google.com/marketplace/product/google/sqladmin.googleapis.com)\n",
" * [Create a Cloud SQL for MySQL instance](https://cloud.google.com/sql/docs/mysql/create-instance)\n", " * [Create a Cloud SQL for MySQL instance](https://cloud.google.com/sql/docs/mysql/create-instance)\n",
" * [Create a Cloud SQL database](https://cloud.google.com/sql/docs/mysql/create-manage-databases)\n", " * [Create a Cloud SQL database](https://cloud.google.com/sql/docs/mysql/create-manage-databases)\n",
" * [Add an IAM database user to the database](https://cloud.google.com/sql/docs/mysql/add-manage-iam-users#creating-a-database-user) (Optional)" " * [Add an IAM database user to the database](https://cloud.google.com/sql/docs/mysql/add-manage-iam-users#creating-a-database-user) (Optional)"
@ -145,30 +148,6 @@
"!gcloud config set project {PROJECT_ID}" "!gcloud config set project {PROJECT_ID}"
] ]
}, },
{
"cell_type": "markdown",
"id": "rEWWNoNnKOgq",
"metadata": {
"id": "rEWWNoNnKOgq"
},
"source": [
"### 💡 API Enablement\n",
"The `langchain-google-cloud-sql-mysql` package requires that you [enable the Cloud SQL Admin API](https://console.cloud.google.com/flows/enableapi?apiid=sqladmin.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "5utKIdq7KYi5",
"metadata": {
"id": "5utKIdq7KYi5"
},
"outputs": [],
"source": [
"# enable Cloud SQL Admin API\n",
"!gcloud services enable sqladmin.googleapis.com"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "f8f2830ee9ca1e01", "id": "f8f2830ee9ca1e01",
@ -227,7 +206,6 @@
"By default, [IAM database authentication](https://cloud.google.com/sql/docs/mysql/iam-authentication#iam-db-auth) will be used as the method of database authentication. This library uses the IAM principal belonging to the [Application Default Credentials (ADC)](https://cloud.google.com/docs/authentication/application-default-credentials) sourced from the envionment.\n", "By default, [IAM database authentication](https://cloud.google.com/sql/docs/mysql/iam-authentication#iam-db-auth) will be used as the method of database authentication. This library uses the IAM principal belonging to the [Application Default Credentials (ADC)](https://cloud.google.com/docs/authentication/application-default-credentials) sourced from the envionment.\n",
"\n", "\n",
"For more informatin on IAM database authentication please see:\n", "For more informatin on IAM database authentication please see:\n",
"\n",
"* [Configure an instance for IAM database authentication](https://cloud.google.com/sql/docs/mysql/create-edit-iam-instances)\n", "* [Configure an instance for IAM database authentication](https://cloud.google.com/sql/docs/mysql/create-edit-iam-instances)\n",
"* [Manage users with IAM database authentication](https://cloud.google.com/sql/docs/mysql/add-manage-iam-users)\n", "* [Manage users with IAM database authentication](https://cloud.google.com/sql/docs/mysql/add-manage-iam-users)\n",
"\n", "\n",
@ -548,7 +526,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.9.1" "version": "3.11.5"
} }
}, },
"nbformat": 4, "nbformat": 4,

@ -11,7 +11,11 @@
"\n", "\n",
"> [Cloud SQL](https://cloud.google.com/sql) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. It offers MySQL, PostgreSQL, and SQL Server database engines. Extend your database application to build AI-powered experiences leveraging Cloud SQL's Langchain integrations.\n", "> [Cloud SQL](https://cloud.google.com/sql) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. It offers MySQL, PostgreSQL, and SQL Server database engines. Extend your database application to build AI-powered experiences leveraging Cloud SQL's Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use `Cloud SQL for PostgreSQL` to store chat message history with the `PostgresChatMessageHistory` class." "This notebook goes over how to use `Cloud SQL for PostgreSQL` to store chat message history with the `PostgresChatMessageHistory` class.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-cloud-sql-pg-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-cloud-sql-pg-python/blob/main/docs/chat_message_history.ipynb)"
] ]
}, },
{ {
@ -26,6 +30,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
" * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", " * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
" * [Enable the Cloud SQL Admin API.](https://console.cloud.google.com/marketplace/product/google/sqladmin.googleapis.com)\n",
" * [Create a Cloud SQL for PostgreSQL instance](https://cloud.google.com/sql/docs/postgres/create-instance)\n", " * [Create a Cloud SQL for PostgreSQL instance](https://cloud.google.com/sql/docs/postgres/create-instance)\n",
" * [Create a Cloud SQL database](https://cloud.google.com/sql/docs/mysql/create-manage-databases)\n", " * [Create a Cloud SQL database](https://cloud.google.com/sql/docs/mysql/create-manage-databases)\n",
" * [Add an IAM database user to the database](https://cloud.google.com/sql/docs/postgres/add-manage-iam-users#creating-a-database-user) (Optional)" " * [Add an IAM database user to the database](https://cloud.google.com/sql/docs/postgres/add-manage-iam-users#creating-a-database-user) (Optional)"
@ -225,7 +230,6 @@
"By default, [IAM database authentication](https://cloud.google.com/sql/docs/postgres/iam-authentication#iam-db-auth) will be used as the method of database authentication. This library uses the IAM principal belonging to the [Application Default Credentials (ADC)](https://cloud.google.com/docs/authentication/application-default-credentials) sourced from the envionment.\n", "By default, [IAM database authentication](https://cloud.google.com/sql/docs/postgres/iam-authentication#iam-db-auth) will be used as the method of database authentication. This library uses the IAM principal belonging to the [Application Default Credentials (ADC)](https://cloud.google.com/docs/authentication/application-default-credentials) sourced from the envionment.\n",
"\n", "\n",
"For more informatin on IAM database authentication please see:\n", "For more informatin on IAM database authentication please see:\n",
"\n",
"* [Configure an instance for IAM database authentication](https://cloud.google.com/sql/docs/postgres/create-edit-iam-instances)\n", "* [Configure an instance for IAM database authentication](https://cloud.google.com/sql/docs/postgres/create-edit-iam-instances)\n",
"* [Manage users with IAM database authentication](https://cloud.google.com/sql/docs/postgres/add-manage-iam-users)\n", "* [Manage users with IAM database authentication](https://cloud.google.com/sql/docs/postgres/add-manage-iam-users)\n",
"\n", "\n",

@ -4,11 +4,13 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Google Firestore in Datastore\n", "# Google Firestore in Datastore Mode\n",
"\n", "\n",
"> [Firestore in Datastore](https://cloud.google.com/datastore) is a serverless document-oriented database that scales to meet any demand. Extend your database application to build AI-powered experiences leveraging Datastore's Langchain integrations.\n", "> [Firestore in Datastore Mode](https://cloud.google.com/datastore) is a NoSQL document database build for automatic scaling, high performance and ease of application development. Extend your database application to build AI-powered experiences leveraging Datastore's Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use [Firestore in Datastore](https://cloud.google.com/datastore) to to store chat message history with the `DatastoreChatMessageHistory` class.\n", "This notebook goes over how to use [Firestore in Datastore Mode](https://cloud.google.com/datastore) to save chat messages into `Firestore` in Datastore Mode.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-datastore-python/).\n",
"\n", "\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-datastore-python/blob/main/docs/chat_message_history.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-datastore-python/blob/main/docs/chat_message_history.ipynb)"
] ]
@ -22,7 +24,8 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Create a Datastore database](https://cloud.google.com/datastore/docs/manage-databases)\n", "* [Enable the Datastore API](https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com)\n",
"* [Create a Firestore in Datastore Mode database](https://cloud.google.com/datastore/docs/manage-databases)\n",
"\n", "\n",
"After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts." "After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts."
] ]
@ -118,24 +121,6 @@
"auth.authenticate_user()" "auth.authenticate_user()"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### API Enablement\n",
"The `langchain-google-datastore` package requires that you [enable the Datastore API](https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# enable Datastore API\n",
"!gcloud services enable datastore.googleapis.com"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
@ -149,10 +134,10 @@
"source": [ "source": [
"### DatastoreChatMessageHistory\n", "### DatastoreChatMessageHistory\n",
"\n", "\n",
"To initialize the `DatastoreChatMessageHistory` class you need to provide only 3 things:\n", "To initialize the `DatastoreChatMessageHistory` class you need to provide only 2 things:\n",
"\n", "\n",
"1. `session_id` - A unique identifier string that specifies an id for the session.\n", "1. `session_id` - A unique identifier string that specifies an id for the session.\n",
"1. `collection` : The single `/`-delimited path to a Datastore collection." "1. `kind` : The name of the Datastore kind to write into. This is an optional value and by default it will use `ChatHistory` as the kind."
] ]
}, },
{ {
@ -164,7 +149,7 @@
"from langchain_google_datastore import DatastoreChatMessageHistory\n", "from langchain_google_datastore import DatastoreChatMessageHistory\n",
"\n", "\n",
"chat_history = DatastoreChatMessageHistory(\n", "chat_history = DatastoreChatMessageHistory(\n",
" session_id=\"user-session-id\", collection=\"HistoryMessages\"\n", " session_id=\"user-session-id\", kind=\"HistoryMessages\"\n",
")\n", ")\n",
"\n", "\n",
"chat_history.add_user_message(\"Hi!\")\n", "chat_history.add_user_message(\"Hi!\")\n",
@ -184,7 +169,8 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"#### Cleaning up\n", "#### Cleanup\n",
"\n",
"When the history of a specific session is obsolete and can be deleted from the database and memory, it can be done the following way.\n", "When the history of a specific session is obsolete and can be deleted from the database and memory, it can be done the following way.\n",
"\n", "\n",
"**Note:** Once deleted, the data is no longer stored in Datastore and is gone forever." "**Note:** Once deleted, the data is no longer stored in Datastore and is gone forever."
@ -224,7 +210,7 @@
")\n", ")\n",
"\n", "\n",
"history = DatastoreChatMessageHistory(\n", "history = DatastoreChatMessageHistory(\n",
" session_id=\"session-id\", collection=\"History\", client=client\n", " session_id=\"session-id\", kind=\"History\", client=client\n",
")\n", ")\n",
"\n", "\n",
"history.add_user_message(\"New message\")\n", "history.add_user_message(\"New message\")\n",

@ -4,12 +4,14 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Google El Carro Oracle Operator\n", "# Google El Carro for Oracle Workloads\n",
"\n", "\n",
"> Google [El Carro Oracle Operator](https://github.com/GoogleCloudPlatform/elcarro-oracle-operator) offers a way to run Oracle databases in Kubernetes as a portable, open source, community driven, no vendor lock-in container orchestration system. El Carro provides a powerful declarative API for comprehensive and consistent configuration and deployment as well as for real-time operations and monitoring. Extend your Oracle database's capabilities to build AI-powered experiences by leveraging the El Carro Langchain integration.\n", "> Google [El Carro Oracle Operator](https://github.com/GoogleCloudPlatform/elcarro-oracle-operator) offers a way to run Oracle databases in Kubernetes as a portable, open source, community driven, no vendor lock-in container orchestration system. El Carro provides a powerful declarative API for comprehensive and consistent configuration and deployment as well as for real-time operations and monitoring. Extend your Oracle database's capabilities to build AI-powered experiences by leveraging the El Carro Langchain integration.\n",
"\n", "\n",
"This guide goes over how to use the El Carro Langchain integration to store chat message history with the `ElCarroChatMessageHistory` class. This integration works for any Oracle database, regardless of where it is running.\n", "This guide goes over how to use the El Carro Langchain integration to store chat message history with the `ElCarroChatMessageHistory` class. This integration works for any Oracle database, regardless of where it is running.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-el-carro-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-el-carro-python/blob/main/docs/chat_message_history.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-el-carro-python/blob/main/docs/chat_message_history.ipynb)"
] ]
}, },
@ -20,7 +22,8 @@
"## Before You Begin\n", "## Before You Begin\n",
"\n", "\n",
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
" * Complete the [Getting Started](https://github.com/googleapis/langchain-google-el-carro-python/tree/main/README.md#getting-started) section if you would like to run your Oracle database with El Carro." "\n",
" * Complete the [Getting Started](https://github.com/googleapis/langchain-google-el-carro-python/tree/main/README.md#getting-started) section"
] ]
}, },
{ {
@ -77,9 +80,9 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"from google.colab import auth\n", "# from google.colab import auth\n",
"\n", "\n",
"auth.authenticate_user()" "# auth.authenticate_user()"
] ]
}, },
{ {
@ -112,15 +115,12 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {
"source": [ "id": "azV0k45WWSVI"
"## Basic Usage"
]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [ "source": [
"## Basic Usage\n",
"\n",
"### Set Up Oracle Database Connection\n", "### Set Up Oracle Database Connection\n",
"Fill out the following variable with your Oracle database connections details." "Fill out the following variable with your Oracle database connections details."
] ]
@ -128,6 +128,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [], "outputs": [],
"source": [ "source": [
"# @title Set Your Values Here { display-mode: \"form\" }\n", "# @title Set Your Values Here { display-mode: \"form\" }\n",
@ -137,38 +140,40 @@
"TABLE_NAME = \"message_store\" # @param {type: \"string\"}\n", "TABLE_NAME = \"message_store\" # @param {type: \"string\"}\n",
"USER = \"my-user\" # @param {type: \"string\"}\n", "USER = \"my-user\" # @param {type: \"string\"}\n",
"PASSWORD = input(\"Please provide a password to be used for the database user: \")" "PASSWORD = input(\"Please provide a password to be used for the database user: \")"
], ]
"metadata": {
"collapsed": false
}
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [ "source": [
"\n", "\n",
"If you are using `El Carro`, you can find the hostname and port values in the\n", "If you are using El Carro, you can find the hostname and port values in the\n",
"status of the `El Carro` Kubernetes instance.\n", "status of the El Carro Kubernetes instance.\n",
"Use the user password you created for your PDB.\n", "Use the user password you created for your PDB.\n",
"Example" "Example Output"
], ]
"metadata": {
"collapsed": false
}
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [ "source": [
"```\n",
"kubectl get -w instances.oracle.db.anthosapis.com -n db\n", "kubectl get -w instances.oracle.db.anthosapis.com -n db\n",
"NAME DB ENGINE VERSION EDITION ENDPOINT URL DB NAMES BACKUP ID READYSTATUS READYREASON DBREADYSTATUS DBREADYREASON\n", "NAME DB ENGINE VERSION EDITION ENDPOINT URL DB NAMES BACKUP ID READYSTATUS READYREASON DBREADYSTATUS DBREADYREASON\n",
"mydb Oracle 18c Express mydb-svc.db 34.71.69.25:6021 False CreateInProgress" "\n",
], "mydb Oracle 18c Express mydb-svc.db 34.71.69.25:6021 ['pdbname'] TRUE CreateComplete True CreateComplete\n",
"metadata": { "```"
"collapsed": false ]
}
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {
"collapsed": false
},
"source": [ "source": [
"### ElCarroEngine Connection Pool\n", "### ElCarroEngine Connection Pool\n",
"\n", "\n",
@ -178,7 +183,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"id": "xG1mYFkEWbkp"
},
"outputs": [], "outputs": [],
"source": [ "source": [
"from langchain_google_el_carro import ElCarroEngine\n", "from langchain_google_el_carro import ElCarroEngine\n",
@ -261,7 +268,7 @@
"#### Cleaning up\n", "#### Cleaning up\n",
"When the history of a specific session is obsolete and can be deleted, it can be done the following way.\n", "When the history of a specific session is obsolete and can be deleted, it can be done the following way.\n",
"\n", "\n",
"**Note:** Once deleted, the data is no longer stored in your database and is gone forever." "**Note:** Once deleted, the data is no longer stored in the database and is gone forever."
] ]
}, },
{ {

@ -10,6 +10,8 @@
"\n", "\n",
"This notebook goes over how to use [Firestore](https://cloud.google.com/firestore) to to store chat message history with the `FirestoreChatMessageHistory` class.\n", "This notebook goes over how to use [Firestore](https://cloud.google.com/firestore) to to store chat message history with the `FirestoreChatMessageHistory` class.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-firestore-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-firestore-python/blob/main/docs/chat_message_history.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-firestore-python/blob/main/docs/chat_message_history.ipynb)"
] ]
}, },
@ -22,6 +24,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Enable the Firestore API](https://console.cloud.google.com/flows/enableapi?apiid=firestore.googleapis.com)\n",
"* [Create a Firestore database](https://cloud.google.com/firestore/docs/manage-databases)\n", "* [Create a Firestore database](https://cloud.google.com/firestore/docs/manage-databases)\n",
"\n", "\n",
"After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts." "After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts."
@ -118,24 +121,6 @@
"auth.authenticate_user()" "auth.authenticate_user()"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### API Enablement\n",
"The `langchain-google-firestore` package requires that you [enable the Firestore Admin API](https://console.cloud.google.com/flows/enableapi?apiid=firestore.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# enable Firestore Admin API\n",
"!gcloud services enable firestore.googleapis.com"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},

@ -12,6 +12,8 @@
"\n", "\n",
"This notebook goes over how to use [Memorystore for Redis](https://cloud.google.com/memorystore/docs/redis/memorystore-for-redis-overview) to store chat message history with the `MemorystoreChatMessageHistory` class.\n", "This notebook goes over how to use [Memorystore for Redis](https://cloud.google.com/memorystore/docs/redis/memorystore-for-redis-overview) to store chat message history with the `MemorystoreChatMessageHistory` class.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-memorystore-redis-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-memorystore-redis-python/blob/main/docs/chat_message_history.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-memorystore-redis-python/blob/main/docs/chat_message_history.ipynb)"
] ]
}, },
@ -24,6 +26,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Enable the Memorystore for Redis API](https://console.cloud.google.com/flows/enableapi?apiid=redis.googleapis.com)\n",
"* [Create a Memorystore for Redis instance](https://cloud.google.com/memorystore/docs/redis/create-instance-console). Ensure that the version is greater than or equal to 5.0.\n", "* [Create a Memorystore for Redis instance](https://cloud.google.com/memorystore/docs/redis/create-instance-console). Ensure that the version is greater than or equal to 5.0.\n",
"\n", "\n",
"After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts." "After confirmed access to database in the runtime environment of this notebook, filling the following values and run the cell before running example scripts."

@ -7,9 +7,13 @@
}, },
"source": [ "source": [
"# Google Spanner\n", "# Google Spanner\n",
"> [Cloud Spanner](https://cloud.google.com/spanner) is a highly scalable database that combines unlimited scalability with relational semantics, such as secondary indexes, strong consistency, schemas, and SQL providing 99.999% availability in one easy solution.\n", "> [Spanner](https://cloud.google.com/spanner) is a highly scalable database that combines unlimited scalability with relational semantics, such as secondary indexes, strong consistency, schemas, and SQL providing 99.999% availability in one easy solution.\n",
"\n", "\n",
"This notebook goes over how to use `Spanner` to store chat message history with the `SpannerChatMessageHistory` class." "This notebook goes over how to use `Spanner` to store chat message history with the `SpannerChatMessageHistory` class.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-spanner-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-spanner-python/blob/main/samples/chat_message_history.ipynb)"
] ]
}, },
{ {
@ -23,6 +27,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
" * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", " * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
" * [Enable the Cloud Spanner API](https://console.cloud.google.com/flows/enableapi?apiid=spanner.googleapis.com)\n",
" * [Create a Spanner instance](https://cloud.google.com/spanner/docs/create-manage-instances)\n", " * [Create a Spanner instance](https://cloud.google.com/spanner/docs/create-manage-instances)\n",
" * [Create a Spanner database](https://cloud.google.com/spanner/docs/create-manage-databases)" " * [Create a Spanner database](https://cloud.google.com/spanner/docs/create-manage-databases)"
] ]
@ -169,7 +174,7 @@
}, },
"source": [ "source": [
"### Set Spanner database values\n", "### Set Spanner database values\n",
"Find your database values, in the [Spanner Instances page](https://console.cloud.google.com/spanner/instances)." "Find your database values, in the [Spanner Instances page](https://console.cloud.google.com/spanner)."
] ]
}, },
{ {

@ -6,9 +6,13 @@
"source": [ "source": [
"# Google AlloyDB for PostgreSQL\n", "# Google AlloyDB for PostgreSQL\n",
"\n", "\n",
"> [Google Cloud AlloyDB](https://cloud.google.com/alloydb) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. AlloyDB is 100% compatible with PostgreSQL. Extend your database application to build AI-powered experiences leveraging AlloyDB's Langchain integrations.\n", "> [AlloyDB](https://cloud.google.com/alloydb) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. AlloyDB is 100% compatible with PostgreSQL. Extend your database application to build AI-powered experiences leveraging AlloyDB's Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use `AlloyDB for PostgreSQL` to store vector embeddings with the `AlloyDBVectorStore` class." "This notebook goes over how to use `AlloyDB for PostgreSQL` to store vector embeddings with the `AlloyDBVectorStore` class.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-alloydb-pg-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-alloydb-pg-python/blob/main/docs/vector_store.ipynb)"
] ]
}, },
{ {
@ -20,7 +24,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
" * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", " * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
" * [Enable the AlloyDB Admin API.](https://console.cloud.google.com/flows/enableapi?apiid=alloydb.googleapis.com)\n", " * [Enable the AlloyDB API](https://console.cloud.google.com/flows/enableapi?apiid=alloydb.googleapis.com)\n",
" * [Create a AlloyDB cluster and instance.](https://cloud.google.com/alloydb/docs/cluster-create)\n", " * [Create a AlloyDB cluster and instance.](https://cloud.google.com/alloydb/docs/cluster-create)\n",
" * [Create a AlloyDB database.](https://cloud.google.com/alloydb/docs/quickstart/create-and-connect)\n", " * [Create a AlloyDB database.](https://cloud.google.com/alloydb/docs/quickstart/create-and-connect)\n",
" * [Add a User to the database.](https://cloud.google.com/alloydb/docs/database-users/about)" " * [Add a User to the database.](https://cloud.google.com/alloydb/docs/database-users/about)"
@ -64,6 +68,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "v6jBDnYnNM08",
"metadata": { "metadata": {
"id": "v6jBDnYnNM08" "id": "v6jBDnYnNM08"
}, },
@ -78,6 +83,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "yygMe6rPWxHS",
"metadata": { "metadata": {
"id": "yygMe6rPWxHS" "id": "yygMe6rPWxHS"
}, },
@ -92,6 +98,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 1, "execution_count": 1,
"id": "PTXN1_DSXj2b",
"metadata": { "metadata": {
"id": "PTXN1_DSXj2b" "id": "PTXN1_DSXj2b"
}, },
@ -104,6 +111,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "NEvB9BoLEulY",
"metadata": { "metadata": {
"id": "NEvB9BoLEulY" "id": "NEvB9BoLEulY"
}, },
@ -121,6 +129,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "gfkS3yVRE4_W",
"metadata": { "metadata": {
"cellView": "form", "cellView": "form",
"id": "gfkS3yVRE4_W" "id": "gfkS3yVRE4_W"
@ -137,28 +146,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": { "id": "f8f2830ee9ca1e01",
"id": "rEWWNoNnKOgq"
},
"source": [
"### 💡 API Enablement\n",
"The `langchain-google-alloydb-pg` package requires that you [enable the AlloyDB Admin API](https://console.cloud.google.com/flows/enableapi?apiid=alloydb.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"id": "5utKIdq7KYi5"
},
"outputs": [],
"source": [
"# enable AlloyDB Admin API\n",
"!gcloud services enable alloydb.googleapis.com"
]
},
{
"cell_type": "markdown",
"metadata": { "metadata": {
"id": "f8f2830ee9ca1e01" "id": "f8f2830ee9ca1e01"
}, },
@ -168,6 +156,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "OMvzMWRrR6n7",
"metadata": { "metadata": {
"id": "OMvzMWRrR6n7" "id": "OMvzMWRrR6n7"
}, },
@ -179,6 +168,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 4,
"id": "irl7eMFnSPZr",
"metadata": { "metadata": {
"id": "irl7eMFnSPZr" "id": "irl7eMFnSPZr"
}, },
@ -194,6 +184,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "QuQigs4UoFQ2",
"metadata": { "metadata": {
"id": "QuQigs4UoFQ2" "id": "QuQigs4UoFQ2"
}, },
@ -202,7 +193,7 @@
"\n", "\n",
"One of the requirements and arguments to establish AlloyDB as a vector store is a `AlloyDBEngine` object. The `AlloyDBEngine` configures a connection pool to your AlloyDB database, enabling successful connections from your application and following industry best practices.\n", "One of the requirements and arguments to establish AlloyDB as a vector store is a `AlloyDBEngine` object. The `AlloyDBEngine` configures a connection pool to your AlloyDB database, enabling successful connections from your application and following industry best practices.\n",
"\n", "\n",
"To create a `AlloyDBEngine` using `AlloyDBEngine.from_instance()` you need to provide only 4 things:\n", "To create a `AlloyDBEngine` using `AlloyDBEngine.from_instance()` you need to provide only 5 things:\n",
"\n", "\n",
"1. `project_id` : Project ID of the Google Cloud Project where the AlloyDB instance is located.\n", "1. `project_id` : Project ID of the Google Cloud Project where the AlloyDB instance is located.\n",
"1. `region` : Region where the AlloyDB instance is located.\n", "1. `region` : Region where the AlloyDB instance is located.\n",
@ -279,6 +270,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 3,
"id": "5utKIdq7KYi5",
"metadata": { "metadata": {
"id": "5utKIdq7KYi5" "id": "5utKIdq7KYi5"
}, },
@ -534,8 +526,7 @@
"toc_visible": true "toc_visible": true
}, },
"kernelspec": { "kernelspec": {
"display_name": "Python 3 (ipykernel)", "display_name": "Python 3",
"language": "python",
"name": "python3" "name": "python3"
}, },
"language_info": { "language_info": {
@ -548,9 +539,9 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.10.12" "version": "3.11.5"
} }
}, },
"nbformat": 4, "nbformat": 4,
"nbformat_minor": 4 "nbformat_minor": 0
} }

@ -6,9 +6,13 @@
"source": [ "source": [
"# Google Cloud SQL for PostgreSQL\n", "# Google Cloud SQL for PostgreSQL\n",
"\n", "\n",
"> [Google Cloud SQL](https://cloud.google.com/sql) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. It offers PostgreSQL, PostgreSQL, and SQL Server database engines. Extend your database application to build AI-powered experiences leveraging Cloud SQL's Langchain integrations.\n", "> [Cloud SQL](https://cloud.google.com/sql) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability. It offers PostgreSQL, PostgreSQL, and SQL Server database engines. Extend your database application to build AI-powered experiences leveraging Cloud SQL's Langchain integrations.\n",
"\n", "\n",
"This notebook goes over how to use `Cloud SQL for PostgreSQL` to store vector embeddings with the `PostgresVectorStore` class." "This notebook goes over how to use `Cloud SQL for PostgreSQL` to store vector embeddings with the `PostgresVectorStore` class.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-cloud-sql-pg-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-cloud-sql-pg-python/blob/main/docs/vector_store.ipynb)"
] ]
}, },
{ {
@ -64,6 +68,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "v6jBDnYnNM08",
"metadata": { "metadata": {
"id": "v6jBDnYnNM08" "id": "v6jBDnYnNM08"
}, },
@ -78,6 +83,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "yygMe6rPWxHS",
"metadata": { "metadata": {
"id": "yygMe6rPWxHS" "id": "yygMe6rPWxHS"
}, },
@ -92,6 +98,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 1, "execution_count": 1,
"id": "PTXN1_DSXj2b",
"metadata": { "metadata": {
"id": "PTXN1_DSXj2b" "id": "PTXN1_DSXj2b"
}, },
@ -104,6 +111,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "NEvB9BoLEulY",
"metadata": { "metadata": {
"id": "NEvB9BoLEulY" "id": "NEvB9BoLEulY"
}, },
@ -121,6 +129,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "gfkS3yVRE4_W",
"metadata": { "metadata": {
"cellView": "form", "cellView": "form",
"id": "gfkS3yVRE4_W" "id": "gfkS3yVRE4_W"
@ -137,28 +146,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": { "id": "f8f2830ee9ca1e01",
"id": "rEWWNoNnKOgq"
},
"source": [
"### 💡 API Enablement\n",
"The `langchain-google-cloud-sql-pg` package requires that you [enable the Cloud SQL Admin API](https://console.cloud.google.com/flows/enableapi?apiid=sqladmin.googleapis.com) in your Google Cloud Project."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"id": "5utKIdq7KYi5"
},
"outputs": [],
"source": [
"# enable Cloud SQL Admin API\n",
"!gcloud services enable sqladmin.googleapis.com"
]
},
{
"cell_type": "markdown",
"metadata": { "metadata": {
"id": "f8f2830ee9ca1e01" "id": "f8f2830ee9ca1e01"
}, },
@ -168,6 +156,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "OMvzMWRrR6n7",
"metadata": { "metadata": {
"id": "OMvzMWRrR6n7" "id": "OMvzMWRrR6n7"
}, },
@ -179,6 +168,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 4,
"id": "irl7eMFnSPZr",
"metadata": { "metadata": {
"id": "irl7eMFnSPZr" "id": "irl7eMFnSPZr"
}, },
@ -193,15 +183,16 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "QuQigs4UoFQ2",
"metadata": { "metadata": {
"id": "QuQigs4UoFQ2" "id": "QuQigs4UoFQ2"
}, },
"source": [ "source": [
"### PostgreSQLEngine Connection Pool\n", "### PostgresEngine Connection Pool\n",
"\n", "\n",
"One of the requirements and arguments to establish Cloud SQL as a vector store is a `PostgreSQLEngine` object. The `PostgreSQLEngine` configures a connection pool to your Cloud SQL database, enabling successful connections from your application and following industry best practices.\n", "One of the requirements and arguments to establish Cloud SQL as a vector store is a `PostgresEngine` object. The `PostgresEngine` configures a connection pool to your Cloud SQL database, enabling successful connections from your application and following industry best practices.\n",
"\n", "\n",
"To create a `PostgreSQLEngine` using `PostgreSQLEngine.from_instance()` you need to provide only 4 things:\n", "To create a `PostgresEngine` using `PostgresEngine.from_instance()` you need to provide only 4 things:\n",
"\n", "\n",
"1. `project_id` : Project ID of the Google Cloud Project where the Cloud SQL instance is located.\n", "1. `project_id` : Project ID of the Google Cloud Project where the Cloud SQL instance is located.\n",
"1. `region` : Region where the Cloud SQL instance is located.\n", "1. `region` : Region where the Cloud SQL instance is located.\n",
@ -215,7 +206,7 @@
"* [Configure an instance for IAM database authentication](https://cloud.google.com/sql/docs/postgres/create-edit-iam-instances)\n", "* [Configure an instance for IAM database authentication](https://cloud.google.com/sql/docs/postgres/create-edit-iam-instances)\n",
"* [Manage users with IAM database authentication](https://cloud.google.com/sql/docs/postgres/add-manage-iam-users)\n", "* [Manage users with IAM database authentication](https://cloud.google.com/sql/docs/postgres/add-manage-iam-users)\n",
"\n", "\n",
"Optionally, [built-in database authentication](https://cloud.google.com/sql/docs/postgres/built-in-authentication) using a username and password to access the Cloud SQL database can also be used. Just provide the optional `user` and `password` arguments to `PostgreSQLEngine.from_instance()`:\n", "Optionally, [built-in database authentication](https://cloud.google.com/sql/docs/postgres/built-in-authentication) using a username and password to access the Cloud SQL database can also be used. Just provide the optional `user` and `password` arguments to `PostgresEngine.from_instance()`:\n",
"\n", "\n",
"* `user` : Database user to use for built-in database authentication and login\n", "* `user` : Database user to use for built-in database authentication and login\n",
"* `password` : Database password to use for built-in database authentication and login.\n" "* `password` : Database password to use for built-in database authentication and login.\n"
@ -234,9 +225,9 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"from langchain_google_cloud_sql_pg import PostgreSQLEngine\n", "from langchain_google_cloud_sql_pg import PostgresEngine\n",
"\n", "\n",
"engine = await PostgreSQLEngine.afrom_instance(\n", "engine = await PostgresEngine.afrom_instance(\n",
" project_id=PROJECT_ID, region=REGION, instance=INSTANCE, database=DATABASE\n", " project_id=PROJECT_ID, region=REGION, instance=INSTANCE, database=DATABASE\n",
")" ")"
] ]
@ -248,7 +239,7 @@
}, },
"source": [ "source": [
"### Initialize a table\n", "### Initialize a table\n",
"The `PostgresVectorStore` class requires a database table. The `PostgreSQLEngine` engine has a helper method `init_vectorstore_table()` that can be used to create a table with the proper schema for you." "The `PostgresVectorStore` class requires a database table. The `PostgresEngine` engine has a helper method `init_vectorstore_table()` that can be used to create a table with the proper schema for you."
] ]
}, },
{ {
@ -259,7 +250,7 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"from langchain_google_cloud_sql_pg import PostgreSQLEngine\n", "from langchain_google_cloud_sql_pg import PostgresEngine\n",
"\n", "\n",
"await engine.ainit_vectorstore_table(\n", "await engine.ainit_vectorstore_table(\n",
" table_name=TABLE_NAME,\n", " table_name=TABLE_NAME,\n",
@ -280,6 +271,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 3,
"id": "5utKIdq7KYi5",
"metadata": { "metadata": {
"id": "5utKIdq7KYi5" "id": "5utKIdq7KYi5"
}, },
@ -535,8 +527,7 @@
"toc_visible": true "toc_visible": true
}, },
"kernelspec": { "kernelspec": {
"display_name": "Python 3 (ipykernel)", "display_name": "Python 3",
"language": "python",
"name": "python3" "name": "python3"
}, },
"language_info": { "language_info": {
@ -549,9 +540,9 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.10.12" "version": "3.11.5"
} }
}, },
"nbformat": 4, "nbformat": 4,
"nbformat_minor": 4 "nbformat_minor": 0
} }

@ -11,6 +11,8 @@
"\n", "\n",
"This notebook goes over how to use [Memorystore for Redis](https://cloud.google.com/memorystore/docs/redis/memorystore-for-redis-overview) to store vector embeddings with the `MemorystoreVectorStore` class.\n", "This notebook goes over how to use [Memorystore for Redis](https://cloud.google.com/memorystore/docs/redis/memorystore-for-redis-overview) to store vector embeddings with the `MemorystoreVectorStore` class.\n",
"\n", "\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-memorystore-redis-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-memorystore-redis-python/blob/main/docs/vector_store.ipynb)" "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-memorystore-redis-python/blob/main/docs/vector_store.ipynb)"
] ]
}, },
@ -31,6 +33,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
"* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", "* [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
"* [Enable the Memorystore for Redis API](https://console.cloud.google.com/flows/enableapi?apiid=redis.googleapis.com)\n",
"* [Create a Memorystore for Redis instance](https://cloud.google.com/memorystore/docs/redis/create-instance-console). Ensure that the version is greater than or equal to 7.2." "* [Create a Memorystore for Redis instance](https://cloud.google.com/memorystore/docs/redis/create-instance-console). Ensure that the version is greater than or equal to 7.2."
] ]
}, },
@ -52,7 +55,7 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"%pip install -upgrade --quiet langchain-google-memorystore-redis" "%pip install -upgrade --quiet langchain-google-memorystore-redis langchain"
] ]
}, },
{ {
@ -184,8 +187,8 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"from langchain.text_splitter import CharacterTextSplitter\n",
"from langchain_community.document_loaders import TextLoader\n", "from langchain_community.document_loaders import TextLoader\n",
"from langchain_text_splitters import CharacterTextSplitter\n",
"\n", "\n",
"loader = TextLoader(\"./state_of_the_union.txt\")\n", "loader = TextLoader(\"./state_of_the_union.txt\")\n",
"documents = loader.load()\n", "documents = loader.load()\n",

@ -5,9 +5,13 @@
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Google Spanner\n", "# Google Spanner\n",
"> [Cloud Spanner](https://cloud.google.com/spanner) is a highly scalable database that combines unlimited scalability with relational semantics, such as secondary indexes, strong consistency, schemas, and SQL providing 99.999% availability in one easy solution.\n", "> [Spanner](https://cloud.google.com/spanner) is a highly scalable database that combines unlimited scalability with relational semantics, such as secondary indexes, strong consistency, schemas, and SQL providing 99.999% availability in one easy solution.\n",
"\n", "\n",
"This notebook goes over how to use `Spanner` for Vector Search with `SpannerVectorStore` class." "This notebook goes over how to use `Spanner` for Vector Search with `SpannerVectorStore` class.\n",
"\n",
"Learn more about the package on [GitHub](https://github.com/googleapis/langchain-google-spanner-python/).\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-spanner-python/blob/main/docs/vector_store.ipynb)"
] ]
}, },
{ {
@ -19,6 +23,7 @@
"To run this notebook, you will need to do the following:\n", "To run this notebook, you will need to do the following:\n",
"\n", "\n",
" * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n", " * [Create a Google Cloud Project](https://developers.google.com/workspace/guides/create-project)\n",
" * [Enable the Cloud Spanner API](https://console.cloud.google.com/flows/enableapi?apiid=spanner.googleapis.com)\n",
" * [Create a Spanner instance](https://cloud.google.com/spanner/docs/create-manage-instances)\n", " * [Create a Spanner instance](https://cloud.google.com/spanner/docs/create-manage-instances)\n",
" * [Create a Spanner database](https://cloud.google.com/spanner/docs/create-manage-databases)" " * [Create a Spanner database](https://cloud.google.com/spanner/docs/create-manage-databases)"
] ]
@ -151,8 +156,8 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### Set Cloud Spanner database values\n", "### Set Spanner database values\n",
"Find your database values, in the [Cloud Spanner Instances page](https://console.cloud.google.com/spanner?_ga=2.223735448.2062268965.1707700487-2088871159.1707257687)." "Find your database values, in the [Spanner Instances page](https://console.cloud.google.com/spanner?_ga=2.223735448.2062268965.1707700487-2088871159.1707257687)."
] ]
}, },
{ {

Loading…
Cancel
Save