diff --git a/docs/examples/Retrieval_with_FastEmbed.ipynb b/docs/examples/Retrieval_with_FastEmbed.ipynb index 33ba9e97..4d3ed1c3 100644 --- a/docs/examples/Retrieval_with_FastEmbed.ipynb +++ b/docs/examples/Retrieval_with_FastEmbed.ipynb @@ -39,11 +39,19 @@ "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[32m2024-02-07 22:20:57.013\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mfastembed.embedding\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m7\u001b[0m - \u001b[33m\u001b[1mDefaultEmbedding, FlagEmbedding, JinaEmbedding are deprecated. Use TextEmbedding instead.\u001b[0m\n" + ] + } + ], "source": [ "from typing import List\n", "import numpy as np\n", - "from fastembed.embedding import FlagEmbedding as Embedding" + "from fastembed import TextEmbedding" ] }, { @@ -84,7 +92,7 @@ " \"His life has been depicted in various films, TV shows, and books\",\n", "]\n", "# Initialize the DefaultEmbedding class with the desired parameters\n", - "embedding_model = Embedding(model_name=\"BAAI/bge-small-en\", max_length=512)\n", + "embedding_model = TextEmbedding(model_name=\"BAAI/bge-small-en\", max_length=512)\n", "\n", "# We'll use the passage_embed method to get the embeddings for the documents\n", "embeddings: List[np.ndarray] = list(\n", @@ -124,65 +132,27 @@ " print(f\"Rank {i+1}: {documents[sorted_scores[i]]}\")" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Running and Comparing Queries\n", - "Finally, we run our sample query using the `print_top_k` function.\n", - "\n", - "The differences between using query embeddings and plain embeddings can be observed in the retrieved ranks:\n", - "\n", - "Using query embeddings (from `query_embed` method):" - ] - }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rank 1: Maharana Pratap was a Rajput warrior king from Mewar\n", - "Rank 2: Maharana Pratap is considered a symbol of Rajput resistance against foreign rule\n", - "Rank 3: His legacy is celebrated in Rajasthan through festivals and monuments\n", - "Rank 4: He had 11 wives and 17 sons, including Amar Singh I who succeeded him as ruler of Mewar\n", - "Rank 5: He fought against the Mughal Empire led by Akbar\n" - ] - } - ], - "source": [ - "print_top_k(query_embedding, embeddings, documents)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using plain embeddings (from `embed` method):" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Rank 1: Maharana Pratap was a Rajput warrior king from Mewar\n", - "Rank 2: Maharana Pratap is considered a symbol of Rajput resistance against foreign rule\n", - "Rank 3: His legacy is celebrated in Rajasthan through festivals and monuments\n", - "Rank 4: He had 11 wives and 17 sons, including Amar Singh I who succeeded him as ruler of Mewar\n", - "Rank 5: He fought against the Mughal Empire led by Akbar\n" - ] + "data": { + "text/plain": [ + "(array([-0.04393955, 0.04452892, -0.00760788, -0.03399807, 0.01951348],\n", + " dtype=float32),\n", + " array([-0.06002192, 0.04322132, -0.00545516, -0.04419701, -0.00542277],\n", + " dtype=float32))" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "print_top_k(plain_query_embedding, embeddings, documents)" + "query_embedding[:5], plain_query_embedding[:5]" ] }, { diff --git a/docs/examples/Supported_Models.ipynb b/docs/examples/Supported_Models.ipynb index 44f51db3..47cd9ab3 100644 --- a/docs/examples/Supported_Models.ipynb +++ b/docs/examples/Supported_Models.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -40,6 +40,7 @@ " dim\n", " description\n", " size_in_GB\n", + " sources\n", " \n", " \n", " \n", @@ -49,6 +50,7 @@ " 768\n", " Base English model\n", " 0.50\n", + " {'url': 'https://storage.googleapis.com/qdrant-fastembed/fast-bge-base-en.tar.gz'}\n", " \n", " \n", " 1\n", @@ -56,136 +58,161 @@ " 768\n", " Base English model, v1.5\n", " 0.44\n", + " {'url': 'https://storage.googleapis.com/qdrant-fastembed/fast-bge-base-en-v1.5.tar.gz', 'hf': 'qdrant/bge-base-en-v1.5-onnx-q'}\n", " \n", " \n", " 2\n", - " BAAI/bge-large-en-v1.5\n", + " BAAI/bge-large-en-v1.5-quantized\n", " 1024\n", " Large English model, v1.5\n", " 1.34\n", + " {'hf': 'qdrant/bge-large-en-v1.5-onnx-q'}\n", " \n", " \n", " 3\n", + " BAAI/bge-large-en-v1.5\n", + " 1024\n", + " Large English model, v1.5\n", + " 1.34\n", + " {'hf': 'qdrant/bge-large-en-v1.5-onnx'}\n", + " \n", + " \n", + " 4\n", " BAAI/bge-small-en\n", " 384\n", " Fast English model\n", " 0.20\n", + " {'url': 'https://storage.googleapis.com/qdrant-fastembed/BAAI-bge-small-en.tar.gz'}\n", " \n", " \n", - " 4\n", + " 5\n", " BAAI/bge-small-en-v1.5\n", " 384\n", " Fast and Default English model\n", " 0.13\n", + " {'url': 'https://storage.googleapis.com/qdrant-fastembed/fast-bge-small-en-v1.5.tar.gz', 'hf': 'qdrant/bge-small-en-v1.5-onnx-q'}\n", " \n", " \n", - " 5\n", + " 6\n", " BAAI/bge-small-zh-v1.5\n", " 512\n", " Fast and recommended Chinese model\n", " 0.10\n", + " {'url': 'https://storage.googleapis.com/qdrant-fastembed/fast-bge-small-zh-v1.5.tar.gz'}\n", " \n", " \n", - " 6\n", + " 7\n", + " sentence-transformers/all-MiniLM-L6-v2\n", + " 384\n", + " Sentence Transformer model, MiniLM-L6-v2\n", + " 0.09\n", + " {'url': 'https://storage.googleapis.com/qdrant-fastembed/sentence-transformers-all-MiniLM-L6-v2.tar.gz', 'hf': 'qdrant/all-MiniLM-L6-v2-onnx'}\n", + " \n", + " \n", + " 8\n", " intfloat/multilingual-e5-large\n", " 1024\n", " Multilingual model, e5-large. Recommend using this model for non-English languages\n", " 2.24\n", + " {'url': 'https://storage.googleapis.com/qdrant-fastembed/fast-multilingual-e5-large.tar.gz', 'hf': 'qdrant/multilingual-e5-large-onnx'}\n", " \n", " \n", - " 7\n", + " 9\n", + " sentence-transformers/paraphrase-multilingual-mpnet-base-v2\n", + " 768\n", + " Sentence-transformers model for tasks like clustering or semantic search\n", + " 1.11\n", + " {'hf': 'xenova/paraphrase-multilingual-mpnet-base-v2'}\n", + " \n", + " \n", + " 10\n", " jinaai/jina-embeddings-v2-base-en\n", " 768\n", " English embedding model supporting 8192 sequence length\n", " 0.55\n", + " {'hf': 'xenova/jina-embeddings-v2-base-en'}\n", " \n", " \n", - " 8\n", + " 11\n", " jinaai/jina-embeddings-v2-small-en\n", " 512\n", " English embedding model supporting 8192 sequence length\n", " 0.13\n", - " \n", - " \n", - " 9\n", - " sentence-transformers/all-MiniLM-L6-v2\n", - " 384\n", - " Sentence Transformer model, MiniLM-L6-v2\n", - " 0.09\n", - " \n", - " \n", - " 10\n", - " xenova/multilingual-e5-large\n", - " 1024\n", - " Multilingual model. Recommended for non-English languages\n", - " 2.24\n", - " \n", - " \n", - " 11\n", - " xenova/paraphrase-multilingual-mpnet-base-v2\n", - " 768\n", - " Sentence-transformers model for tasks like clustering or semantic search\n", - " 1.11\n", + " {'hf': 'xenova/jina-embeddings-v2-small-en'}\n", " \n", " \n", "\n", "" ], "text/plain": [ - " model dim \\\n", - "0 BAAI/bge-base-en 768 \n", - "1 BAAI/bge-base-en-v1.5 768 \n", - "2 BAAI/bge-large-en-v1.5 1024 \n", - "3 BAAI/bge-small-en 384 \n", - "4 BAAI/bge-small-en-v1.5 384 \n", - "5 BAAI/bge-small-zh-v1.5 512 \n", - "6 intfloat/multilingual-e5-large 1024 \n", - "7 jinaai/jina-embeddings-v2-base-en 768 \n", - "8 jinaai/jina-embeddings-v2-small-en 512 \n", - "9 sentence-transformers/all-MiniLM-L6-v2 384 \n", - "10 xenova/multilingual-e5-large 1024 \n", - "11 xenova/paraphrase-multilingual-mpnet-base-v2 768 \n", + " model dim \\\n", + "0 BAAI/bge-base-en 768 \n", + "1 BAAI/bge-base-en-v1.5 768 \n", + "2 BAAI/bge-large-en-v1.5-quantized 1024 \n", + "3 BAAI/bge-large-en-v1.5 1024 \n", + "4 BAAI/bge-small-en 384 \n", + "5 BAAI/bge-small-en-v1.5 384 \n", + "6 BAAI/bge-small-zh-v1.5 512 \n", + "7 sentence-transformers/all-MiniLM-L6-v2 384 \n", + "8 intfloat/multilingual-e5-large 1024 \n", + "9 sentence-transformers/paraphrase-multilingual-mpnet-base-v2 768 \n", + "10 jinaai/jina-embeddings-v2-base-en 768 \n", + "11 jinaai/jina-embeddings-v2-small-en 512 \n", "\n", " description \\\n", "0 Base English model \n", "1 Base English model, v1.5 \n", "2 Large English model, v1.5 \n", - "3 Fast English model \n", - "4 Fast and Default English model \n", - "5 Fast and recommended Chinese model \n", - "6 Multilingual model, e5-large. Recommend using this model for non-English languages \n", - "7 English embedding model supporting 8192 sequence length \n", - "8 English embedding model supporting 8192 sequence length \n", - "9 Sentence Transformer model, MiniLM-L6-v2 \n", - "10 Multilingual model. Recommended for non-English languages \n", - "11 Sentence-transformers model for tasks like clustering or semantic search \n", + "3 Large English model, v1.5 \n", + "4 Fast English model \n", + "5 Fast and Default English model \n", + "6 Fast and recommended Chinese model \n", + "7 Sentence Transformer model, MiniLM-L6-v2 \n", + "8 Multilingual model, e5-large. Recommend using this model for non-English languages \n", + "9 Sentence-transformers model for tasks like clustering or semantic search \n", + "10 English embedding model supporting 8192 sequence length \n", + "11 English embedding model supporting 8192 sequence length \n", + "\n", + " size_in_GB \\\n", + "0 0.50 \n", + "1 0.44 \n", + "2 1.34 \n", + "3 1.34 \n", + "4 0.20 \n", + "5 0.13 \n", + "6 0.10 \n", + "7 0.09 \n", + "8 2.24 \n", + "9 1.11 \n", + "10 0.55 \n", + "11 0.13 \n", "\n", - " size_in_GB \n", - "0 0.50 \n", - "1 0.44 \n", - "2 1.34 \n", - "3 0.20 \n", - "4 0.13 \n", - "5 0.10 \n", - "6 2.24 \n", - "7 0.55 \n", - "8 0.13 \n", - "9 0.09 \n", - "10 2.24 \n", - "11 1.11 " + " sources \n", + "0 {'url': 'https://storage.googleapis.com/qdrant-fastembed/fast-bge-base-en.tar.gz'} \n", + "1 {'url': 'https://storage.googleapis.com/qdrant-fastembed/fast-bge-base-en-v1.5.tar.gz', 'hf': 'qdrant/bge-base-en-v1.5-onnx-q'} \n", + "2 {'hf': 'qdrant/bge-large-en-v1.5-onnx-q'} \n", + "3 {'hf': 'qdrant/bge-large-en-v1.5-onnx'} \n", + "4 {'url': 'https://storage.googleapis.com/qdrant-fastembed/BAAI-bge-small-en.tar.gz'} \n", + "5 {'url': 'https://storage.googleapis.com/qdrant-fastembed/fast-bge-small-en-v1.5.tar.gz', 'hf': 'qdrant/bge-small-en-v1.5-onnx-q'} \n", + "6 {'url': 'https://storage.googleapis.com/qdrant-fastembed/fast-bge-small-zh-v1.5.tar.gz'} \n", + "7 {'url': 'https://storage.googleapis.com/qdrant-fastembed/sentence-transformers-all-MiniLM-L6-v2.tar.gz', 'hf': 'qdrant/all-MiniLM-L6-v2-onnx'} \n", + "8 {'url': 'https://storage.googleapis.com/qdrant-fastembed/fast-multilingual-e5-large.tar.gz', 'hf': 'qdrant/multilingual-e5-large-onnx'} \n", + "9 {'hf': 'xenova/paraphrase-multilingual-mpnet-base-v2'} \n", + "10 {'hf': 'xenova/jina-embeddings-v2-base-en'} \n", + "11 {'hf': 'xenova/jina-embeddings-v2-small-en'} " ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from fastembed.embedding import Embedding\n", + "from fastembed import TextEmbedding\n", "import pandas as pd\n", "\n", "pd.set_option(\"display.max_colwidth\", None)\n", - "pd.DataFrame(Embedding.list_supported_models())" + "pd.DataFrame(TextEmbedding.list_supported_models())" ] } ], @@ -205,7 +232,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.7" + "version": "3.11.5" }, "orig_nbformat": 4 }, diff --git a/pyproject.toml b/pyproject.toml index 091a78c9..55e469d1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fastembed" -version = "0.2.0" +version = "0.2.1" description = "Fast, light, accurate library built for retrieval embedding generation" authors = ["NirantK "] license = "Apache License"