- Implement CouchbaseVectorStore, including support for filter expression conversion.
- Add couchbase vectore store documentation
- Add spring boot autoconfig and starter
Resolves# https://github.com/spring-projects/spring-ai/issues/938
Comment From: tzolov
Thanks for the contribution @ldoguin
Before we can start the review could please: - add the couchbase.adoc to the nav.adoc catalog (they vector stores are listed in alphabetical order). - add the vector store and the boot starter dependency to the BOM's pom
Comment From: ldoguin
Hi @tzolov, just added them. Thank you !
Comment From: ldoguin
Hi @sobychacko, I have implemented your comments, thanks !
Comment From: sobychacko
@ldoguin, I added some more minor comments to the review. I also suggest you add some testing around the Boot auto-configuration. Take a look here for examples: https://github.com/spring-projects/spring-ai/tree/main/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore.
Comment From: ldoguin
@sobychacko change the Thread.sleep to watcher and retries. Unfortunately we don't have a synchronous API for these.
Comment From: sobychacko
@ldoguin Thanks for the updates. When running the tests locally, I see the following two tests consistently fail. Could you look into them?
CouchbaseVectorStoreAutoConfigurationIT#addAndSearchWithFilters
CouchabaseVectorStoreIT#searchWithFilters
Also, can you rebase the PR branch against the latest main?
Comment From: ldoguin
Hi @sobychacko, I sadly can't reproduce. Is it a Couchbase connection error ?
Comment From: sobychacko
@ldoguin These are the types of errors I am seeing locally:
Caused by: com.couchbase.client.core.error.UnambiguousTimeoutException: WaitUntilReady timed out in stage WAIT_FOR_CONFIG (spent PT1.001939792S in that stage) {"bucket":"example","checkedServices":
[],"desiredState":"ONLINE","remainingPingTargets":{},"services":{"mgmt":[{"last_activity_us":1006741,"state":"connected","circuit_breaker_state":"disabled","id":"0x9367b2dd",
"remote":"localhost:53016","local":"127.0.0.1:53070"},{"lastConnectAttemptFailure":"finishConnect(..) failed: Connection refused: localhost/127.0.0.1:8091 - Check server ports and cluster encryption setting.","state":"disconnected","circuit_breaker_state":"disabled"},
{"lastConnectAttemptFailure":"finishConnect(..) failed: Connection refused: localhost/127.0.0.1:8091 - Check server ports and cluster encryption setting.","state":"disconnected","circuit_breaker_state":"disabled"},{"lastConnectAttemptFailure":"finishConnect(..) failed: Connection refused: localhost/127.0.0.1:8091 - Check server ports and cluster encryption setting.","state":"disconnected","circuit_breaker_state":"disabled"},
{"lastConnectAttemptFailure":"finishConnect(..) failed: Connection refused: localhost/127.0.0.1:8091 - Check server ports and cluster encryption setting.","state":"disconnected","circuit_breaker_state":"disabled"},{"lastConnectAttemptFailure":"finishConnect(..) failed: Connection refused: localhost/127.0.0.1:8091 - Check server ports and cluster encryption setting.","state":"disconnected","circuit_breaker_state":"disabled"},{"lastConnectAttemptFailure":"finishConnect(..)
Comment From: ldoguin
@sobychacko So it does look like a couchbase/testcontainer issues. Let me see how we are doing tests with Spring Data Couchabse.
Comment From: sobychacko
@ldoguin Any updates on this PR?
Comment From: markpollack
Hi @ldoguin Its' beena while, wondering if you could take a look again on this.