Skip to main content

langgraph-store-pixeltable

LangGraph BaseStore backend for Pixeltable — persistent, versioned, multimodal agent memory.

Installation

pip install langgraph-store-pixeltable

Quick Start

from langgraph.store.pixeltable import PixeltableStore

store = PixeltableStore(table_name="agent_memory.items")
store.setup()

# Store a memory
store.put(("users", "alice"), "prefs", {"color": "blue", "language": "Python"})

# Retrieve it
item = store.get(("users", "alice"), "prefs")
print(item.value)  # {"color": "blue", "language": "Python"}

# List namespaces
namespaces = store.list_namespaces(prefix=("users",))

Filtered Search

The filter parameter maps to Pixeltable's .where() clause — predicates are evaluated server-side, not in Python:

store.put(("team", "eng"), "alice", {"role": "senior", "level": 5, "lang": "Python"})
store.put(("team", "eng"), "bob", {"role": "junior", "level": 2, "lang": "Go"})
store.put(("team", "eng"), "carol", {"role": "senior", "level": 4, "lang": "Python"})

# Exact match (shorthand)
results = store.search(("team",), filter={"role": "senior"})

# Comparison operators
results = store.search(("team",), filter={"level": {"$gt": 3}})
results = store.search(("team",), filter={"role": {"$ne": "junior"}})

# Multiple conditions (AND)
results = store.search(("team", "eng"), filter={"role": "senior", "lang": "Python"})

Supported operators: $eq, $ne, $gt, $gte, $lt, $lte.

Semantic Search

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("all-MiniLM-L6-v2")

store = PixeltableStore(
    table_name="agent_memory.semantic",
    index={
        "dims": 384,
        "embed": lambda texts: model.encode(texts).tolist(),
        "fields": ["text"],
    },
)
store.setup()

store.put(("docs",), "d1", {"text": "Pixeltable handles multimodal data", "domain": "infra"})
store.put(("docs",), "d2", {"text": "LangGraph builds stateful agents", "domain": "framework"})
store.put(("docs",), "d3", {"text": "React is a frontend library", "domain": "frontend"})

# Semantic search
results = store.search(("docs",), query="multimodal AI pipelines", limit=2)
for r in results:
    print(f"{r.key}: {r.value['text']} (score={r.score:.3f})")

# Semantic search + filter (narrowed by domain)
results = store.search(
    ("docs",), query="data infrastructure", limit=3, filter={"domain": "infra"},
)

With LangGraph Agents

from langgraph.prebuilt import create_react_agent
from langgraph.store.pixeltable import PixeltableStore

store = PixeltableStore(table_name="agent_memory.items")
store.setup()

agent = create_react_agent(model, tools=tools, store=store)

Access the Underlying Pixeltable Table

The .table property gives direct access to the Pixeltable table for operations beyond the Store interface — computed columns, lineage, version history, and arbitrary predicates:

import pixeltable as pxt

t = store.table

# Inspect all data
t.select(t.key, t.value, t.created_at).collect()

# Add a computed column — auto-backfills all existing rows
t.add_computed_column(word_count=my_word_counter(t.value['text'].astype(pxt.String)))

# Add a classification UDF — runs on every new insert
t.add_computed_column(auto_domain=classify_domain(t.value['text'].astype(pxt.String)))

# WHERE on computed columns
results = t.where(t.auto_domain == 'infra').select(t.key, t.value).collect()

# Compound WHERE on multiple computed columns
results = (
    t.where((t.word_count > 5) & (t.auto_domain == 'infra'))
    .select(t.key, t.value, t.word_count, t.auto_domain)
    .collect()
)

# New inserts via the store auto-compute all lineage columns
store.put(("docs",), "d4", {"text": "Kubernetes orchestrates containers"})
# word_count and auto_domain are already computed for d4

Why Pixeltable for LangGraph Memory?

  • Metadata filtering via .where(): Filter on value fields with $eq/$ne/$gt/$gte/$lt/$lte, evaluated server-side
  • Computed column lineage: Add derived columns that auto-backfill and auto-compute on new inserts
  • Persistent and versioned: Data survives restarts; every update is tracked with full version history
  • Incremental: Only new/changed rows get re-embedded
  • Multimodal native: Images, video, audio, and documents alongside text via .table
  • Any embedding model: Works with sentence-transformers, OpenAI, or any callable
  • No external services: Embedded PostgreSQL, no Docker required
Feature PostgresStore PixeltableStore
Persistence Yes Yes + versioned
Vector search pgvector only Any embedding model
Multimodal values JSON only Image, Video, Audio via .table
Incremental embedding Manual Automatic via computed columns
History No Full version history per row
Computed columns No Arbitrary UDFs with lineage
External service Requires PostgreSQL + pgvector Embedded, no Docker

Links

Metadata

Release files for langgraph-store-pixeltable 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for langgraph-store-pixeltable 0.1.1
File Size Uploaded
langgraph_store_pixeltable-0.1.1.tar.gz 11.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for langgraph-store-pixeltable 0.1.1
File Interpreter ABI Platform
langgraph_store_pixeltable-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 20.4 kB

Release files / langgraph_store_pixeltable-0.1.1.tar.gz

Download URL langgraph_store_pixeltable-0.1.1.tar.gz
Size 11.7 kB
Tags Source
SHA-256 checksum
How to use checksums
faf4362cc08ae04a0873deeb8c5484fbae002137ddc35cc9aa4a2d37ea871262
BLAKE2b-256 checksum
How to use checksums
94927c567163790261d927f950924c8eed9f8a157199b52307b760255168b20e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 27, 2026.

Transparency log

Release files / langgraph_store_pixeltable-0.1.1-py3-none-any.whl

Download URL langgraph_store_pixeltable-0.1.1-py3-none-any.whl
Size 8.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f3ed3d5dcf768809df8fd7bb6ec67ae6e38b59f5fb7f160c8be15588fd36865f
BLAKE2b-256 checksum
How to use checksums
2e0ccfd0d03fdc24055a02f89744b31590c7bb4fe3a4d3888dbea06297d7b5dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page