-
Notifications
You must be signed in to change notification settings - Fork 75
feat(migrator): [1/6] add sync migration engine #549
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
51 commits
Select commit
Hold shift + click to select a range
3fab84b
chore: remove unused imports and variables
nkanu17 1cb752f
docs(index-migrator): add planning workspace and repo guidance
nkanu17 309eccf
feat(migrate): add index migration CLI and core engine
nkanu17 ab8bb42
feat(migrate): add interactive migration wizard
nkanu17 0cc6736
docs(migrate): add migration guides and field attributes reference
nkanu17 0c29118
test(migrate): add migration planner, wizard, and integration tests
nkanu17 8d17a0f
chore: add nitin_docs and nitin_scripts to gitignore
nkanu17 cc42b77
feat(migrate): add async migration support
nkanu17 33ebf54
refactor(migrate): remove unused imports
nkanu17 183ffc5
feat:add batch indexing
nkanu17 5ec0bd1
feat(migrate): optimize doc enumeration and simplify CLI
nkanu17 9fe44d9
docs(migrations): fix typo in downtime considerations section
nkanu17 e1add9c
feat(migrate): add rename operations to planner
nkanu17 c08c727
feat(migrate): implement rename execution in sync/async executors
nkanu17 239a46f
feat(migrate): complete wizard with all supported operations
nkanu17 1521a4c
fix(migrate): robust schema validation with FT.INFO attribute handling
nkanu17 00181b3
fix(migrate): handle prefix changes in key_sample validation
nkanu17 516cc19
feat(migrate): add automatic functional validation with wildcard search
nkanu17 ab8a017
fix(migrate): HNSW param parsing and weight normalization for validation
nkanu17 b3d88a0
test(migrate): add integration tests for migration routes
nkanu17 d452eab
docs(migrate): update migration docs for new capabilities
nkanu17 4eee541
fix(migrate): address code review feedback
nkanu17 76a8719
fix(migrate): address PR review feedback
nkanu17 e7efc86
st
nkanu17 bf3773b
feat(migrate): crash-safe quantization with disk space estimation
nkanu17 30cc6c1
fix(migrate): address PR review feedback for crash-safe quantization
nkanu17 e8181a1
fix(migrate): resume hardening, same-width dtype safety, progress acc…
nkanu17 95c9c69
refactor(migrate): deduplicate dtype-bytes mapping, use DTYPE_BYTES f…
nkanu17 79ebd5b
fix(migrate): move storage_type assignment before try block to fix my…
nkanu17 3c94242
feat(migrate): compact checkpoint representation (IM-17)
nkanu17 ca7fc42
fix(migrate): validate checkpoint identity and use plan key_separator…
nkanu17 6ed8d26
feat(migrate): extract shared utils, AOF CLI detection, legacy checkp…
nkanu17 cc6bbb4
feat(migrator): add sync migration engine with planner, executor, and…
nkanu17 1ae6477
chore: format migration __init__.py
nkanu17 96f586b
feat(migrator): add async migration support
nkanu17 a323d64
feat(migrator): add batch migration support for multi-index operations
nkanu17 2de50f2
feat(migrator): add interactive migration wizard
nkanu17 21c0f4f
feat(migrator): add CLI commands and documentation
nkanu17 a39079d
chore: merge feat/migrate-cli-docs into checkpoint-backup
nkanu17 04cf271
fix(migrate): address review comments from round 1
nkanu17 c92ab5f
fix(migrate): validate checkpoint identity before completion check
nkanu17 a4e6af7
fix(migrate): fix async sentinel bug, remove stale JSON checkpoint, c…
nkanu17 281c162
fix(migrate): address Round 4 review comments
nkanu17 c88bd63
fix(migrate): RENAMENX, JSON unwrap, planner rename-remap, batch skip…
nkanu17 aabcf4e
fix(migrate): wizard schema refresh after mutations, SVS-VAMANA datat…
nkanu17 8ad5ec9
docs(migrate): add step-by-step migration sequence and correct memory…
nkanu17 6734794
fix(migrate): update ready-state baseline on doc count change, guard …
nkanu17 a14ecb5
docs(migrate): document deferred codex comments round N+2
nkanu17 ce740ff
fix(migrate): fix async wait_for_index_ready baseline update on doc c…
nkanu17 7eccaab
fix(migrate): fix HSET rename counting, re-raise pipeline errors, rem…
nkanu17 d3c0ee5
fix(migrate): handle JSON.GET empty list for missing paths, reject du…
nkanu17 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,165 @@ | ||
| # AGENTS.md - RedisVL Project Context | ||
|
|
||
| ## Frequently Used Commands | ||
|
|
||
| ```bash | ||
| # Development workflow | ||
| make install # Install dependencies | ||
| make format # Format code (black + isort) | ||
| make check-types # Run mypy type checking | ||
| make lint # Run all linting (format + types) | ||
| make test # Run tests (no external APIs) | ||
| make test-all # Run all tests (includes API tests) | ||
| make check # Full check (lint + test) | ||
|
|
||
| # Redis setup | ||
| make redis-start # Start Redis container | ||
| make redis-stop # Stop Redis container | ||
|
|
||
| # Documentation | ||
| make docs-build # Build documentation | ||
| make docs-serve # Serve docs locally | ||
| ``` | ||
|
|
||
| Pre-commit hooks are also configured, which you should | ||
| run before you commit: | ||
| ```bash | ||
| pre-commit run --all-files | ||
| ``` | ||
|
|
||
| ## Important Architectural Patterns | ||
|
|
||
| ### Async/Sync Dual Interfaces | ||
| - Most core classes have both sync and async versions (e.g., `SearchIndex` / `AsyncSearchIndex`) | ||
| - Follow existing patterns when adding new functionality | ||
|
|
||
| ### Schema-Driven Design | ||
| ```python | ||
| # Index schemas define structure | ||
| schema = IndexSchema.from_yaml("schema.yaml") | ||
| index = SearchIndex(schema, redis_url="redis://localhost:6379") | ||
| ``` | ||
|
|
||
| ## Critical Rules | ||
|
|
||
| ### Do Not Modify | ||
| - **CRITICAL**: Do not change this line unless explicitly asked: | ||
| ```python | ||
| token.strip().strip(",").replace(""", "").replace(""", "").lower() | ||
| ``` | ||
|
|
||
| ### Git Operations | ||
| **CRITICAL**: NEVER use `git push` or attempt to push to remote repositories. The user will handle all git push operations. | ||
|
|
||
| ### Branch and Commit Policy | ||
| **IMPORTANT**: Use conventional branch names and conventional commits. | ||
|
|
||
| Branch naming: | ||
| - Human-created branches should use `<type>/<short-kebab-description>` | ||
| - Automation-created branches may use `codex/<type>/<short-kebab-description>` | ||
| - Preferred branch types: `feat`, `fix`, `docs`, `refactor`, `test`, `chore`, `perf`, `build`, `ci` | ||
| - Examples: | ||
| - `feat/index-migrator` | ||
| - `fix/async-sentinel-pool` | ||
| - `docs/index-migrator-benchmarking` | ||
| - `codex/feat/index-migrator` | ||
|
|
||
| Commit messages: | ||
| - Use Conventional Commits: `<type>(optional-scope): <summary>` | ||
| - Preferred commit types: `feat`, `fix`, `docs`, `refactor`, `test`, `chore`, `perf`, `build`, `ci` | ||
| - Examples: | ||
| - `feat(migrate): add drop recreate planning docs` | ||
| - `docs(index-migrator): add benchmarking guidance` | ||
| - `fix(cli): validate migrate plan inputs` | ||
|
|
||
| ### Code Quality | ||
| **IMPORTANT**: Always run `make format` before committing code to ensure proper formatting and linting compliance. | ||
|
|
||
| ### README.md Maintenance | ||
| **IMPORTANT**: DO NOT modify README.md unless explicitly requested. | ||
|
|
||
| **If you need to document something, use these alternatives:** | ||
| - Development info → CONTRIBUTING.md | ||
| - API details → docs/ directory | ||
| - Examples → docs/examples/ | ||
| - Project memory (explicit preferences, directives, etc.) → AGENTS.md | ||
|
|
||
| ## Code Style Preferences | ||
|
|
||
| ### Import Organization | ||
| - **Prefer module-level imports** by default for clarity and standard Python conventions | ||
| - **Use local/inline imports only when necessary** for specific reasons: | ||
| - Avoiding circular import dependencies | ||
| - Improving startup time for heavy/optional dependencies | ||
| - Lazy loading for performance-critical paths | ||
| - When using local imports, add a brief comment explaining why (e.g., `# Local import to avoid circular dependency`) | ||
|
|
||
| ### Comments and Output | ||
| - **No emojis in code comments or print statements** | ||
| - Keep comments professional and focused on technical clarity | ||
| - Use emojis sparingly only in user-facing documentation (markdown files), not in Python code | ||
|
|
||
| ### General Guidelines | ||
| - Follow existing patterns in the RedisVL codebase | ||
| - Maintain consistency with the project's established conventions | ||
| - Run `make format` before committing to ensure code quality standards | ||
|
|
||
| ## Testing Notes | ||
| RedisVL uses `pytest` with `testcontainers` for testing. | ||
|
|
||
| - `make test` - unit tests only (no external APIs) | ||
| - `make test-all` - run the full suite, including tests that call external APIs | ||
| - `pytest --run-api-tests` - explicitly run API-dependent tests (e.g., LangCache, | ||
| external vectorizer/reranker providers). These require the appropriate API | ||
| keys and environment variables to be set. | ||
|
|
||
| ## Project Structure | ||
|
|
||
| ``` | ||
| redisvl/ | ||
| ├── cli/ # Command-line interface (rvl command) | ||
| ├── extensions/ # AI extensions (cache, memory, routing) | ||
| │ ├── cache/ # Semantic caching for LLMs | ||
| │ ├── llmcache/ # LLM-specific caching | ||
| │ ├── message_history/ # Chat history management | ||
| │ ├── router/ # Semantic routing | ||
| │ └── session_manager/ # Session management | ||
| ├── index/ # SearchIndex classes (sync/async) | ||
| ├── query/ # Query builders (Vector, Range, Filter, Count) | ||
| ├── redis/ # Redis client utilities | ||
| ├── schema/ # Index schema definitions | ||
| └── utils/ # Utilities (vectorizers, rerankers, optimization) | ||
| ├── rerank/ # Result reranking | ||
| └── vectorize/ # Embedding providers integration | ||
| ``` | ||
|
|
||
| ## Core Components | ||
|
|
||
| ### 1. Index Management | ||
| - `SearchIndex` / `AsyncSearchIndex` - Main interface for Redis vector indices | ||
| - `IndexSchema` - Define index structure with fields (text, tags, vectors, etc.) | ||
| - Support for JSON and Hash storage types | ||
|
|
||
| ### 2. Query System | ||
| - `VectorQuery` - Semantic similarity search | ||
| - `RangeQuery` - Vector search within distance range | ||
| - `FilterQuery` - Metadata filtering and full-text search | ||
| - `CountQuery` - Count matching records | ||
| - Etc. | ||
|
|
||
| ### 3. AI Extensions | ||
| - `SemanticCache` - LLM response caching with semantic similarity | ||
| - `EmbeddingsCache` - Cache for vector embeddings | ||
| - `MessageHistory` - Chat history with recency/relevancy retrieval | ||
| - `SemanticRouter` - Route queries to topics/intents | ||
|
|
||
| ### 4. Vectorizers (Optional Dependencies) | ||
| - OpenAI, Azure OpenAI, Cohere, HuggingFace, Mistral, VoyageAI | ||
| - Custom vectorizer support | ||
| - Batch processing capabilities | ||
|
|
||
| ## Documentation | ||
| - Main docs: https://docs.redisvl.com | ||
| - Built with Sphinx from `docs/` directory | ||
| - Includes API reference and user guides | ||
| - Example notebooks in documentation `docs/user_guide/...` | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.