Skip to content
Closed
Show file tree
Hide file tree
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 Mar 23, 2026
1cb752f
docs(index-migrator): add planning workspace and repo guidance
nkanu17 Mar 17, 2026
309eccf
feat(migrate): add index migration CLI and core engine
nkanu17 Mar 19, 2026
ab8bb42
feat(migrate): add interactive migration wizard
nkanu17 Mar 19, 2026
0cc6736
docs(migrate): add migration guides and field attributes reference
nkanu17 Mar 19, 2026
0c29118
test(migrate): add migration planner, wizard, and integration tests
nkanu17 Mar 19, 2026
8d17a0f
chore: add nitin_docs and nitin_scripts to gitignore
nkanu17 Mar 19, 2026
cc42b77
feat(migrate): add async migration support
nkanu17 Mar 20, 2026
33ebf54
refactor(migrate): remove unused imports
nkanu17 Mar 20, 2026
183ffc5
feat:add batch indexing
nkanu17 Mar 20, 2026
5ec0bd1
feat(migrate): optimize doc enumeration and simplify CLI
nkanu17 Mar 20, 2026
9fe44d9
docs(migrations): fix typo in downtime considerations section
nkanu17 Mar 23, 2026
e1add9c
feat(migrate): add rename operations to planner
nkanu17 Mar 23, 2026
c08c727
feat(migrate): implement rename execution in sync/async executors
nkanu17 Mar 23, 2026
239a46f
feat(migrate): complete wizard with all supported operations
nkanu17 Mar 23, 2026
1521a4c
fix(migrate): robust schema validation with FT.INFO attribute handling
nkanu17 Mar 23, 2026
00181b3
fix(migrate): handle prefix changes in key_sample validation
nkanu17 Mar 23, 2026
516cc19
feat(migrate): add automatic functional validation with wildcard search
nkanu17 Mar 23, 2026
ab8a017
fix(migrate): HNSW param parsing and weight normalization for validation
nkanu17 Mar 23, 2026
b3d88a0
test(migrate): add integration tests for migration routes
nkanu17 Mar 23, 2026
d452eab
docs(migrate): update migration docs for new capabilities
nkanu17 Mar 23, 2026
4eee541
fix(migrate): address code review feedback
nkanu17 Mar 23, 2026
76a8719
fix(migrate): address PR review feedback
nkanu17 Mar 23, 2026
e7efc86
st
nkanu17 Mar 27, 2026
bf3773b
feat(migrate): crash-safe quantization with disk space estimation
nkanu17 Mar 31, 2026
30cc6c1
fix(migrate): address PR review feedback for crash-safe quantization
nkanu17 Mar 31, 2026
e8181a1
fix(migrate): resume hardening, same-width dtype safety, progress acc…
nkanu17 Mar 31, 2026
95c9c69
refactor(migrate): deduplicate dtype-bytes mapping, use DTYPE_BYTES f…
nkanu17 Mar 31, 2026
79ebd5b
fix(migrate): move storage_type assignment before try block to fix my…
nkanu17 Mar 31, 2026
3c94242
feat(migrate): compact checkpoint representation (IM-17)
nkanu17 Mar 31, 2026
ca7fc42
fix(migrate): validate checkpoint identity and use plan key_separator…
nkanu17 Mar 31, 2026
6ed8d26
feat(migrate): extract shared utils, AOF CLI detection, legacy checkp…
nkanu17 Mar 31, 2026
cc6bbb4
feat(migrator): add sync migration engine with planner, executor, and…
nkanu17 Mar 31, 2026
1ae6477
chore: format migration __init__.py
nkanu17 Mar 31, 2026
96f586b
feat(migrator): add async migration support
nkanu17 Mar 31, 2026
a323d64
feat(migrator): add batch migration support for multi-index operations
nkanu17 Mar 31, 2026
2de50f2
feat(migrator): add interactive migration wizard
nkanu17 Mar 31, 2026
21c0f4f
feat(migrator): add CLI commands and documentation
nkanu17 Mar 31, 2026
a39079d
chore: merge feat/migrate-cli-docs into checkpoint-backup
nkanu17 Mar 31, 2026
04cf271
fix(migrate): address review comments from round 1
nkanu17 Mar 31, 2026
c92ab5f
fix(migrate): validate checkpoint identity before completion check
nkanu17 Mar 31, 2026
a4e6af7
fix(migrate): fix async sentinel bug, remove stale JSON checkpoint, c…
nkanu17 Mar 31, 2026
281c162
fix(migrate): address Round 4 review comments
nkanu17 Mar 31, 2026
c88bd63
fix(migrate): RENAMENX, JSON unwrap, planner rename-remap, batch skip…
nkanu17 Mar 31, 2026
aabcf4e
fix(migrate): wizard schema refresh after mutations, SVS-VAMANA datat…
nkanu17 Mar 31, 2026
8ad5ec9
docs(migrate): add step-by-step migration sequence and correct memory…
nkanu17 Apr 1, 2026
6734794
fix(migrate): update ready-state baseline on doc count change, guard …
nkanu17 Apr 1, 2026
a14ecb5
docs(migrate): document deferred codex comments round N+2
nkanu17 Apr 1, 2026
ce740ff
fix(migrate): fix async wait_for_index_ready baseline update on doc c…
nkanu17 Apr 1, 2026
7eccaab
fix(migrate): fix HSET rename counting, re-raise pipeline errors, rem…
nkanu17 Apr 1, 2026
d3c0ee5
fix(migrate): handle JSON.GET empty list for missing paths, reject du…
nkanu17 Apr 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -234,3 +234,17 @@ tests/data

# Local working directory (personal scripts, docs, tools)
local/
nitin_docs/
nitin_scripts/

# Local notebooks (kept for development, not committed)
docs/user_guide/13_index_migrations.ipynb

# Migration temp files (generated by rvl migrate commands)
migration_plan.yaml
migration_report.yaml
schema_patch.yaml

# Benchmark artifacts
tests/benchmarks/charts/
tests/benchmarks/results_*.json
165 changes: 165 additions & 0 deletions AGENTS.md
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/...`
23 changes: 22 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -251,12 +251,33 @@ Before suggesting a new feature:

## Pull Request Process

1. **Fork and create a branch**: Create a descriptive branch name (e.g., `fix-search-bug` or `add-vector-similarity`)
1. **Fork and create a branch**: Use a conventional branch name such as `feat/index-migrator`, `fix/search-bug`, or `docs/vectorizer-guide`
2. **Make your changes**: Follow our coding standards and include tests
3. **Test thoroughly**: Ensure your changes work and don't break existing functionality
4. **Update documentation**: Add or update documentation as needed
5. **Submit your PR**: Include a clear description of what your changes do

### Branch Naming and Commit Messages

We use conventional branch names and Conventional Commits to keep history easy to scan and automate.

Branch naming:

- Use `<type>/<short-kebab-description>`
- Recommended types: `feat`, `fix`, `docs`, `refactor`, `test`, `chore`, `perf`, `build`, `ci`
- Examples:
- `feat/index-migrator`
- `fix/async-sentinel-pool`
- `docs/migration-benchmarking`

Commit messages:

- Use `<type>(optional-scope): <summary>`
- Examples:
- `feat(migrate): add drop recreate plan generation`
- `docs(index-migrator): add benchmark guidance`
- `fix(cli): reject unsupported migration diffs`

### Review Process

- The core team reviews Pull Requests regularly
Expand Down
Loading
Loading