Class MilvusVectorStore
java.lang.Object
org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore
org.springframework.ai.vectorstore.milvus.MilvusVectorStore
- All Implemented Interfaces:
Consumer<List<Document>>
,DocumentWriter
,VectorStore
,org.springframework.beans.factory.InitializingBean
public class MilvusVectorStore
extends AbstractObservationVectorStore
implements org.springframework.beans.factory.InitializingBean
Milvus implementation of the
VectorStore
interface. This implementation supports storing and searching document embeddings using
Milvus, an open-source vector database optimized for similarity search and AI
applications.
Key features include:
- Support for different similarity metrics (Cosine, L2, Inner Product)
- Configurable index types for performance optimization
- Metadata filtering capabilities
- Automatic schema initialization
- Batching strategy support for efficient operations
Example usage:
// Create a basic Milvus vector store
MilvusVectorStore vectorStore = MilvusVectorStore.builder(milvusServiceClient, embeddingModel)
.initializeSchema(true)
.build();
// Create a customized Milvus vector store
MilvusVectorStore customVectorStore = MilvusVectorStore.builder(milvusServiceClient, embeddingModel)
.databaseName("my_database")
.collectionName("my_collection")
.metricType(MetricType.COSINE)
.indexType(IndexType.IVF_FLAT)
.indexParameters("{\"nlist\":1024}")
.embeddingDimension(1536)
.batchingStrategy(new TokenCountBatchingStrategy())
.initializeSchema(true)
.build();
// Add documents to the store
List<Document> documents = List.of(
new Document("content1", Map.of("meta1", "value1")),
new Document("content2", Map.of("meta2", "value2"))
);
vectorStore.add(documents);
// Perform similarity search
List<Document> results = vectorStore.similaritySearch(
SearchRequest.query("search text")
.withTopK(5)
.withSimilarityThreshold(0.7)
.withFilterExpression("meta1 == 'value1'")
);
The vector store supports various configuration options through its builder:
milvusClient
: Required Milvus service client for database operationsembeddingModel
: Required model for generating embeddingsmetricType
: Similarity metric (COSINE, L2, IP)indexType
: Type of index for search optimizationdatabaseName
: Name of the Milvus database (default: "default")collectionName
: Name of the collection (default: "vector_store")initializeSchema
: Whether to automatically create the schema
- Author:
- Christian Tzolov, Soby Chacko, Thomas Vitale, Ilayaperumal Gopinathan
- See Also:
-
VectorStore
MilvusServiceClient
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
static final String
static final String
static final String
static final String
static final int
static final String
static final int
Fields inherited from class org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore
batchingStrategy, embeddingModel
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
static MilvusVectorStore.Builder
builder
(io.milvus.client.MilvusServiceClient milvusServiceClient, EmbeddingModel embeddingModel) Creates a new MilvusBuilder instance with the specified Milvus client.createObservationContextBuilder
(String operationName) Create a newVectorStoreObservationContext.Builder
instance.void
Perform the actual add operation.void
Perform the actual delete operation.protected void
doDelete
(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, similaritySearch
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.ai.document.DocumentWriter
write
Methods inherited from interface org.springframework.ai.vectorstore.VectorStore
accept, delete, getName, similaritySearch
-
Field Details
-
OPENAI_EMBEDDING_DIMENSION_SIZE
public static final int OPENAI_EMBEDDING_DIMENSION_SIZE- See Also:
-
INVALID_EMBEDDING_DIMENSION
public static final int INVALID_EMBEDDING_DIMENSION- See Also:
-
DEFAULT_DATABASE_NAME
- See Also:
-
DEFAULT_COLLECTION_NAME
- See Also:
-
DOC_ID_FIELD_NAME
- See Also:
-
CONTENT_FIELD_NAME
- See Also:
-
METADATA_FIELD_NAME
- See Also:
-
EMBEDDING_FIELD_NAME
- See Also:
-
filterExpressionConverter
-
-
Constructor Details
-
MilvusVectorStore
- Parameters:
builder
-VectorStore.Builder
for chroma vector store
-
-
Method Details
-
builder
public static MilvusVectorStore.Builder builder(io.milvus.client.MilvusServiceClient milvusServiceClient, EmbeddingModel embeddingModel) Creates a new MilvusBuilder instance with the specified Milvus client. This is the recommended way to instantiate a MilvusBuilder.- Returns:
- a new MilvusBuilder instance
-
doAdd
Description copied from class:AbstractObservationVectorStore
Perform the actual add operation.- Specified by:
doAdd
in classAbstractObservationVectorStore
- Parameters:
documents
- the documents to add
-
doDelete
Description copied from class:AbstractObservationVectorStore
Perform the actual delete operation.- Specified by:
doDelete
in classAbstractObservationVectorStore
- Parameters:
idList
- the list of document IDs to delete
-
doDelete
Description copied from class:AbstractObservationVectorStore
Template method for concrete implementations to provide filter-based deletion logic.- Overrides:
doDelete
in classAbstractObservationVectorStore
- Parameters:
filterExpression
- Filter expression to identify documents to delete
-
doSimilaritySearch
Description copied from class:AbstractObservationVectorStore
Perform the actual similarity search operation.- Specified by:
doSimilaritySearch
in classAbstractObservationVectorStore
- Parameters:
request
- the search request- Returns:
- the list of documents that match the query request conditions
-
afterPropertiesSet
- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
- Throws:
Exception
-
createObservationContextBuilder
Description copied from class:AbstractObservationVectorStore
Create a newVectorStoreObservationContext.Builder
instance.- Specified by:
createObservationContextBuilder
in classAbstractObservationVectorStore
- Parameters:
operationName
- the operation name- Returns:
- the observation context builder
-
getNativeClient
Description copied from interface:VectorStore
Returns 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 Optional<?> will return the native client if one exists, rather than an empty Optional. For type safety, prefer using the specific client type. - Specified by:
getNativeClient
in interfaceVectorStore
- Type Parameters:
T
- The type of the native client- Returns:
- Optional containing native client if available, empty Optional otherwise
-