Incremental updates require ID-based operations (add, update, delete), supported by most vector stores. LangChain's indexing API and RecordManager track document sources, enabling incremental sync with cleanup modes: incremental (update mutated sources) and full (delete missing sources). For FAISS, document deletion requires full cleanup pass; for other stores, delete-by-ID is supported.
Incremental vector store updates rely on ID-based operations. LangChain's VectorStore interface provides add_documents, adelete, and get_by_ids methods for CRUD operations[reference:40][reference:41]. The indexing API with RecordManager automates source tracking: cleanup="incremental" updates mutated sources, while cleanup="full" deletes documents not present in the source[reference:42][reference:43].
FAISS limitation: cleanup="incremental" updates mutated sources but does not delete removed sources; requires cleanup="full" with complete document set to delete missing documents[reference:44]
Milvus support: Fully supports add/delete by ID, compatible with LangChain indexing[reference:45]
Qdrant: Supports delete by ID; use stored IDs to update or remove documents[reference:46]
ID management: Always assign stable, deterministic IDs (e.g., hash of content + source) to avoid duplicate embeddings
Performance: Batch updates with add_documents for efficiency; avoid per-document operations
Concurrency: Use record manager with database locking for multi-process indexing