-
Notifications
You must be signed in to change notification settings - Fork 19
Description
Context and needs
User story
En tant qu'utilisateur je souhaite pouvoir ajouter des chunks à un document existant sans devoir le recharger. De plus, je souhaite pouvoir modifier un chunk existant. Enfin pour avoir le contrôle sur ma méthode de chunking, je souhaite avoir la possibilité d'ajouter des chunks directement sans devoir passer par NoSplitter qui nécessite de créer un document par chunk.
Context
Actuellement, la seule manière de créer directement des chunks est de passer par POST /v1/documents avec le paramètre chunker à NoSplitter qui nécessite de créer un document par chunk. Cela n'est pas pratique pour visualiser facilement les documents par la suite. De plus, la méthode actuellement n'est pas très compréhensible pour l'utilisateur et intuitive.
Goal
L'objectif de cette fonctionnalité est de permettre à l'utilisateur de créer des chunks directement par des endpoints /v1/chunks sans devoir passer par NoSplitter qui nécessite de créer un document par chunk. De plus, il doit pouvoir modifier un chunk existant.
Functional spec
Scope
La feature doit permettre :
- Ajouter un chunk à un document existant depuis un endpoint POST
/v1/chunks
Lors de la création d'un chunk, l'utilisateur n'aura pas a spécifier de méthode de chunking car il devra passer le chunk par une string. L'utilisateur doit pouvoir spécifier le document ID et le chunk ID. Le chunk ID correspond à l'emplacement du chunk dans le document. Le chunk ID (int) est unique pour un document et si un chunk ID existe déjà, l'utilisateur doit recevoir une erreur 400 Bad Request. Le chunk ID peut être optionnel et si il n'est pas spécifié, le chunk sera ajouté à la fin du document avec un ID incrémenté. Le chunk doit être embeddé et ajouté dans le vector store et ajouté au document. L'utilisateur peut spécifier un chunk ID qui n'est pas continue avec les chunks existants.
- Modifier un chunk existant depuis un endpoint PATCH
/v1/chunks
Lors de la modification d'un chunk, l'utilisateur doit pouvoir spécifier le document ID et le chunk ID. Le chunk ID correspond à l'emplacement du chunk dans le document. Si le chunk ID n'existe pas, l'utilisateur doit recevoir une erreur 404 Not Found. Le chunk doit être embeddé a nouveau dans le vector store et remplacer l'ancien chunk.
- Supprimer un chunk existant depuis un endpoint DELETE
/v1/chunks
Lors de la suppression d'un chunk, l'utilisateur doit pouvoir spécifier le document ID et le chunk ID. Le chunk ID correspond à l'emplacement du chunk dans le document. Si le chunk ID n'existe pas, l'utilisateur doit recevoir une erreur 404 Not Found. Le chunk doit être supprimé du vector store et du document.
- Supprimer la méthode NoSplitter pour la création des documents.
Lors de la création d'un document, l'utilisateur ne peut plus utiliser la méthode NoSplitter pour la création des chunks (400 Bad Request). Cette erreur a pour but de l'inciter à utiliser les nouveaux endpoints pour la création des chunks.
L'argument chunker doit être indiqué comme déprécié.
Acceptance criteria
- The user can [perform the action] without errors
- Error messages are clear and actionable
- Behavior complies with business rules
Technical spec
Architecture & integration
- Impact on existing components identified
- Existing API reused or new API specified
- Error handling and HTTP status codes defined
- Backward compatibility ensured
Data
- Data model defined or updated
- Backend validation rules implemented
- Data migration handled if needed
Security & compliance
- Authentication and authorization enforced
- Input validation and protection against invalid requests
- GDPR compliance (personal data, logging, retention)
Quality & testing
- Unit tests
- Integration tests
- Functional / E2E tests
- Technical documentation updated