Spanner for LangChain
Quick Start
In order to use this library, you first need to go through the followingsteps:
Installation
Install this library in avirtualenv using pip.virtualenv is a tool to create isolated Python environments. The basic problem it addresses isone of dependencies and versions, and indirectly permissions.
Withvirtualenv, it’s possible to install this library without needing system install permissions, and without clashing with the installed system dependencies.
Supported Python Versions
Python >= 3.9
Mac/Linux
pip install virtualenvvirtualenv <your-env>source <your-env>/bin/activate<your-env>/bin/pip install langchain-google-spannerWindows
pip install virtualenvvirtualenv <your-env><your-env>\Scripts\activate<your-env>\Scripts\pip.exe install langchain-google-spannerVector Store Usage
Use a vector store to store embedded data and perform vector search.
from langchain_google_spanner import SpannerVectorstorefrom langchain.embeddings import VertexAIEmbeddingsembeddings_service = VertexAIEmbeddings(model_name="textembedding-gecko@003")vectorstore = SpannerVectorStore( instance_id="my-instance", database_id="my-database", table_name="my-table", embeddings=embedding_service)See the fullVector Store tutorial.
Document Loader Usage
Use a document loader to load data as LangChainDocuments.
from langchain_google_spanner import SpannerLoader loader = SpannerLoader( instance_id="my-instance", database_id="my-database", query="SELECT * from my_table_name" ) docs =loader.lazy_load()See the fullDocument Loader tutorial.
Chat Message History Usage
UseChatMessageHistory to store messages and provide conversationhistory to LLMs.
from langchain_google_spanner import SpannerChatMessageHistory history = SpannerChatMessageHistory( instance_id="my-instance", database_id="my-database", table_name="my_table_name", session_id="my-session_id" )See the fullChat Message History tutorial.
Spanner Graph Store Usage
UseSpannerGraphStore to store nodes and edges extracted from documents.
from langchain_google_spanner import SpannerGraphStore graph = SpannerGraphStore( instance_id="my-instance", database_id="my-database", graph_name="my_graph", )See the fullSpanner Graph Store tutorial.
Spanner Graph QA Chain Usage
UseSpannerGraphQAChain for question answering over a graph stored in Spanner Graph.
from langchain_google_spanner import SpannerGraphStore, SpannerGraphQAChainfrom langchain_google_vertexai import ChatVertexAIgraph = SpannerGraphStore( instance_id="my-instance", database_id="my-database", graph_name="my_graph",)llm = ChatVertexAI()chain = SpannerGraphQAChain.from_llm( llm, graph=graph, allow_dangerous_requests=True)chain.invoke("query=Where does Sarah's sibling live?")See the fullSpanner Graph QA Chain tutorial.
Spanner Graph Retrievers Usage
UseSpannerGraphTextToGQLRetriever to translate natural language question to GQL and query SpannerGraphStore.
from langchain_google_spanner import SpannerGraphStore, SpannerGraphTextToGQLRetrieverfrom langchain_google_vertexai import ChatVertexAIgraph = SpannerGraphStore( instance_id="my-instance", database_id="my-database", graph_name="my_graph",)llm = ChatVertexAI()retriever = SpannerGraphTextToGQLRetriever.from_params( graph_store=graph, llm=llm)retriever.invoke("Where does Elias Thorne's sibling live?")UseSpannerGraphVectorContextRetriever to perform vector search on embeddings that are stored in the nodes in a SpannerGraphStore. If expand_by_hops is provided, the nodes and edges at a distance upto the expand_by_hops from the nodes found in the vector search will also be returned.
from langchain_google_spanner import SpannerGraphStore, SpannerGraphVectorContextRetrieverfrom langchain_google_vertexai import ChatVertexAI, VertexAIEmbeddingsgraph = SpannerGraphStore( instance_id="my-instance", database_id="my-database", graph_name="my_graph",)embedding_service = VertexAIEmbeddings(model_name="text-embedding-004")retriever = SpannerGraphVectorContextRetriever.from_params( graph_store=graph, embedding_service=embedding_service, label_expr="Person", embeddings_column="embeddings", top_k=1, expand_by_hops=1, )retriever.invoke("Who lives in desert?")Contributions
Contributions to this library are always welcome and highly encouraged.
SeeCONTRIBUTING for more information how to get started.
Please note that this project is released with a Contributor Code of Conduct. By participating inthis project you agree to abide by its terms. SeeCode of Conduct for moreinformation.
License
Apache 2.0 - SeeLICENSEfor more information.
Disclaimer
This is not an officially supported Google product.
Limitations
Approximate Nearest Neighbors (ANN) strategies are only supported for the GoogleSQL dialect
ANN’s ALTER VECTOR INDEX is not yet supported byGoogle Cloud Spanner
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-10-30 UTC.