From bc09ef57ef8bf605ed1490d985376646051ba21a Mon Sep 17 00:00:00 2001 From: ZiyiXia Date: Thu, 5 Dec 2024 07:42:30 +0000 Subject: [PATCH] update docs --- Tutorials/1_Embedding/1.2.1_BGE_Series.ipynb | 33 ++--------- docs/source/FAQ/index.rst | 43 +++++++++++++- docs/source/Introduction/index.rst | 5 +- docs/source/Introduction/quick_start.rst | 35 ++++++++++++ ...quick_start.ipynb => retrieval_demo.ipynb} | 2 +- docs/source/_static/img/BGE_WeChat_Group.png | Bin 0 -> 62331 bytes docs/source/bge/bge_icl.rst | 53 +++++++++++++++++- docs/source/bge/bge_m3.rst | 8 ++- docs/source/bge/bge_reranker.rst | 2 +- docs/source/bge/bge_v1_v1.5.rst | 37 +++++++++--- docs/source/bge/index.rst | 6 -- docs/source/community/index.rst | 12 +++- docs/source/conf.py | 6 +- docs/source/tutorial/index.rst | 4 ++ 14 files changed, 193 insertions(+), 53 deletions(-) create mode 100644 docs/source/Introduction/quick_start.rst rename docs/source/Introduction/{quick_start.ipynb => retrieval_demo.ipynb} (99%) create mode 100644 docs/source/_static/img/BGE_WeChat_Group.png diff --git a/Tutorials/1_Embedding/1.2.1_BGE_Series.ipynb b/Tutorials/1_Embedding/1.2.1_BGE_Series.ipynb index 73477ca8..f56c4f50 100644 --- a/Tutorials/1_Embedding/1.2.1_BGE_Series.ipynb +++ b/Tutorials/1_Embedding/1.2.1_BGE_Series.ipynb @@ -55,7 +55,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "id": "a2376217", "metadata": {}, "outputs": [], @@ -123,35 +123,16 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "89e07751", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/root/anaconda3/envs/dev/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n", - "pre tokenize: 100%|██████████| 1/1 [00:00<00:00, 93.88it/s]\n", - "/root/anaconda3/envs/dev/lib/python3.12/site-packages/_distutils_hack/__init__.py:54: UserWarning: Reliance on distutils from stdlib is deprecated. Users must rely on setuptools to provide the distutils module. Avoid importing distutils or import setuptools first, and avoid setting SETUPTOOLS_USE_DISTUTILS=stdlib. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml\n", - " warnings.warn(\n", - "pre tokenize: 100%|██████████| 1/1 [00:00<00:00, 2418.86it/s]" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "[[0.8486 0.7944]\n", - " [0.7607 0.8545]]\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" + "[[0.84864 0.7946737 ]\n", + " [0.760097 0.85449743]]\n" ] } ], @@ -162,7 +143,7 @@ "model = FlagModel(\n", " 'BAAI/bge-base-en',\n", " query_instruction_for_retrieval=\"Represent this sentence for searching relevant passages:\",\n", - " query_instruction_format='{}{}'\n", + " query_instruction_format='{}{}',\n", ")\n", "\n", "queries = [\"query 1\", \"query 2\"]\n", @@ -562,7 +543,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "ffb586c6", "metadata": {}, "outputs": [ @@ -588,8 +569,6 @@ "from FlagEmbedding import FlagICLModel\n", "import os\n", "\n", - "# os.environ['HF_ENDPOINT']='https://hf-mirror.com'\n", - "\n", "model = FlagICLModel('BAAI/bge-en-icl', \n", " examples_for_task=examples, # set `examples_for_task=None` to use model without examples\n", " # examples_instruction_format=\"{}\\n{}\\n{}\" # specify the format to use examples_for_task\n", diff --git a/docs/source/FAQ/index.rst b/docs/source/FAQ/index.rst index 4515e7cf..7c81a820 100644 --- a/docs/source/FAQ/index.rst +++ b/docs/source/FAQ/index.rst @@ -1,2 +1,43 @@ FAQ -=== \ No newline at end of file +=== + +Below are some commonly asked questions. + +.. tip:: + + For more questions, search issues on GitHub or join our community! + + +.. dropdown:: When does the query instruction need to be used? + + For a retrieval task that uses short queries to find long related documents, it is recommended to add instructions for these short queries. + The best method to decide whether to add instructions for queries is choosing the setting that achieves better performance on your task. + In all cases, the documents/passages do not need to add the instruction. + +.. dropdown:: Why it takes quite long to just encode 1 sentence? + + Note that if you have multiple CUDA GPUs, FlagEmbedding will automatically use all of them. + Then the time used to start the multi-process will cost way longer than the actual encoding. + Try to just use CPU or just single GPU for simple tasks. + +.. dropdown:: The embedding results are different for CPU and GPU? + + The encode function will use FP16 by default if GPU is available, which leads to different precision. + Set :code:`fp16=False` to get full precision. + +.. dropdown:: How many languages do the multi-lingual models support? + + The training datasets cover up to 170+ languages. + But note that due to the unbalanced distribution of languages, the performances will be different. + Please further test refer to the real application scenario. + +.. dropdown:: How does the different retrieval method works in bge-m3? + + - Dense retrieval: map the text into a single embedding, e.g., `DPR `_, `BGE-v1.5 <../bge/bge_v1_v1.5>`_ + - Sparse retrieval (lexical matching): a vector of size equal to the vocabulary, with the majority of positions set to zero, calculating a weight only for tokens present in the text. + e.g., BM25, `unicoil `_, and `splade `_ + - Multi-vector retrieval: use multiple vectors to represent a text, e.g., `ColBERT `_. + +.. dropdown:: Recommended vector database? + + Generally you can use any vector database (open-sourced, commercial). We use `Faiss `_ by default in our evaluation pipeline and tutorials. \ No newline at end of file diff --git a/docs/source/Introduction/index.rst b/docs/source/Introduction/index.rst index 72fca534..1e83aa27 100644 --- a/docs/source/Introduction/index.rst +++ b/docs/source/Introduction/index.rst @@ -7,7 +7,7 @@ BGE builds one-stop retrieval toolkit for search and RAG. We provide inference, :width: 700 :align: center - BGE embedder and reranker in an RAG pipeline. + BGE embedder and reranker in an RAG pipelin. `Source `_ Quickly get started with: @@ -15,5 +15,6 @@ Quickly get started with: :maxdepth: 1 installation + quick_start concept - quick_start \ No newline at end of file + retrieval_demo \ No newline at end of file diff --git a/docs/source/Introduction/quick_start.rst b/docs/source/Introduction/quick_start.rst new file mode 100644 index 00000000..d5a064b7 --- /dev/null +++ b/docs/source/Introduction/quick_start.rst @@ -0,0 +1,35 @@ +Quick Start +=========== + +First, load one of the BGE embedding model: + +.. code:: python + + from FlagEmbedding import FlagAutoModel + + model = FlagAutoModel.from_finetuned('BAAI/bge-base-en-v1.5', + query_instruction_for_retrieval="Represent this sentence for searching relevant passages:", + use_fp16=True) + +.. tip:: + + If there's difficulty connecting to Hugging Face, you can use the `HF mirror `_ instead. + + .. code:: bash + + export HF_ENDPOINT=https://hf-mirror.com + +Then, feed some sentences to the model and get their embeddings: + +.. code:: python + sentences_1 = ["I love NLP", "I love machine learning"] + sentences_2 = ["I love BGE", "I love text retrieval"] + embeddings_1 = model.encode(sentences_1) + embeddings_2 = model.encode(sentences_2) + +Once we get the embeddings, we can compute similarity by inner product: + +.. code:: python + + similarity = embeddings_1 @ embeddings_2.T + print(similarity) diff --git a/docs/source/Introduction/quick_start.ipynb b/docs/source/Introduction/retrieval_demo.ipynb similarity index 99% rename from docs/source/Introduction/quick_start.ipynb rename to docs/source/Introduction/retrieval_demo.ipynb index 4eed81cb..e98b846f 100644 --- a/docs/source/Introduction/quick_start.ipynb +++ b/docs/source/Introduction/retrieval_demo.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Quick Start" + "# Retrieval Demo" ] }, { diff --git a/docs/source/_static/img/BGE_WeChat_Group.png b/docs/source/_static/img/BGE_WeChat_Group.png new file mode 100644 index 0000000000000000000000000000000000000000..d3cd95e6c96ec724de890c81a464a3f98c17c34c GIT binary patch literal 62331 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 F{0|4~gX91J literal 0 HcmV?d00001 diff --git a/docs/source/bge/bge_icl.rst b/docs/source/bge/bge_icl.rst index 5c91e04f..1c6af6ab 100644 --- a/docs/source/bge/bge_icl.rst +++ b/docs/source/bge/bge_icl.rst @@ -1,2 +1,51 @@ -BGE-en-icl -========== \ No newline at end of file +BGE-EN-ICL +========== + +BGE-EN-ICL is the new SoTA embedding model in BGE series with capabilities: +- In-context learning ability: By providing few-shot examples in the query, it can significantly enhance the model's ability to handle new tasks. +- Outstanding performance: The model has achieved state-of-the-art (SOTA) performance on MTEB and AIR-Bench. + ++-------------------------------------------------------------------+-----------------+------------+--------------+----------------------------------------------------------------------------------------------------+ +| Model | Language | Parameters | Model Size | Description | ++===================================================================+=================+============+==============+====================================================================================================+ +| `BAAI/bge-en-icl `_ | English | 7.1B | 28.5 GB | In-context learning capabilities, fully leverage the model's potential based on a few shot examples| ++-------------------------------------------------------------------+-----------------+------------+--------------+----------------------------------------------------------------------------------------------------+ + + + +Usage +----- + +.. code:: python + + from FlagEmbedding import FlagICLModel + + documents = [ + "As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.", + "Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments." + ] + + examples = [ + { + 'instruct': 'Given a web search query, retrieve relevant passages that answer the query.', + 'query': 'what is a virtual interface', + 'response': "A virtual interface is a software-defined abstraction that mimics the behavior and characteristics of a physical network interface. It allows multiple logical network connections to share the same physical network interface, enabling efficient utilization of network resources. Virtual interfaces are commonly used in virtualization technologies such as virtual machines and containers to provide network connectivity without requiring dedicated hardware. They facilitate flexible network configurations and help in isolating network traffic for security and management purposes." + }, + { + 'instruct': 'Given a web search query, retrieve relevant passages that answer the query.', + 'query': 'causes of back pain in female for a week', + 'response': "Back pain in females lasting a week can stem from various factors. Common causes include muscle strain due to lifting heavy objects or improper posture, spinal issues like herniated discs or osteoporosis, menstrual cramps causing referred pain, urinary tract infections, or pelvic inflammatory disease. Pregnancy-related changes can also contribute. Stress and lack of physical activity may exacerbate symptoms. Proper diagnosis by a healthcare professional is crucial for effective treatment and management." + } + ] + + queries = ["how much protein should a female eat", "summit define"] + + model = FlagICLModel('BAAI/bge-en-icl', + examples_for_task=examples, # set `examples_for_task=None` to use model without examples + examples_instruction_format="{}\n{}\n{}") # specify the format to use examples_for_task + + embeddings_1 = model.encode_queries(queries) + embeddings_2 = model.encode_corpus(documents) + similarity = embeddings_1 @ embeddings_2.T + + print(similarity) \ No newline at end of file diff --git a/docs/source/bge/bge_m3.rst b/docs/source/bge/bge_m3.rst index 10d9ad03..9ae05bc4 100644 --- a/docs/source/bge/bge_m3.rst +++ b/docs/source/bge/bge_m3.rst @@ -114,4 +114,10 @@ Usage sentences_1 = ["What is BGE M3?", "Defination of BM25"] output = model.encode(sentences_1, return_dense=True, return_sparse=True, return_colbert_vecs=True) - dense, sparse, multiv = output['dense_vecs'], output['lexical_weights'], output['colbert_vecs'] \ No newline at end of file + dense, sparse, multiv = output['dense_vecs'], output['lexical_weights'], output['colbert_vecs'] + +Useful Links: + +`API <../API/inference/embedder/encoder_only/M3Embedder>`_ +`Tutorial <>`_ +`Example `_ \ No newline at end of file diff --git a/docs/source/bge/bge_reranker.rst b/docs/source/bge/bge_reranker.rst index 47545c37..b25a52fb 100644 --- a/docs/source/bge/bge_reranker.rst +++ b/docs/source/bge/bge_reranker.rst @@ -1,2 +1,2 @@ BGE-Reranker -============ \ No newline at end of file +============ diff --git a/docs/source/bge/bge_v1_v1.5.rst b/docs/source/bge/bge_v1_v1.5.rst index 8e5d3911..f99dd1d5 100644 --- a/docs/source/bge/bge_v1_v1.5.rst +++ b/docs/source/bge/bge_v1_v1.5.rst @@ -51,7 +51,7 @@ were released in Sep 2023. They are still the most popular embedding models that Usage ----- -To use BGE v1 or v1.5 model for inference, load model through `` +To use BGE v1 or v1.5 model for inference, load model through .. code:: python @@ -64,14 +64,35 @@ To use BGE v1 or v1.5 model for inference, load model through `` .. tip:: - For simple tasks that only encode a few sentences like above, it's faster to use single GPU comparing to multi-GPUs: + For simple tasks that only encode a few sentences like above, it's faster to use CPU or a single GPU instead of multi-GPUs - .. code:: python +To use CPU: - import os - os.environ['CUDA_VISIBLE_DEVICES'] = '0' - or +.. code:: python + + # make no GPU visible + import os + os.environ['CUDA_VISIBLE_DEVICES'] = '' + + # or claim the devices during initialize the model + model = FlagModel('BAAI/bge-base-en-v1.5', devices='cpu') + +To use a single GPU: + +.. code:: python + + # select one sigle card to be visible + import os + os.environ['CUDA_VISIBLE_DEVICES'] = '0' + + # or claim the devices during initialize the model + model = FlagModel('BAAI/bge-base-en-v1.5', devices=0) + +| +Useful Links: + +`API <../API/inference/embedder/encoder_only/BaseEmbedder>`_ - .. code:: python +`Tutorial `_ - model = FlagModel('BAAI/bge-base-en-v1.5', devices=0) \ No newline at end of file +`Example `_ \ No newline at end of file diff --git a/docs/source/bge/index.rst b/docs/source/bge/index.rst index 9c400806..76791b3f 100644 --- a/docs/source/bge/index.rst +++ b/docs/source/bge/index.rst @@ -11,9 +11,3 @@ BGE bge_m3 bge_icl -.. toctree:: - :maxdepth: 1 - :caption: Embedder - - bge_reranker - diff --git a/docs/source/community/index.rst b/docs/source/community/index.rst index c83c197b..a6760d49 100644 --- a/docs/source/community/index.rst +++ b/docs/source/community/index.rst @@ -1,2 +1,12 @@ Community -========= \ No newline at end of file +========= + +Visit our `GitHub repo `_ and +`Hugging Face collection `_ for more materials! + +We are also holding WeChat groups for for BGE. Scan the QR code to join the group chat! +To get the first hand message about our updates and new release, or having any questions or ideas, join us now! + +.. figure:: ../_static/img/BGE_WeChat_Group.png + :width: 400 + :align: center \ No newline at end of file diff --git a/docs/source/conf.py b/docs/source/conf.py index 48b5d092..0e69dc85 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -36,8 +36,8 @@ # html_theme = 'furo' html_theme = "pydata_sphinx_theme" -html_logo = "_static/img/BAAI_logo.png" -html_title = "FlagEmbedding" +# html_logo = "_static/img/BAAI_logo.png" +html_title = "BGE" html_static_path = ['_static'] html_css_files = ["css/custom.css"] html_theme_options = { @@ -80,7 +80,7 @@ "icon": "fa-solid fa-cube", } ], - "header_links_before_dropdown": 7, + "header_links_before_dropdown": 5, } html_context = { diff --git a/docs/source/tutorial/index.rst b/docs/source/tutorial/index.rst index c7b566fc..96ebb4ec 100644 --- a/docs/source/tutorial/index.rst +++ b/docs/source/tutorial/index.rst @@ -1,6 +1,10 @@ Tutorials ========= +In this section, we provide hands on introduction to different topics that highly related to embedding models and retrieval. + +To run the tutorials, clone the GitHub repo and check the `Tutorials `_ folder. + .. toctree:: :hidden: :maxdepth: 1