This document includes the roadmap for the Serpent project. It outlines features to be implemented and their current status.
Important
This roadmap is a work in progress and is subject to change.
- Plain text loader (for
.txt,.md, and.rstfiles) - JSON/JSONL loader with field extraction
- HTML loader with tag stripping
- PDF loader (via PoDoFo submodule)
- Word document loader (
.docxvia miniz) - CSV and Excel loader
- Recursive character text splitter
- Configurable chunk size and overlap
- Semantic chunking (sentence-aware)
- Token-based chunking
- Markdown-aware chunking
- BM25 sparse retrieval index
- HNSW dense vector store (
hnswlib) - RRF hybrid fusion
- Hybrid retriever (dense + sparse)
- Metadata filtering
- HNSW persistence with documents
- MMR diversity reranking
- Cross-encoder reranking
- llama.cpp local inference (CUDA support)
- Embedding generation via llama.cpp
- OpenRouter API integration
- OpenAI-compatible API
- Streaming generation
- Batch inference
Note
The REST API server and web UI have been removed to simplify the project. These may be re-added in a future release.
- Document store with deduplication
- Content hashing (
FNV-1a) - Chunk embedding storage
- Model auto-download (from HuggingFace)
- Version header with library metadata
- Persistent document storage (SQLite)
- Database backend (PostgreSQL)
- pybind11 module structure
- Document loading API
- Retrieval API
- LLM generation API
- PyPI packaging
- Model manager with HuggingFace download
- File utilities (header-only, not integrated)
- String utilities (header-only, not integrated)
- Embedding caching
- Logging framework
- Unit tests (for types, chunker, loaders, and retrieval)
- End-to-end tests (for the pipeline, persistence, and hybrid)
- API server tests
- Provider tests
- MkDocs documentation site (basic)
- Example notebooks
- Performance benchmarks