MemoryVectorStore class

Vector store that stores vectors in memory.

By default, it uses cosine similarity to compare vectors.

It iterates over all vectors in the store to find the most similar vectors. This is not efficient for large vector stores as it has a time complexity of O(vector_dimensionality * num_vectors).

This class is useful for testing and prototyping, but it is not recommended for production use cases. See other vector store integrations for production use cases.

Filtering

You can filter the search space before running the similarity search by providing a VectorStoreSearchType.filter that will be matched against the metadata of the documents in the vector store.

Example:

final vs = MemoryVectorStore(...);
final res = await store.similaritySearch(
  query: 'Test query',
  config: const VectorStoreSimilaritySearch(
    filter: {'type': 'foo'},
  ),
);

This query will only consider documents that have a metadata field type with value foo.

Inheritance

Constructors

MemoryVectorStore({required Embeddings embeddings, double similarityFunction(List<double> a, List<double> b) = cosineSimilarity, List<MemoryVector>? initialMemoryVectors})
Main constructor for MemoryVectorStore.

Properties

embeddings Embeddings
The embeddings model used to embed documents.
finalinherited
hashCode int
The hash code for this object.
no setterinherited
memoryVectors List<MemoryVector>
Vectors stored in memory.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
similarityFunction double Function(List<double> a, List<double> b)
Similarity function to use when comparing vectors.
final

Methods

addDocuments({required List<Document> documents}) Future<List<String>>
Runs more documents through the embeddings and add to the vector store.
inherited
addVectors({required List<List<double>> vectors, required List<Document> documents}) Future<List<String>>
Runs more texts through the embeddings and add to the vector store.
override
asRetriever({VectorStoreRetrieverOptions defaultOptions = const VectorStoreRetrieverOptions()}) VectorStoreRetriever<VectorStore>
Returns a VectorStoreRetriever that uses this vector store.
inherited
delete({required List<String> ids}) Future<void>
Delete by vector ID.
override
maxMarginalRelevanceSearch({required String query, VectorStoreMMRSearch config = const VectorStoreMMRSearch()}) Future<List<Document>>
Returns docs selected using the maximal marginal relevance algorithm (MMR) for the given query.
inherited
maxMarginalRelevanceSearchByVector({required List<double> embedding, VectorStoreMMRSearch config = const VectorStoreMMRSearch()}) List<Document>
Returns docs selected using the maximal marginal relevance algorithm (MMR) for the given embedding vector.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
Returns docs most similar to query using specified search type.
inherited
similaritySearch({required String query, VectorStoreSimilaritySearch config = const VectorStoreSimilaritySearch()}) Future<List<Document>>
Returns docs most similar to query using similarity.
inherited
similaritySearchByVector({required List<double> embedding, VectorStoreSimilaritySearch config = const VectorStoreSimilaritySearch()}) Future<List<Document>>
Returns docs most similar to embedding vector using similarity.
inherited
similaritySearchByVectorWithScores({required List<double> embedding, VectorStoreSimilaritySearch config = const VectorStoreSimilaritySearch()}) Future<List<(Document, double)>>
Returns docs and relevance scores in the range [0, 1], 0 is dissimilar, 1 is most similar.
override
similaritySearchWithScores({required String query, VectorStoreSimilaritySearch config = const VectorStoreSimilaritySearch()}) Future<List<(Document, double)>>
Returns docs and relevance scores in the range [0, 1]. 0 is dissimilar, 1 is most similar.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

fromDocuments({required List<Document> documents, required Embeddings embeddings}) Future<MemoryVectorStore>
Creates a vector store from a list of documents.
fromText({List<String>? ids, required List<String> texts, List<Map<String, dynamic>>? metadatas, required Embeddings embeddings}) Future<MemoryVectorStore>
Creates a vector store from a list of texts.