Preserve same-document multi-chunk evidence with evidenceKey identity, per-document caps, retrieve-k/return-n split, and a dense KnowledgeSearchPort. Archives Delivery 1 OpenSpec change as the foundation for hybrid retrieval.
1.8 KiB
1.8 KiB
Tasks: rag-chunk-evidence-identity-dedup
1. Identity model
- 1.1 Add
docId,chunkIndex,evidenceKeytoRetrievedEvidenceCandidateandEvidenceBlock - 1.2 Implement shared identity helper (
docId#chunk-N/vector:{id}/rank:{n}) - 1.3 Extract identity in
KnowledgeDocumentRetriever(or search-port mapper) from metadata
2. Search port boundary
- 2.1 Add
KnowledgeSearchPort,KnowledgeSearchRequest,KnowledgeSearchHit - 2.2 Implement dense adapter delegating to
VectorSearchService - 2.3 Wire retriever to port; keep tool orchestration free of SDK details
3. Post-process dedup and caps
- 3.1 Change dedup key to
evidenceKey - 3.2 Add
rag.max-chunks-per-document(default 2) - 3.3 Apply
rag.return-ntruncation after ranking/dedup/cap - 3.4 Keep score-threshold / relevance behavior unchanged except ordering inputs
4. Lookup config
- 4.1 Add
rag.retrieve-kandrag.return-nwith legacyrag.top-kfallback - 4.2 Use retrieve-k for search port calls in
LookupKnowledgeTool
5. Projector alignment
- 5.1 Prefer evidenceKey / chunk-scoped id as projected
document_id - 5.2 Stop dropping second evidence solely because
sourcematches - 5.3 Keep existing budget/truncation behavior
6. Tests
- 6.1 Update
LookupKnowledgeToolTestsource-dedup case to chunk-preserving behavior - 6.2 Add post-processor tests: multi-chunk keep, true-dup merge, maxChunksPerDocument
- 6.3 Update/add
RagResultProjectorTestfor same-source multi-chunk projection - 6.4 Add search-port adapter smoke test if practical
7. Verification
- 7.1 Run targeted unit tests for lookup / post-processor / projector
- 7.2 Mark tasks complete and note any residual risks for Delivery 2