Skip to main content
This guide explains how to add semantic search to your deployment’s cross-thread store, so that your agent can search for memories and other documents by semantic similarity.

Prerequisites

Steps

  1. Update your langgraph.json configuration file to include the store configuration:
This configuration:
  • Uses OpenAI’s text-embedding-3-small model for generating embeddings
  • Sets the embedding dimension to 1536 (matching the model’s output)
  • Indexes all fields in your stored data (["$"] means index everything, or specify specific fields like ["text", "metadata.title"])
Each deployment supports a single embedding model. Configuring multiple embedding models is not supported, as it would cause ambiguity in /store endpoints and result in mixed-index issues.
  1. To use the string embedding format above, make sure your dependencies include langchain >= 0.3.8:
Or if using requirements.txt:

Usage

Once configured, you can use semantic search in your nodes. The store requires a namespace tuple to organize memories:
Each result is a SearchItem (extends Item with an additional score field). When semantic search is configured, score contains the similarity score:

Changing your embedding model

Changing the embedding model or dimensions requires re-embedding all existing data. There is currently no automated migration tooling for this. Plan accordingly if you need to switch models.

Custom embeddings

If you want to use custom embeddings, you can pass a path to a custom embedding function:
The deployment will look for the function in the specified path. The function must be async and accept a list of strings:

Querying via the API

You can also query the store using the LangGraph SDK. Since the SDK uses async operations:
Each result item includes a score field when semantic search is configured:

Connect these docs to Claude, VSCode, and more via MCP for real-time answers.