In-memory vector store with fastembed
Project description
FastEmbed VectorStore
A high-performance, in-memory vector store with FastEmbed integration for Python applications.
Supported Embedding Models
The library supports a wide variety of embedding models:
- BGE Models: BGEBaseENV15, BGELargeENV15, BGESmallENV15 (with quantized variants)
- Nomic Models: NomicEmbedTextV1, NomicEmbedTextV15 (with quantized variants)
- GTE Models: GTEBaseENV15, GTELargeENV15 (with quantized variants)
- Multilingual Models: MultilingualE5Small, MultilingualE5Base, MultilingualE5Large
- Specialized Models: ClipVitB32, JinaEmbeddingsV2BaseCode, ModernBertEmbedLarge
- And many more...
Installation
Prerequisites
- Python 3.8 or higher
Install from PyPI
pip install fastembed-vectorstore
From Source
- Clone the repository:
git clone https://github.com/sauravniraula/fastembed_vectorstore.git
cd fastembed_vectorstore
- Install the package:
pip install -e .
Quick Start
from fastembed_vectorstore import FastembedVectorstore, FastembedEmbeddingModel
# Initialize with a model
model = FastembedEmbeddingModel.BGESmallENV15
vectorstore = FastembedVectorstore(model)
# Optional Configurations
# vectorstore = FastembedVectorstore(
# model,
# show_download_progress=False, # default: True
# cache_directory="fastembed_cache", # default: fastembed_cache
# )
# Add documents
documents = [
"The quick brown fox jumps over the lazy dog",
"A quick brown dog jumps over the lazy fox",
"The lazy fox sleeps while the quick brown dog watches",
"Python is a programming language",
"Rust is a systems programming language"
]
# Embed and store documents
success = vectorstore.embed_documents(documents)
print(f"Documents embedded: {success}")
# Search for similar documents
query = "What is Python?"
results = vectorstore.search(query, n=3)
for doc, similarity in results:
print(f"Document: {doc}")
print(f"Similarity: {similarity:.4f}")
print("---")
# Save the vector store
vectorstore.save("my_vectorstore.json")
# Load the vector store later
loaded_vectorstore = FastembedVectorstore.load(model, "my_vectorstore.json")
# Optional Configurations
# loaded_vectorstore = FastembedVectorstore.load(
# model,
# "my_vectorstore.json",
# show_download_progress=False, # default: True
# cache_directory="fastembed_cache", # default: fastembed_cache
# )
API Reference
FastembedEmbeddingModel
Enum containing all supported embedding models. Choose based on your use case:
- Small models: Faster, lower memory usage (e.g.,
BGESmallENV15) - Base models: Balanced performance (e.g.,
BGEBaseENV15) - Large models: Higher quality embeddings (e.g.,
BGELargeENV15) - Quantized models: Reduced memory usage (e.g.,
BGESmallENV15Q)
FastembedVectorstore
Constructor
vectorstore = FastembedVectorstore(
model: FastembedEmbeddingModel,
show_download_progress: bool | None = ...,
cache_directory: str | os.PathLike[str] | None = ...,
)
Args:
model: Embedding model to use.show_download_progress: Whether to show model download progress. Defaults to True.cache_directory: Directory to cache/download model files. Defaults to./fastembed.
Methods
embed_documents(documents: List[str]) -> bool
Embeds a list of documents and stores them in the vector store.
search(query: str, n: int) -> List[Tuple[str, float]]
Searches for the most similar documents to the query. Returns a list of tuples containing (document, similarity_score).
save(path: str) -> bool
Saves the vector store to a JSON file.
load(model: FastembedEmbeddingModel, path: str) -> FastembedVectorstore
Loads a vector store from a JSON file.
Performance Considerations
- Memory Usage: All embeddings are stored in memory, so consider the size of your document collection
- Model Selection: Smaller models are faster but may have lower quality embeddings
- Batch Processing: The
embed_documentsmethod processes documents in batches for efficiency
Use Cases
- Semantic Search: Find documents similar to a query
- Document Clustering: Group similar documents together
- Recommendation Systems: Find similar items or content
- Question Answering: Retrieve relevant context for Q&A systems
- Content Discovery: Help users find related content
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Author
- Saurav Niraula - sauravniraula
- Email: developmentsaurav@gmail.com
Acknowledgments
- Built with FastEmbed for efficient text embeddings
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fastembed_vectorstore-0.5.3.tar.gz.
File metadata
- Download URL: fastembed_vectorstore-0.5.3.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c00aa9886840d77f11e637185c34edc7ec3e1aa3e319dd4c3268141d21aec8e
|
|
| MD5 |
800bcddd8e7d000aaded63cc73f08744
|
|
| BLAKE2b-256 |
18d902b99231016586081f6f1200ebf592a64ea860b1c37403a50ad0b6c7db21
|
File details
Details for the file fastembed_vectorstore-0.5.3-py3-none-any.whl.
File metadata
- Download URL: fastembed_vectorstore-0.5.3-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4e3fb506fcc02c46373ad5dcac829f52a988f422f3354281622c6128bb3cc89
|
|
| MD5 |
fda449dd9f094108cf7376a3794840c8
|
|
| BLAKE2b-256 |
3b332e28641dd141bd1002d71b8f604076f0201a675ec50ae969422ef1556230
|