PgVectorFilterExpressionConverter was generating incorrect SQL for
IN and NOT IN filters with PostgreSQL JSON data types. This caused
BadSqlGrammarException errors when executing queries.
This change modifies the converter to generate correct SQL syntax
for these operations, ensuring compatibility with PostgreSQL's JSON
handling capabilities.
Why:
- Improves query reliability for PgVector stores
- Enables more complex filtering operations on JSON data
- Eliminates unexpected errors in query execution
Fixes#1179
Implementation:
- Introduce AbstractObservationVectorStore with instrumentation for add, delete, and similaritySearch methods
- Create VectorStoreObservationContext to capture operation details
- Implement DefaultVectorStoreObservationConvention for naming and tagging
- Add VectorStoreObservationDocumentation for defining observation keys
- Create VectorStoreObservationAutoConfiguration for auto-configuring observations
- Add VectorStoreObservationProperties to control optional observation content filters
- Update VectorStore interface with getName() method
- Modify PgVectorStore and SimpleVectorStore to extend AbstractObservationVectorStore
- Add vector_store Spring AI kind
Filters:
- Implement VectorStoreQueryResponseObservationFilter
- Add VectorStoreDeleteRequestContentObservationFilter and VectorStoreAddRequestContentObservationFilter
Enhancements:
- Update PgVectorStoreAutoConfiguration to support observations
- Add observation support to PgVectorStore's Builder
- Add VectorStoreObservationContext.Operation enum with ADD, DELETE, and QUERY options
Tests:
- Add tests for VectorStore context, convention, and filters
- Add VectorStoreObservationAutoConfiguration tests
- Add PgVectorObservationIT
Resolves#1205
* Change default schema initialization of vector stores from `true` to `false.`
Users need to explicitly opt-in for schema initialization by setting the
`initialize-schema` property on the corresponding vector store.
* Update integration tests
* Update docs
Fixes#907
Currently, `RedisVectorStoreAutoConfiguration` creates its own
configuration to connect with Redis. This commit reuse
`RedisAutoConfiguration` from spring boot project. It's limited
to Jedis.
- provides a flexible schema, can be combined with a vector store, and supports time-to-live rows.
- fix initialize-schema docs and so that it actually works.
- move CommonVectorStoreProperties to .vectorstore. package
- add CassandraAutoConfiguration to the AutoConfiguration.imports
In testing the docker mongodb/atlas container doesn't throw an exception when
calling `mongoTemplate.executeCommand({"createSearchIndexes": ...});`. However,
when using the Atlas service it does and throws a `IndexAlreadyExists` exception.
Added error handling for error code 68 or error code name `IndexAlreadyExists`.
See: https://www.mongodb.com/docs/manual/reference/error-codes/Fixes#910
This change allows users to specify custom names, facilitating management of multiple vector databases within a single database instance.
Key changes:
- Implement configurable schema, table, and index names for PgVectorStore
- Add properties to set custom schema and table names
- Introduce optional schema/table & field validation for custom configurations
- Include additional tests for new configurations and existing deployments
Additional improvements:
- Rename properties to schemaName, tableName, and schemaValidation
- Update pgvector documentation with new properties
- Add schema/table name tests to PgVectorStoreAutoConfigurationIT and PgVectorStorePropertiesTests
- Create standalone PgVectorSchemaValidator class for schema/table validation
- Add missing 'CREATE SCHEMA IF NOT EXISTS' when initializeSchema=true
- Remove redundant code and classes
Resolves#747
Co-authored-by: Christian Tzolov <ctzolov@vmware.com>
- Adds spring boot auto-configuration support for GemFireVectorStore
- Adds integration test GemFireVectorStoreAutoConfigurationIT
- Includes gemfire-testcontainers in integration tests
- Adds unit test GemFireVectorStorePropertiesTests
- Refactors GemFireVectorStore.java extracting GemFireVectorStoreConfig.java
- Renames spring-ai-gemfire to spring-ai-gemfire-store
- Adds GemFireConnectionDetails
- Adds GemFireVectorStoreProperties with default values
- Remove gemfire-release-repo maven repository
Co-authored-by: Louis Jacome <louis.jacome@broadcom.com>
Co-authored-by: Jason Huyn <jason.huynh@broadcom.com>
- Add `withContentFieldName` and `withDistanceMetadataFieldName` to Pinecone Config Builder
- Add `spring.ai.vectorstore.pinecone.contentFieldName` and `spring.ai.vectorstore.pinecone.distanceMetadataFieldName`
properties to the auto-config
- Default content field name: "document_content", distance field: "distance"
- Update tests and docs
Resolves#882
- knn instead of script_score, removed initialization
- only using normalized similarities, adjusted unit test
- making l2norm's distances consistent with others
- update dependency version and docs
- upate autoconfigure ITs
- replace RestTemplate by RestClient but default to SimpleClientHttpRequestFactory as Chroma seems to have issues with HTTP2.
- update the documentation.
- update the ghcr.io/chroma-core/chroma version to 0.5.0. Fix the withBasicAuthCredentials.
Co-authored-by: Christian Tzolov <ctzolov@vmware.com>
- implement OpensSearchVectorStore
- add opensearch auto-configuration and boot starter
- add documentation for OpenSearch VectorStore
- add bom dependecies
- align with to new Spirng AI API
- autoconfigure setup
- add post bean initialization and create method
- add embedding field
- create collection add nested field options
- add typesense tests
- use embedding variable instead of word vec
- check in runtime the number of documents in the collection
- add typesense expression converter
- add filter tests. add update document test and search with threshold test
- distance threshold and add distance key into metadata
- add typesesne boot starter
- add typesense docs
- add client properties in autoconfigure
- add embedding dimension method
- add typesense vector store autoconfiguration tests
- add docs to nav.adoc and vectorsdb.adoc.
- fix module name.
- move the expression converter to the typesense project.
* Move ChatClient and related classes into the chat.client package
* Move ChatModel and related class into the chat.model package
* Smaller refactorings to remove DSM cycles
* Update README.md
* Rename the ModelClient class hierarchy into Model:
- Rename ModelClient into Model. Update all code and doc references.
- Rename ChatClient to ChatModel. Update all ChatClient suffixes and chatClient fields and variables in code and doc.
- Rename EmbeddingClient into EmbeddingModel. Update the XxxEmbeddingClient class and variable suffixes and embeddingClient variables and fields in code and docs.
- Rename ImageClient into ImageModel.
- Rename SpeechClient into SpeechModel.
- Rename TranscriptionClient into TranscriptionModel.
- Update all javadocs and antora pages. Update the related diagrams.
* Create fluent API in ChatClient interface that now includes streaming support
* Add OpenAI FunctionCallbackWrapper2IT auto-config tests.
* Add ChatClientTest mockito testing.
* Add ChatModel#getDefaultOptions(), and remove @FunctionalInterface
* ChatModel enums extend the new ModelDescription interface.
* Implement fromOptions copy method in every ChatOptions implementation.
* Extend ChatClient to use the model default options if not provided explicitly.
* Update readme to provide guidance on how to adapt to breaking changes.
Co-authored-by: Christian Tzolov <ctzolov@vmware.com>
Co-authored-by: Mark Pollack <mpollack@vmware.com>