Integration: FastEmbed
Use the FastEmbed embedding models
Table of Contents
Overview
FastEmbed is a lightweight, fast, Python library built for embedding generation.
- Light & Fast
- Quantized model weights
- ONNX Runtime for inference via Optimum
- Accuracy/Recall
- Better than OpenAI Ada-002
- Default is Flag Embedding, which is top of the MTEB leaderboard
- List of supported models - including multilingual models
Installation
pip install fastembed-haystack
Usage
Components
You can use Fastembed models with two components: FastembedTextEmbedder and FastembedDocumentEmbedder.
To create semantic embeddings for documents, use FastembedDocumentEmbedder in your indexing pipeline. For generating embeddings for queries, use FastembedTextEmbedder.
Example
Below is the example indexing pipeline with InMemoryDocumentStore, InMemoryEmbeddingRetriever, FastembedTextEmbedder and FastembedDocumentEmbedder:
from haystack import Document, Pipeline
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.embedders.fastembed import FastembedDocumentEmbedder, FastembedTextEmbedder
document_store = InMemoryDocumentStore(embedding_similarity_function="cosine")
documents = [
Document(content="My name is Wolfgang and I live in Berlin"),
Document(content="I saw a black horse running"),
Document(content="Germany has many big cities"),
Document(content="fastembed is supported by and maintained by Qdrant."),
]
document_embedder = FastembedDocumentEmbedder()
document_embedder.warm_up()
documents_with_embeddings = document_embedder.run(documents)["documents"]
document_store.write_documents(documents_with_embeddings)
query_pipeline = Pipeline()
query_pipeline.add_component("text_embedder", FastembedTextEmbedder())
query_pipeline.add_component("retriever", InMemoryEmbeddingRetriever(document_store=document_store))
query_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")
query = "Who supports fastembed?"
result = query_pipeline.run({"text_embedder": {"text": query}})
License
fastembed-haystack is distributed under the terms of the
Apache-2.0 license.