|
53 | 53 | }, |
54 | 54 | "outputs": [], |
55 | 55 | "source": [ |
56 | | - "%pip install --upgrade --quiet langchain-google-alloydb-pg langchain-google-vertexai google-cloud-alloydb-connector[pg8000]" |
| 56 | + "%pip install --upgrade --quiet langchain-google-alloydb-pg langchain-google-vertexai" |
57 | 57 | ] |
58 | 58 | }, |
59 | 59 | { |
|
336 | 336 | "source": [ |
337 | 337 | "from langchain_google_vertexai import VertexAIEmbeddings\n", |
338 | 338 | "\n", |
339 | | - "embedding = VertexAIEmbeddings(\n", |
340 | | - " model_name=\"textembedding-gecko@latest\", project=PROJECT_ID\n", |
341 | | - ")" |
| 339 | + "embedding = VertexAIEmbeddings(model_name=\"text-embedding-005\", project=PROJECT_ID)" |
342 | 340 | ] |
343 | 341 | }, |
344 | 342 | { |
|
408 | 406 | " engine=engine,\n", |
409 | 407 | " table_name=TABLE_NAME,\n", |
410 | 408 | " # schema_name=SCHEMA_NAME,\n", |
411 | | - " embedding_service=embedding,\n", |
| 409 | + " embedding=embedding,\n", |
412 | 410 | ")" |
413 | 411 | ] |
414 | 412 | }, |
|
553 | 551 | "\n", |
554 | 552 | "VECTOR_SIZE = 768 # Replace with the vector size of your embedding model\n", |
555 | 553 | "index = ScaNNIndex()\n", |
556 | | - "await store.set_maintenance_work_mem(index.num_leaves, VECTOR_SIZE)\n", |
| 554 | + "await store.aset_maintenance_work_mem(index.num_leaves, VECTOR_SIZE)\n", |
557 | 555 | "await store.aapply_vector_index(index)" |
558 | 556 | ] |
559 | 557 | }, |
|
818 | 816 | "metadata": {}, |
819 | 817 | "outputs": [], |
820 | 818 | "source": [ |
821 | | - "import uuid\n", |
822 | | - "\n", |
823 | 819 | "docs = await custom_store.asimilarity_search(query, filter={\"price_usd\": {\"$gte\": 100}})\n", |
824 | 820 | "\n", |
825 | 821 | "print(docs)" |
|
840 | 836 | "metadata": {}, |
841 | 837 | "outputs": [], |
842 | 838 | "source": [ |
843 | | - "import uuid\n", |
844 | | - "\n", |
845 | 839 | "docs = await custom_store.asimilarity_search(query, filter=\"price_usd > 100\")\n", |
846 | 840 | "\n", |
847 | 841 | "print(docs)" |
|
860 | 854 | "source": [ |
861 | 855 | "#### For v0.13.0+\n", |
862 | 856 | "\n", |
863 | | - "**Important Update:** Support for string filters has been deprecated. To filter data on the JSON metadata, you must first create a new column for the specific key you wish to filter on. Use the following SQL command to set this up." |
864 | | - ] |
865 | | - }, |
866 | | - { |
867 | | - "cell_type": "code", |
868 | | - "execution_count": null, |
869 | | - "metadata": { |
870 | | - "vscode": { |
871 | | - "languageId": "sql" |
872 | | - } |
873 | | - }, |
874 | | - "outputs": [], |
875 | | - "source": [ |
876 | | - "ALTER TABLE vectorstore_table ADD COLUMN category VARCHAR;\n", |
877 | | - "UPDATE vectorstore_table\n", |
| 857 | + "**Important Update:** Support for string filters has been deprecated. To filter data on the JSON metadata, you must first create a new column for the specific key you wish to filter on. Use the following SQL command to set this up.\n", |
| 858 | + "\n", |
| 859 | + "```\n", |
| 860 | + "ALTER TABLE products ADD COLUMN category_from_json VARCHAR;\n", |
| 861 | + "\n", |
| 862 | + "UPDATE products\n", |
878 | 863 | "SET\n", |
879 | | - " category = metadata ->> 'category';" |
| 864 | + " category_from_json = metadata ->> 'category';\n", |
| 865 | + "```" |
880 | 866 | ] |
881 | 867 | }, |
882 | 868 | { |
|
892 | 878 | "metadata": {}, |
893 | 879 | "outputs": [], |
894 | 880 | "source": [ |
895 | | - "import uuid\n", |
| 881 | + "TABLE_NAME = \"products\"\n", |
| 882 | + "# SCHEMA_NAME = \"my_schema\"\n", |
| 883 | + "\n", |
| 884 | + "# Reinitialize AlloyDBVectorStore with category_from_json\n", |
| 885 | + "custom_store = await AlloyDBVectorStore.create(\n", |
| 886 | + " engine=engine,\n", |
| 887 | + " table_name=TABLE_NAME,\n", |
| 888 | + " # schema_name=SCHEMA_NAME,\n", |
| 889 | + " embedding_service=embedding,\n", |
| 890 | + " # Connect to existing VectorStore by customizing below column names\n", |
| 891 | + " id_column=\"product_id\",\n", |
| 892 | + " content_column=\"description\",\n", |
| 893 | + " embedding_column=\"embed\",\n", |
| 894 | + " metadata_columns=[\n", |
| 895 | + " \"name\",\n", |
| 896 | + " \"category\",\n", |
| 897 | + " \"category_from_json\",\n", |
| 898 | + " \"price_usd\",\n", |
| 899 | + " \"quantity\",\n", |
| 900 | + " \"sku\",\n", |
| 901 | + " \"image_url\",\n", |
| 902 | + " ],\n", |
| 903 | + " metadata_json_column=\"metadata\",\n", |
| 904 | + ")\n", |
896 | 905 | "\n", |
897 | | - "docs = await custom_store.asimilarity_search(query, filter={\"category\": \"Electronics\"})\n", |
| 906 | + "docs = await custom_store.asimilarity_search(\n", |
| 907 | + " query, filter={\"category_from_json\": \"Electronics\"}\n", |
| 908 | + ")\n", |
898 | 909 | "\n", |
899 | 910 | "print(docs)" |
900 | 911 | ] |
|
915 | 926 | "metadata": {}, |
916 | 927 | "outputs": [], |
917 | 928 | "source": [ |
918 | | - "import uuid\n", |
919 | | - "\n", |
920 | 929 | "docs = await custom_store.asimilarity_search(\n", |
921 | 930 | " query, filter=\"metadata->>'category' = 'Electronics'\"\n", |
922 | 931 | ")\n", |
|
1069 | 1078 | "metadata": {}, |
1070 | 1079 | "outputs": [], |
1071 | 1080 | "source": [ |
| 1081 | + "from langchain_google_alloydb_pg import Column\n", |
| 1082 | + "\n", |
1072 | 1083 | "TABLE_NAME = \"hybrid_search_products\"\n", |
1073 | 1084 | "\n", |
1074 | 1085 | "await engine.ainit_vectorstore_table(\n", |
|
1078 | 1089 | " id_column=\"product_id\",\n", |
1079 | 1090 | " content_column=\"description\",\n", |
1080 | 1091 | " embedding_column=\"embed\",\n", |
1081 | | - " metadata_columns=[\"name\", \"category\", \"price_usd\", \"quantity\", \"sku\", \"image_url\"],\n", |
| 1092 | + " metadata_columns=[\n", |
| 1093 | + " Column(\"name\", \"VARCHAR(255)\"),\n", |
| 1094 | + " Column(\"category\", \"VARCHAR(255)\"),\n", |
| 1095 | + " Column(\"price_usd\", \"DECIMAL(10, 2)\"),\n", |
| 1096 | + " Column(\"quantity\", \"INTEGER\"),\n", |
| 1097 | + " Column(\"sku\", \"VARCHAR(255)\"),\n", |
| 1098 | + " Column(\"image_url\", \"VARCHAR(255)\"),\n", |
| 1099 | + " ],\n", |
1082 | 1100 | " metadata_json_column=\"metadata\",\n", |
1083 | 1101 | " hybrid_search_config=hybrid_search_config,\n", |
1084 | 1102 | " store_metadata=True,\n", |
|
1212 | 1230 | "toc_visible": true |
1213 | 1231 | }, |
1214 | 1232 | "kernelspec": { |
1215 | | - "display_name": "Python 3", |
| 1233 | + "display_name": "venv (3.13.7)", |
| 1234 | + "language": "python", |
1216 | 1235 | "name": "python3" |
1217 | 1236 | }, |
1218 | 1237 | "language_info": { |
|
1225 | 1244 | "name": "python", |
1226 | 1245 | "nbconvert_exporter": "python", |
1227 | 1246 | "pygments_lexer": "ipython3", |
1228 | | - "version": "3.12.3" |
| 1247 | + "version": "3.13.7" |
1229 | 1248 | } |
1230 | 1249 | }, |
1231 | 1250 | "nbformat": 4, |
|
0 commit comments