Skip to main content
Open In ColabOpen on GitHub

Google Vertex AI Feature Store

Google Cloud Vertex Feature Store streamlines your ML feature management and online serving processes by letting you serve at low-latency your data in Google Cloud BigQuery, including the capacity to perform approximate neighbor retrieval for embeddings

This tutorial shows you how to easily perform low-latency vector search and approximate nearest neighbor retrieval directly from your BigQuery data, enabling powerful ML applications with minimal setup. We will do that using the VertexFSVectorStore class.

This class is part of a set of 2 classes capable of providing a unified data storage and flexible vector search in Google Cloud:

  • BigQuery Vector Search: with BigQueryVectorStore class, which is ideal for rapid prototyping with no infrastructure setup and batch retrieval.
  • Feature Store Online Store: with VertexFSVectorStore class, enables low-latency retrieval with manual or scheduled data sync. Perfect for production-ready user-facing GenAI applications.

![Diagram BQ-VertexFS](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABzkAAANuCAYAAACFQLTUAAABUGlDQ1BJQ0MgUHJvZmlsZQAAGJV1kLFLAnEUxz+WJVRQRm0NBwUpWIhFY2AaETWIGWbbeV5noHacRjS3NAZBk3MQFOTk2hD9A0VBU6NbQ+BScr3TSi168Ph++P6+vN/jQQ+qaebcQL5QsuIrS8pWalvx1OjHy7A8+1StaIZjsXWJ8K3dVX/E5ej9jDPraDxRvoqejlYqyeT04uTJ33xXDWT0oib6Ie3TTKsErinh2EHJdFiaMUuWEj522Ghx2eF0i6+bmUQ8InwrPKJl1Yzwg3Ag3eEbHZzP7WtfOzjbD+mFzQ1HpSdYZo0Q8wRJ/ZObb+Yi7GFyiMUuBllKKITFMcmhC69SQGOWgHBIpslM576/79b2jAtYeBG4bHt6FKqv8rXa9vw18AbhTjFVS/25pqvuLu7MhVo8WIW+M9t+S4LHD40n236v2nbjHHqf4ab+CTagYL2ZriuvAAAAVmVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAADkoYABwAAABIAAABEoAIABAAAAAEAAAc5oAMABAAAAAEAAANuAAAAAEFTQ0lJAAAAU2NyZWVuc2hvdEKmRkMAAAHXaVRYdEhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGx4ZWxZRGltZW5zaW9uPjg3ODwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xODQ5PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CkBslAkAAEAASURBVHgB7N0HnBT1+fjx53q/owkCCqiAiICIXVHU2HuLvcSSX6LGNDXVdPNP15jEGGOJvWLvFcWuCKJURboI0q6X3Sv/55ljdmfmdu/2uL2yd59vXufuTv3Oe47ZyzzzPN+0Jm1CQwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBFJEID1F+kk3EUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUeAICe/CAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggkFICBDlT6nTRWQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQIMjJ7wACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCKSUAEHOlDpddBYBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBAhy8juAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونه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 خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyp00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6VOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyl00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6WOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyl00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6WOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyl00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6WOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyl00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6WOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyl00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6WOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyl00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpJUCQM6WOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyl00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAIpJUCQM6WOF51FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCnPwOIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASgkQ5Eyl00VnEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAA خونهAAAIIIIAAAggggAACDCB163q5d28GzG/wDwD9hU8gGAEAAAQQQQAABBBBAAAEEEEAAAQQQQACBNhPQH/b77/f7b7333u/+++z7k3/wEBAiIhc/z6R4U2683V00fC8bBYIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJCcAgQ5d9z5iQkBBBBAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCKSRAEHOlDpddBYBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBXBEgyJmjB5ZEIYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAApVEgCBn5f53hQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCVJAAIOWO42WlwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIBBSAgQ5W/bU0XEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIG+KkCQM2XfPO0ePAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpK0CQM2VPHR1HAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoG0IEOjsn3zzaNGgAAIIUMQA07fPOnYfT9j/t9Xz/70nQzT/mB3040tO+/506D656gAAEIAABCAAAS6RgCBnS/nLpQMAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAIIIBBEgCBnJg8s7UIAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEECgSAoScQx+N5wMAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAoW8AgQ5e+78wgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACC5BAgyJl754wOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAIIIIAAAnshQJCzE+9k54MAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAApVEgCBn5f53hQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCVJAAIWcv+61lQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIBBSAgQ5W/bU0XEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAYL8C/15X+j1O23k8C7z7+t6t1Jj/z8H9+t6vdS+13rE2r7g6vCj2+p4+zU7g4YJ/fTvbvM6q3fJ+h5nSfv5+h8M4770bdfPzWJ2c+3u0o8+7J6Pz9z+0tV9r1/2Ff9u3XFv1O12qC3xR5P2Bv/521u0v/n783+t/y6g0YtM2JndJ++1gqGf7c31V28Kj/4i27L3+q7t2Vn7j38f7bFld9r+wYfQf//5t9TtnfXvF/3f/uH7r+1vO39EefvvbXoKz//yT8+1q9Q2/vn3vG1/sXb339T176o/f6p9z34nU65tqTj4k6eP2/l3/Yf7XfuI0f4j4v+f2x39+b8P/yv705Z/+4+uX+fVb/8zD95u+71e6b/fv+Wz5/t78xP2sJ6vv89b/n0u/7b0n78u98v8e7/L//4s/3H/h2/3H/xfx37Xlfu/v/+82P/y+/2F/x37fvn5f181/uP/B/cMevr99u/+e33/9+/v+z9uX/18/y/97f2n/1f/wP53/H+3b/2/8M//+b//3/+r+Qf7+/3Gz//H2+//p/fD/8n/N3/A3+v/w/9z/8P+1/+7/03/1P/I/6h/8u/+j+T//f/xH/Ff93/7/4z/lP/f/xP/H/2r+f/6f/C//K/+H/K3+H/6/+H/zP/I/+f/i/+g/+9/EP/x/8/+C/+T/4f/P/9B/+d/i/8T/+//Bv8z/lP/x/+9/+P/F/+z/4P/G/8y/+3/h/+f/i/+j/4f/G//D/4f/t/8C//P/qf/x/+4/8r/y//3/9v+I/0r//3/+b9Ff/4/zP+0/w/+K/w/+b/x/8D/+f/j/+f/+H+C/8v/5/8i//H/6f/p/8z/+3/4f/P/+f/w//R/+5/M/8B///4f/z/Mv/xf4v/y/+7/x/8z/4v/A/+7/xj/w/+b+4P/N/eX/Ff+N/6f/l/+f/1/8z/5f/3/77/4/8y/+3/4f/h/8v/x/+//w//9/Mf/+z/xf/4/w//E//3/4f/F/87/j/+b/0/8z/4f/3/77/xf/m/8C//z/xf/4/w//E//3/4f/F/87/j/+b/0/8z/5f/3/77/xf/m/8C//z/xf/4/w//E//3/4f/F/87/j/+b/0/8z/5f/3/77/xf/m/8C//z/xf/4/w//E//3/4f/F/87/j/+b/0/8z/5f/3/77/xf/m/8B//z/xE//3/4f/F/87/j/+b/0/8z/5f/3/77/xf/m/8C//z/xf/4/w/8z/+3/xf/5/9P+3//H/g/8I/+P/X/8y/9j+5/2//o/'/4/xX/H/x//H/+f/4/z/fw//N/+d/0/9//3z/x/8n/+f/J/8f/z//f/x/+P/x/+/fw//d/+d/0/9//3//x/8n/+f/J/8X/z//f/4/+P/x/+/fw//d/+d/0/9//3//x/8n/+f/J/8X/z//f/4/+P/x/+/fw//d/+d/0/9//3//x/8n/+f/J/8X/z//f/4/+P/x/+/fw//d/+d/0/9//3//x/8n/+f/J/8X/z//f/4/+P/x/+/fw//d/+d/0/9//3//x/8n/+f/J/8X/z//f/4/+P/x/+/fw//d/+d/0/9//3//x/8n/+f/J/8X/z//f/4/+P/x/+/fw//d/+d/0/9//3//x/8n/+f/J/8X/z//f/4/+P/x/+/fw//d/+d/0/9//3//x/8n/+f/J/8X/z//f/4/x//D/4A/+8//w/+3/0//z/8P+B/xb+x/8z/5//f/7//v/7P/O/47/j/+f/4/z//f/2/+N/4z/m/+D/xv/m/+D/xv/m/+D/43/m/+D/43/nP/3/+3/6/9X/q3/j/+f+z/x/+f/9/8L/wL/wD/wD/w/zz/s/7P+z/t/+3/7f/t/+3/7f/t/+3/2/7L+0//f/2H/x/8f/y//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//3/7D/4//2+//wP/x//f/2//c///A/78//2///w/3P/Y/7P//f/8f/E/87/3f/N//f/2/+2/0z/T/9P/2//b//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9//3//x/4n/+f/J/8X/z//f/+z/4/+P/x//P/0///z/9A/9/(0AAA)

开始使用

安装库

%pip install --upgrade --quiet  langchain langchain-google-vertexai "langchain-google-community[featurestore]"

要在此 Jupyter 运行时中使用新安装的软件包,您必须重启运行时。您可以通过运行以下单元格来完成此操作,该单元格将重启当前的内核。

import IPython

app = IPython.Application.instance()
app.kernel.do_shutdown(True)

开始之前

设置您的项目 ID

如果您不知道您的项目 ID,请尝试执行以下操作:

  • 运行 gcloud config list
  • 运行 gcloud projects list
  • 请参阅支持页面:查找项目 ID
PROJECT_ID = ""  # @param {type:"string"}

# Set the project id
! gcloud config set project {PROJECT_ID}

设置区域

您还可以更改 BigQuery 使用的 REGION 变量。了解更多关于 BigQuery 区域 的信息。

REGION = "us-central1"  # @param {type: "string"}

设置数据集和表名

它们将是你的 BigQuery Vector Store。

DATASET = "my_langchain_dataset"  # @param {type: "string"}
TABLE = "doc_and_vectors" # @param {type: "string"}

认证你的笔记本环境

# from google.colab import auth as google_auth

# google_auth.authenticate_user()

演示:VertexFSVectorStore

创建一个 embedding 类实例

你可能需要在你的项目中启用 Vertex AI API,运行 gcloud services enable aiplatform.googleapis.com --project {PROJECT_ID} (将 {PROJECT_ID} 替换为你的项目名称)。

你可以使用任何 LangChain embeddings 模型

from langchain_google_vertexai import VertexAIEmbeddings

embedding = VertexAIEmbeddings(
model_name="textembedding-gecko@latest", project=PROJECT_ID
)
API Reference:VertexAIEmbeddings

初始化 VertexFSVectorStore

如果 BigQuery 数据集和表不存在,它们将被自动创建。有关所有可选参数,请参见此处的类定义。

from langchain_google_community import VertexFSVectorStore

store = VertexFSVectorStore(
project_id=PROJECT_ID,
dataset_name=DATASET,
table_name=TABLE,
location=REGION,
embedding=embedding,
)
API Reference:VertexFSVectorStore

添加文本

注意:由于创建功能在线商店,第一次同步过程大约需要 20 分钟。

all_texts = ["Apples and oranges", "Cars and airplanes", "Pineapple", "Train", "Banana"]
metadatas = [{"len": len(t)} for t in all_texts]

store.add_texts(all_texts, metadatas=metadatas)

您也可以通过执行 sync_data 方法来按需启动同步。

store.sync_data()

在生产环境中,您还可以使用 cron_schedule 类参数来设置自动计划同步。 例如:

store = VertexFSVectorStore(cron_schedule="TZ=America/Los_Angeles 00 13 11 8 *", ...)

搜索文档

query = "I'd like a fruit."
docs = store.similarity_search(query)
print(docs)

按向量搜索文档

query_vector = embedding.embed_query(query)
docs = store.similarity_search_by_vector(query_vector, k=2)
print(docs)

按元数据筛选搜索文档

# This should only return "Banana" document.
docs = store.similarity_search_by_vector(query_vector, filter={"len": 6})
print(docs)

添加带有嵌入的文本

您还可以使用 add_texts_with_embeddings 方法引入自己的嵌入。 这对于可能需要自定义预处理才能生成嵌入的多模态数据尤其有用。

items = ["some text"]
embs = embedding.embed(items)

ids = store.add_texts_with_embeddings(
texts=["some text"], embs=embs, metadatas=[{"len": 1}]
)

使用 BigQuery 进行批量服务

你只需使用 .to_bq_vector_store() 方法即可获取一个 BigQueryVectorStore 对象,该对象针对批量用例提供了优化的性能。所有必需的参数将从现有类自动传输。请参阅 类定义 以了解所有可用参数。

使用 .to_vertex_fs_vector_store() 方法同样可以轻松地迁移回 BigQueryVectorStore

store.to_bq_vector_store()  # pass optional VertexFSVectorStore parameters as arguments