Skip to content

fix(langchain): skip projection for empty Store index fields - #6965

Closed
stefanielizeth73-art wants to merge 1 commit into
volcengine:mainfrom
stefanielizeth73-art:fix/oss-store-empty-index
Closed

stefanielizeth73-art wants to merge 1 commit into
volcengine:mainfrom
stefanielizeth73-art:fix/oss-store-empty-index

Conversation

@stefanielizeth73-art

Copy link
Copy Markdown
Contributor

Description

An empty Store field selection (index=[]) still created a Markdown search projection containing the key and namespace. Updating an indexed item with an empty selection also retained a searchable projection.

Apply the existing index=False removal path to an empty effective field list. Constructor defaults and write overrides behave consistently; the JSON value remains readable through get() and nonsemantic search. Nonempty selectors are unchanged.

Human Involvement

  • A human participated in the implementation or review loop
  • This PR was generated entirely by AI agents without human participation in the loop

Implementation, self-review, and local validation were completed with Codex assistance. Human code review is pending.

Related Issue

Fixes #6962.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • Documentation update
  • Test update

Changes Made

  • Skip or remove the projection when the effective selector is empty.
  • Extend the existing Store persistence contract across sync/async and batch writes, constructor defaults, and new/existing records.
  • Document the behavior in English and Chinese.

Testing

Windows / Python 3.13.9; LangGraph 1.2.15, langchain-core 1.6.10, LangChain 1.4.0; based on main 66e8ff0a.

  • Expanded Store contract: 16 fail / 118 pass before, 134 pass after.
  • Full integration/component suite: 806 pass / 2 fail. The same two Windows path fixtures fail on unchanged main (791 pass / 2 fail); failed test IDs are unchanged.
  • Package-wide Ruff and formatting checks pass; mypy passes for all 15 production modules.
  • Built the wheel, verified the packaged Store source matches the branch, and ran the Store contract against the installed wheel: 134 pass.

Commands:

python -m pytest -q --noconftest -o addopts='' integrations/frameworks/langchain/tests/test_store.py
python -m pytest -q --noconftest -o addopts='' integrations/frameworks/langchain/tests tests/unit/test_langchain_package_boundary.py
python -m ruff format --check integrations/frameworks/langchain/src integrations/frameworks/langchain/tests tests/unit/test_langchain_package_boundary.py
python -m ruff check integrations/frameworks/langchain/src integrations/frameworks/langchain/tests tests/unit/test_langchain_package_boundary.py
python -m mypy --config-file integrations/frameworks/langchain/pyproject.toml integrations/frameworks/langchain/src/langchain_openviking
python -m pip wheel --no-deps --wheel-dir <output> integrations/frameworks/langchain
git diff --check

Checklist

  • Code follows the project's style; existing contract tests were extended.
  • Corresponding English and Chinese documentation was updated.
  • Human self-review and personal test execution have been recorded.

Screenshots (if applicable)

Not applicable.

Additional Notes

Validation uses controlled storage/search clients, without live server, vector-provider, or model calls. The two full-suite failures are test_resolve_resource_source_handles_local_and_remote_sources and test_add_resource_keeps_explicit_local_clients_supported.

@qin-ctx

qin-ctx commented Nov 4, 2026

Copy link
Copy Markdown
Collaborator

Thanks for preparing this change and its documentation and validation.

As clarified in #6962, we are keeping the OpenViking Store integration focused on semantic indexing and retrieval. We are not taking on additional compatibility behavior for store-only, non-semantic use cases, including making index=[] disable or remove the semantic index.

We are closing this PR without merging based on that maintenance scope. We appreciate the time you spent investigating and implementing the change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[Bug]: LangGraph Store creates a semantic projection for an empty index field list

2 participants