Skip to content

Commit 580fc58

Browse files
fix(search): bound retrieval and resume projection upgrades (#7824)
* fix(search): bound vector retrieval under selective permissions * fix(search): enforce retrieval budgets in integration coverage * fix(search): serialize projection upgrades with active writers * fix(search): keep projection lookups inline and filter scopes early * test(search): align access providers with staging discovery * fix(search): bound keyword ranking and resume projection upgrades * fix(db): record superseded migrations after successful upgrades * chore(db): use a documentation block for the migration note
1 parent 95e0607 commit 580fc58

27 files changed

Lines changed: 28168 additions & 266 deletions

.github/workflows/migrations.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ jobs:
2525
migrate:
2626
name: Apply Database Migrations
2727
runs-on: ${{ (vars.CI_PROVIDER == '' || vars.CI_PROVIDER == 'blacksmith') && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }}
28-
timeout-minutes: 45
28+
# Bulk projection loads and concurrent index builds can outlast ordinary schema changes.
29+
timeout-minutes: 180
2930

3031
steps:
3132
- name: Checkout code

.github/workflows/test-build.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,12 @@ jobs:
182182
lib/memory/message-provenance.postgres.test.ts
183183
executor/handlers/agent/memory-harness.postgres.test.ts
184184
185+
- name: Verify Search vector projection upgrade in PostgreSQL
186+
working-directory: packages/db
187+
env:
188+
KNOWLEDGE_ACL_TEST_DATABASE_URL: postgresql://postgres:postgres@127.0.0.1:5432/sim_auth_scim
189+
run: bunx vitest run script-migrations/0016_backfill_search_vectors.postgres.test.ts
190+
185191
- name: Verify Search progress, pagination, and outbox scheduling in PostgreSQL
186192
working-directory: apps/sim
187193
env:

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ export const POST = withRouteHandler(async (request: NextRequest) => {
269269
queryVector: {
270270
vector: JSON.stringify(queryEmbeddingResult.embedding),
271271
dimensions: queryEmbeddingTarget!.dimensions,
272+
model: queryEmbeddingTarget!.model,
272273
},
273274
structuredFilters: hasFilters ? structuredFilters : undefined,
274275
})

apps/sim/lib/knowledge/__integration__/filtered-search.integration.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ describe.each([384, 768, 1024, 1536, 3072] as const)(
139139
queryVector: {
140140
vector: JSON.stringify([1, ...Array<number>(dimensions - 1).fill(0)]),
141141
dimensions,
142+
model: embeddingModel,
142143
},
143144
structuredFilters: [
144145
{ tagSlot: 'tag1', fieldType: 'text', operator: 'eq', value: 'common' },

apps/sim/lib/knowledge/__integration__/scale.integration.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ describe.skipIf(!enabled)('knowledge scale: isolated real PostgreSQL, no provide
453453
access: { kind: 'workspace', tokens: WORKSPACE_ACCESS_TOKENS },
454454
searchMode: 'hybrid',
455455
query: 'Orion',
456-
queryVector: { vector, dimensions: DIMENSIONS },
456+
queryVector: { vector, dimensions: DIMENSIONS, model: 'text-embedding-3-small' },
457457
})
458458
)
459459
expect(workspaceResults).toEqual([])
@@ -485,7 +485,11 @@ describe.skipIf(!enabled)('knowledge scale: isolated real PostgreSQL, no provide
485485
access,
486486
searchMode: mode,
487487
query: 'Orion',
488-
queryVector: { vector, dimensions: DIMENSIONS },
488+
queryVector: {
489+
vector,
490+
dimensions: DIMENSIONS,
491+
model: 'text-embedding-3-small',
492+
},
489493
structuredFilters: filters,
490494
})
491495
)

0 commit comments

Comments
 (0)