This page introduces how to build LLM-powered applications using LangChain. The overviews on this page link to procedure guides in GitHub.
What is LangChain?
LangChain is an LLM orchestration framework that helps developers build generative AI applications or retrieval-augmented generation (RAG) workflows. It provides the structure, tools, and components to streamline complex LLM workflows.
For more information about LangChain, see the Google LangChain page. For more information about the LangChain framework, see the LangChain product documentation.
LangChain components for Spanner
Spanner offers the following LangChain interfaces:
Learn how to use these components in an application with the LangChain Quickstart for Spanner.
Vector store for Spanner
Vector store retrieves and stores documents and metadata from a vector database. Vector store gives an application the ability to perform semantic searches that interpret the meaning of a user query. This type of search is a called a vector search, and it can find topics that match the query conceptually. At query time, vector store retrieves the embedding vectors that are most similar to the embedding of the search request. In LangChain, a vector store takes care of storing embedded data and performing the vector search for you.
To work with vector store in Spanner, use the
SpannerVectorStore
class.
For more information, see the LangChain Vector Stores product documentation.
Vector store procedure guide
The Spanner guide for vector store shows you how to do the following:
- Install the integration package and LangChain
- Initialize a table for the vector store
- Set up an embedding service using
VertexAIEmbeddings
- Initialize
SpannerVectorStore
- Add and delete documents
- Search for similar documents
- Create a custom vector store to connect to a pre-existing Spanner database that has a table with vector embeddings
Document loader for Spanner
The document loader saves, loads, and deletes a LangChain Document
objects. For example, you can load data for processing into embeddings and
either store it in vector store or use it as a tool to provide specific context
to chains.
To load documents from Spanner, use the SpannerLoader
class.
Use the SpannerDocumentSaver
class to save and delete
documents.
For more information, see the LangChain Document loaders topic.
Document loader procedure guide
The Spanner guide for document loader shows you how to do the following:
- Install the integration package and LangChain
- Load documents from a table
- Add a filter to the loader
- Customize the connection and authentication
- Customize document construction by specifying customer content and metadata
- How to use and customize a
SpannerDocumentSaver
to store and delete documents
Chat message history for Spanner
Question and answer applications require a history of the things said in the
conversation to give the application context to answer further questions
from the user. The LangChain ChatMessageHistory
class lets the application
save messages to a database and retrieve them when needed to formulate further
answers. A message can be a question, an answer, a statement, a greeting or any
other piece of text that the user or application gives during the conversation.
ChatMessageHistory
stores each message and chains messages together for each
conversation.
Spanner extends this class with SpannerChatMessageHistory
.
Chat message history procedure guide
The Spanner guide for chat message history shows you how to do the following:
- Install LangChain and authenticate to Google Cloud
- Initialize a table
- Initialize the
SpannerChatMessageHistory
class to add and delete messages - Use a client to customize the connection and authentication
- Delete the
SpannerChatMessageHistory
session