Files
cleveragents-core/features/faiss_vector_backend.feature
aditya 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
feat(acms): integrate FAISS into ACMS vector backend protocol
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
2026-03-30 13:19:08 +00:00

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