Class OracleVectorStore
java.lang.Object
org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore
org.springframework.ai.vectorstore.oracle.OracleVectorStore
- All Implemented Interfaces:
Consumer<List<Document>>,DocumentWriter,VectorStore,VectorStoreRetriever,org.springframework.beans.factory.InitializingBean
public class OracleVectorStore
extends AbstractObservationVectorStore
implements org.springframework.beans.factory.InitializingBean
Integration of Oracle database 23ai as a Vector Store.
With the release 23ai (23.4), the Oracle database provides numerous features useful for artificial intelligence such as Vectors, Similarity search, Vector indexes, ONNX models...
This Spring AI Vector store supports the following features:
- Vectors with unspecified or fixed dimensions
- Distance type for similarity search (note that similarity threshold can be used only with distance type COSINE and DOT when ingested vectors are normalized, see forcedNormalization)
- Vector indexes (use IVF as of 23.4)
- Exact and Approximate similarity search
- Filter expression as SQL/JSON Path expression evaluation
- Author:
- Loïc Lefèvre, Christian Tzolov, Soby Chacko, Thomas Vitale
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBuilder class for creatingOracleVectorStoreinstances.static enumstatic enum -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final OracleVectorStore.OracleVectorStoreDistanceTypestatic final OracleVectorStore.OracleVectorStoreIndexTypestatic final intstatic final Stringstatic final doubleFields inherited from class org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore
batchingStrategy, embeddingModel -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedProtected constructor that accepts a builder instance. -
Method Summary
Modifier and TypeMethodDescriptionvoidstatic OracleVectorStore.Builderbuilder(org.springframework.jdbc.core.JdbcTemplate jdbcTemplate, EmbeddingModel embeddingModel) createObservationContextBuilder(String operationName) Create a newVectorStoreObservationContext.Builderinstance.voidPerform the actual add operation.voidPerform the actual delete operation.protected voiddoDelete(Filter.Expression filterExpression) Template method for concrete implementations to provide filter-based deletion logic.doSimilaritySearch(SearchRequest request) Perform the actual similarity search operation.<T> Optional<T> Returns the native client if available in this vector store implementation.Methods inherited from class org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore
add, delete, delete, similaritySearchMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.ai.document.DocumentWriter
writeMethods inherited from interface org.springframework.ai.vectorstore.VectorStore
accept, delete, getNameMethods inherited from interface org.springframework.ai.vectorstore.VectorStoreRetriever
similaritySearch
-
Field Details
-
SIMILARITY_THRESHOLD_EXACT_MATCH
public static final double SIMILARITY_THRESHOLD_EXACT_MATCH- See Also:
-
DEFAULT_TABLE_NAME
- See Also:
-
DEFAULT_INDEX_TYPE
-
DEFAULT_DISTANCE_TYPE
-
DEFAULT_DIMENSIONS
public static final int DEFAULT_DIMENSIONS- See Also:
-
DEFAULT_SEARCH_ACCURACY
public static final int DEFAULT_SEARCH_ACCURACY- See Also:
-
filterExpressionConverter
-
-
Constructor Details
-
OracleVectorStore
Protected constructor that accepts a builder instance. This is the preferred way to create new OracleVectorStore instances.- Parameters:
builder- the configured builder instance
-
-
Method Details
-
builder
public static OracleVectorStore.Builder builder(org.springframework.jdbc.core.JdbcTemplate jdbcTemplate, EmbeddingModel embeddingModel) -
doAdd
Description copied from class:AbstractObservationVectorStorePerform the actual add operation.- Specified by:
doAddin classAbstractObservationVectorStore- Parameters:
documents- the documents to add
-
doDelete
Description copied from class:AbstractObservationVectorStorePerform the actual delete operation.- Specified by:
doDeletein classAbstractObservationVectorStore- Parameters:
idList- the list of document IDs to delete
-
doDelete
Description copied from class:AbstractObservationVectorStoreTemplate method for concrete implementations to provide filter-based deletion logic.- Overrides:
doDeletein classAbstractObservationVectorStore- Parameters:
filterExpression- Filter expression to identify documents to delete
-
doSimilaritySearch
Description copied from class:AbstractObservationVectorStorePerform the actual similarity search operation.- Specified by:
doSimilaritySearchin classAbstractObservationVectorStore- Parameters:
request- the search request- Returns:
- the list of documents that match the query request conditions
-
afterPropertiesSet
- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
getTableName
-
createObservationContextBuilder
Description copied from class:AbstractObservationVectorStoreCreate a newVectorStoreObservationContext.Builderinstance.- Specified by:
createObservationContextBuilderin classAbstractObservationVectorStore- Parameters:
operationName- the operation name- Returns:
- the observation context builder
-
getNativeClient
Description copied from interface:VectorStoreReturns the native client if available in this vector store implementation. Note on usage: 1. Returns empty Optional when no native client is available 2. Due to Java type erasure, runtime type checking is not possible Example usage: When working with implementation with known native client: Optionalclient = vectorStore.getNativeClient(); Note: Using Optionalinvalid input: '<'?> will return the native client if one exists, rather than an empty Optional. For type safety, prefer using the specific client type. - Specified by:
getNativeClientin interfaceVectorStore- Type Parameters:
T- The type of the native client- Returns:
- Optional containing native client if available, empty Optional otherwise
-