The CassandraVectorStore is for managing and querying vector data in an Apache Cassandra db.
It offers functionalities like adding, deleting, and performing similarity searches on documents.
The store utilizes CQL to index and search vector data. It allows for custom metadata fields in
the documents to be stored alongside the vector and content data.
This class requires a CassandraVectorStoreConfig configuration object for initialization, which
includes settings like connection details, index name, field names, etc. It also requires an
EmbeddingClient to convert documents into embeddings before storing them.
A schema matching the configuration is automatically created if it doesn't exist. Missing columns
and indexes in existing tables will also be automatically created. Disable this with the disallowSchemaCreation.
This class is designed to work with brand new tables that it creates for you, or on top of existing
Cassandra tables. The latter is appropriate when wanting to keep data in place, creating embeddings
next to it, and performing vector similarity searches in-situ.
Instances of this class are not dynamic against server-side schema changes. If you change the schema
server-side you need a new CassandraVectorStore instance.
- Add auto-configure with tests.
- reformat code style
- Change field terminology to column (as appropriate for cassandra and cql)
- Add doc page with an advanced example.
- Add the dependencies to Spring AI BOM
– add to `AutoConfiguration.imports`
- Add @since annotation
- Fix javadoc issue
- Streamline the adoc content and layout
- Implement a HanaCloudVectorStore and tests
- Implement Autoconfiguraiton + properties
- Add boot starter
- Update BOM with vector store and boot dependencies.
- Add antora docuementation
- added junit for HanaCloudVectorStoreProperties.java and documentation
to create a BTP trial account and provision an instance for SAP Hana Cloud db
- updated license, formatting and javadoc
- IT for HanaCloudVectorStoreAutoConfiguration
- IT for HanaCloudVectorStoreAutoConfiguration
Additional
- add @AutoConfiguration(after = { JpaRepositoriesAutoConfiguration.class })
- update the handa docs structure.
- Implement ElasticsearchVectoSotore and IT.
- Add ElasticsearchAiSearchFilterExpressionConverter.
- Add dependency to BOM and module to parent pom.
- Fix ElasticsearchVectorStoreIT FilterExpression with
Date type requires the use of epoch milliseconds.
- Add license formatting.
`Reuse Container` is a Testcontainers experimental feature. It requires
`testcontainers.reuse.enable=true` in `~/.testcontainers.properties` in
order to take effect but in order to avoid surprises, this commit remove it.
See https://java.testcontainers.org/features/reuse/
- Add VectorSearchAggregation used to actually preform the search
on a given collection with embeddings.
- add MongoDBVectorStore
- Add MongoDBVectorStoreIT. Integration test runs fine given...
- You have a mongo atlas cluster to connect to (local or remote)
- You have the search index "spring_ai_vector_search" setup correctly
- Need to explore getting around this
- Need to filter results using threshold
- Add postfilter for threshold values - While a post filter is not ideal,
it gets the job done. The mongo team seems to be working on having
it availible as a prefilter option, in which this implementation
can be updated to use later.
- implement filtering threshold
- fix a few sonar issues
- formatting
- use higher default num_candidates
- use builder for configuration
- add documentation and some refactor
- use consistent property in integration test
- finish implementing filter support
- add documentation to filter converter
- add vector search index auto creation
- Add to BOM.
- Fix version to 1.0.0-SN.
- Move expresion converter from core to models/mongodb.
- Fix style and license headers
- Implement QdrantVectorStore.
Uses a custom parser for converting Spring AI metadata(Map<String, Object>) to Qdrant GRPC payload.
- Implement Qdrant Expression Filter support.
Uses a custom parser for converting Spring AI filters to Qdrant-compatible GRPC filters.
- Add ITs using testcontainers.
- Add antora docs adrant.adoc.
- Add Qdrant vector store auto-configuraton and boot starter.
Additional (review) change:
- Fix poms parent to 0.8.1-SNAPSHOT.
- Rename ObjectFactory into QdrantObjectFactor.
- Rename ValueFactory into QdrantValueFactory.
- Move the org.springframework.ai.vectorstore package into org.springframework.ai.vectorstore.qdrant.
- Add missing Autoconfigure definition.
- Add missing license and JavaDocs.
- Minor code style improvmentes.
- Move the qdrant version to the main pom
- Add QdrantVectorStoreAutoConfigurationIT
- Remove guava dependency
- Improve gdrant.adoc conent and structure.
- Remove the grpc-protobuf dependency
Resolves#331
- Extend the Spring AI Message with getMediaData() : List<MediaData>
MediaData is a pair of MimeType and data of type Object.
Message#getContent() return text only.
- VertexAI Gemini Support
- implement VertexAiGeiminChatClient for ChatClient and StreamingChat client and support for MediaData content.
add IT tests for Chat, Streaming and Multimodality
- add Auto-configuration + ITs
- add Gemini Spring Boot starter.
- add clients and boot starters to the Spring AI BOM.
- add Anotra documentation for the Gemini chat client.
- update gemini to latest 26.33.0 BOM.
- add vertex ai gemini dependencies to the BOM.
- add Vertex AI Gemini API Function Calling support
- add Gemini API Function Calling Streaming support
- add vertex ai gemini function calling documentation
- factor out the Function Calling functionality into common abstraction used by OpenAI, Azure and Gemini.
- group the VertexAI documentation under a common parent
- add PortableFunctionCallingOption that implements FunctionCallingOptions and ChatOptions and provide builder for it.
- remove some deprecated code.
- allow authorization with GoogleCredentials form json file.
- add AOT support for VertexAI Gemini.
- move legacy Vertex AI into VertexAI PaLM2.
- better handling for empty chat responses.
- update the Gemini version to latest 26.33.0. This required lifting the protobuf-java to 3.25.2 as well.
- fix a bug for handling System messages with Gemini.
- Implement Azure OpenAI Function Calling
Uses the same the common abstractions used by OpenAI and Gemini: FunctionCallingOptions and AbstractFunctionCallSupport
The text-embedding-3-small has the same dimensions as previous text-embedding-ada-002.
The text-embedding-3-large has higher dimensionality not supported by some Vector Stores.
To make the Neo4j module more future-proof, this commit
replaces the old vector index creation syntax with the new style.
Also, the new pattern is in line with the standard Neo4j index creation
and supports the _IF NOT EXISTS_ clause to run idempotent.
This allows us to remove the preceding call to check if the index exists.
As a consequent, the module will require Neo4j to be at least on version 5.15.
At the moment, it is not possible to configure SpringAI
to use an existing index in the database.
This commit enables the user to provide the index name
for auto configuration or builder usage.
Moved up one package level the following classes
* org.springframework.ai.huggingface.client.HuggingfaceChatClient
* org.springframework.ai.openai.client.OpenAiChatClient and org.springframework.ai.openai.embedding.OpenAiEmbeddingClient
* org.springframework.ai.vertex.generation.VertexAiChatClient and org.springframework.ai.vertex.embedding.VertexAiEmbeddingClient
Fixes#211