Skip to content

Commit edf9679

Browse files
committed
improvement(knowledge): resolve live source grants once per search
- ask a live-proof source for the caller's grants once, before either leg, and only when the scope actually reads one, instead of per candidate page - drop the per-page source exclusion and refill loop that followed from the per-page proof - read search result metadata under the stored predicate the rows already passed - end candidate paging on a short page whether or not the leg reorders its results - batch the embedding_search.connector_id backfill in independently committed keyset pages, matching the other projection backfills
1 parent 0795a12 commit edf9679

9 files changed

Lines changed: 151 additions & 561 deletions

File tree

‎apps/sim/app/api/v1/knowledge/search/route.test.ts‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ describe('v1 knowledge search route — per-KB embedding model', () => {
165165
accessProvider: provider,
166166
})
167167
)
168-
expect(mockGetDocumentMetadataByIds).toHaveBeenCalledWith([], access, provider)
168+
expect(mockGetDocumentMetadataByIds).toHaveBeenCalledWith([], access)
169169
})
170170

171171
it.each([
@@ -224,8 +224,7 @@ describe('v1 knowledge search route — per-KB embedding model', () => {
224224
expect(response.status).toBe(200)
225225
expect(mockGetDocumentMetadataByIds).toHaveBeenCalledWith(
226226
['revoked-document', 'allowed-document'],
227-
access,
228-
provider
227+
access
229228
)
230229
expect(body.data.results).toEqual(
231230
allDenied

‎apps/sim/app/api/v1/knowledge/search/route.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ export const POST = withRouteHandler(async (request: NextRequest) => {
312312
})
313313

314314
const documentIds = results.map((r) => r.documentId)
315-
const documentMetadataMap = await getDocumentMetadataByIds(documentIds, access, accessProvider)
315+
const documentMetadataMap = await getDocumentMetadataByIds(documentIds, access)
316316
const readableResults = results.filter((result) => documentMetadataMap[result.documentId])
317317

318318
return NextResponse.json({

‎apps/sim/lib/knowledge/application/search.test.ts‎

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -825,12 +825,7 @@ describe('knowledge search application use case', () => {
825825
},
826826
})
827827

828-
expect(mocks.getDocumentMetadata).toHaveBeenCalledWith(
829-
['document-1'],
830-
expect.anything(),
831-
expect.objectContaining({ getForDocuments: expect.any(Function) }),
832-
undefined
833-
)
828+
expect(mocks.getDocumentMetadata).toHaveBeenCalledWith(['document-1'], expect.anything())
834829
expect(result.results[0]).toMatchObject({
835830
documentName: 'guide.pdf',
836831
sourceUrl: 'https://example.com/guide',

‎apps/sim/lib/knowledge/application/search.ts‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -625,9 +625,7 @@ const searchKnowledgeUseCase = defineAuthorizedKnowledgeUseCase({
625625
const basicDocumentMetadata = await measureSearchStage('metadata', () =>
626626
getDocumentMetadataByIds(
627627
rows.map((row) => row.documentId),
628-
access,
629-
context.access,
630-
input.signal
628+
access
631629
)
632630
)
633631
const results = rows

‎apps/sim/lib/knowledge/search/diagnostics.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export type SearchStage =
2929
| 'defaults'
3030
| 'retrieval'
3131
| 'access_plan'
32+
| 'live_source_grants'
3233
| 'vector.source_exact'
3334
| 'vector.source_walk'
3435
| 'permitted_documents'
@@ -38,7 +39,6 @@ export type SearchStage =
3839
| 'overage_billing'
3940
| 'tag_definitions'
4041
| 'metadata'
41-
| 'metadata.authorization'
4242
| 'metadata.sql'
4343
| 'metadata_provenance'
4444
| 'activity_recording'

‎apps/sim/lib/knowledge/search/queries-github-discovery.test.ts‎

Lines changed: 0 additions & 162 deletions
This file was deleted.

0 commit comments

Comments
 (0)