eff446f5e8
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 19s
CI / helm (pull_request) Successful in 21s
CI / lint (pull_request) Successful in 26s
CI / typecheck (pull_request) Successful in 50s
CI / quality (pull_request) Successful in 3m44s
CI / integration_tests (pull_request) Successful in 3m58s
CI / unit_tests (pull_request) Successful in 4m5s
CI / security (pull_request) Successful in 4m6s
CI / docker (pull_request) Successful in 1m18s
CI / coverage (pull_request) Successful in 14m17s
CI / e2e_tests (pull_request) Successful in 21m13s
CI / status-check (pull_request) Successful in 1s
CI / benchmark-regression (pull_request) Successful in 58m23s
Add FAISS-backed ACMS read and write adapters on top of the shared VectorStoreService, wire them through the DI container, and cover indexing, scoped search, removal, and benchmark behavior with Behave and ASV. Address review feedback by keeping the commit scoped to the FAISS backend work and replacing the loose vector-store cache typing with explicit FAISS store protocols instead of Any. ISSUES CLOSED: #871
47 lines
2.7 KiB
Gherkin
47 lines
2.7 KiB
Gherkin
Feature: FAISS ACMS vector backend
|
|
As an ACMS maintainer
|
|
I want the FAISS vector backend wired into the ACMS protocols
|
|
So that semantic vector search can index and retrieve UKO resources
|
|
|
|
Scenario: FAISS vector backends index and search embeddings with scope filtering
|
|
Given the ACMS FAISS backend is configured to use fake embeddings
|
|
And FAISS interactions are recorded for ACMS backends
|
|
And an ACMS FAISS backend pair
|
|
When I index ACMS embedding "uko:auth" in project "local/app" for resource "RES01" with vector "1.0,0.0"
|
|
And I index ACMS embedding "uko:billing" in project "local/app" for resource "RES02" with vector "4.0,0.0"
|
|
And I search ACMS vectors in project "local/app" for vector "1.1,0.0"
|
|
Then the project vector search should include doc_id "uko:auth"
|
|
When I search ACMS vectors scoped to resource "RES01" for vector "1.1,0.0"
|
|
Then the scoped vector search should include uko_uri "uko:auth"
|
|
When I search ACMS vectors scoped to resource "RES02" for vector "1.1,0.0"
|
|
Then the scoped vector search should include uko_uri "uko:billing"
|
|
|
|
Scenario: FAISS vector index backend removes embeddings
|
|
Given the ACMS FAISS backend is configured to use fake embeddings
|
|
And FAISS interactions are recorded for ACMS backends
|
|
And an ACMS FAISS backend pair
|
|
And I index ACMS embedding "uko:auth" in project "local/app" for resource "RES01" with vector "1.0,0.0"
|
|
When I remove ACMS embedding "uko:auth" from project "local/app"
|
|
Then project "local/app" should have 0 ACMS embeddings
|
|
|
|
Scenario: ACMS FAISS backend uses embedding configuration from ConfigService
|
|
Given the ACMS FAISS backend is configured to use fake embeddings
|
|
And FAISS interactions are recorded for ACMS backends
|
|
And an ACMS FAISS backend pair
|
|
When I index ACMS embedding "uko:auth" in project "local/app" for resource "RES01" with vector "1.0,0.0"
|
|
Then the ACMS embeddings provider should be FakeEmbeddings sized 8
|
|
|
|
Scenario: DI container resolves FAISS vector backends when configured
|
|
Given the ACMS FAISS backend is configured to use fake embeddings
|
|
And FAISS interactions are recorded for ACMS backends
|
|
When I resolve ACMS vector backends from the DI container
|
|
Then the container vector backend should be a FAISSVectorBackend
|
|
And the container index vector backend should be a FAISSVectorIndexBackend
|
|
|
|
Scenario: DI container falls back when FAISS support is unavailable
|
|
Given the ACMS FAISS backend is configured to use fake embeddings
|
|
And FAISS is unavailable for ACMS backends
|
|
When I resolve ACMS vector backends from the DI container
|
|
Then the container vector backend should be an InMemoryVectorBackend
|
|
And the container index vector backend should be an InMemoryVectorIndexBackend
|