@@ -215,4 +215,54 @@ describe("cortex query (minimal)", () => {
215215 expect ( result . scores [ i ] ) . toBeLessThanOrEqual ( result . scores [ i - 1 ] ) ;
216216 }
217217 } ) ;
218+
219+ it ( "respects the topK parameter" , async ( ) => {
220+ const metadataStore = await IndexedDbMetadataStore . open ( freshDbName ( ) ) ;
221+ const vectorStore = new MemoryVectorStore ( ) ;
222+ const keyPair = await generateKeyPair ( ) ;
223+
224+ const backend = new DeterministicDummyEmbeddingBackend ( { dimension : 4 } ) ;
225+ const vectorBackend = new TestVectorBackend ( ) ;
226+
227+ const runner = new EmbeddingRunner ( async ( ) => ( {
228+ backend,
229+ selectedKind : "dummy" as const ,
230+ reason : "forced" as const ,
231+ supportedKinds : [ "dummy" as const ] ,
232+ measurements : [ ] ,
233+ } ) ) ;
234+
235+ const profile : ModelProfile = {
236+ modelId : "test-model" ,
237+ embeddingDimension : 4 ,
238+ contextWindowTokens : 64 ,
239+ truncationTokens : 48 ,
240+ maxChunkTokens : 5 ,
241+ source : "metadata" ,
242+ } ;
243+
244+ const text = "One two three four five six seven eight nine ten." ;
245+ const ingestResult = await ingestText ( text , {
246+ modelProfile : profile ,
247+ embeddingRunner : runner ,
248+ vectorStore,
249+ metadataStore,
250+ keyPair,
251+ } ) ;
252+
253+ expect ( ingestResult . pages . length ) . toBeGreaterThanOrEqual ( 2 ) ;
254+
255+ const result = await query ( "one" , {
256+ modelProfile : profile ,
257+ embeddingRunner : runner ,
258+ vectorStore,
259+ metadataStore,
260+ vectorBackend,
261+ topK : 2 ,
262+ } ) ;
263+
264+ expect ( result . pages . length ) . toBe ( 2 ) ;
265+ expect ( result . scores . length ) . toBe ( 2 ) ;
266+ expect ( result . metadata . returned ) . toBe ( 2 ) ;
267+ } ) ;
218268} ) ;
0 commit comments