From 1d7078147ac7e916e2ac09c376a866695c854eba Mon Sep 17 00:00:00 2001 From: YeonwooSung Date: Wed, 20 Nov 2024 00:30:40 +0900 Subject: [PATCH] feat: Add jina-ai late-chunking sample codes --- .../late-chunking/.github/workflows/ci.yaml | 31 + LLMs/RAG/late-chunking/README.md | 77 +++ .../late-chunking/chunked_pooling/__init__.py | 56 ++ .../chunked_pooling/chunked_eval_tasks.py | 616 ++++++++++++++++++ .../late-chunking/chunked_pooling/chunking.py | 159 +++++ .../chunked_pooling/mteb_chunked_eval.py | 441 +++++++++++++ .../late-chunking/chunked_pooling/wrappers.py | 167 +++++ LLMs/RAG/late-chunking/examples.ipynb | 221 +++++++ .../explanatory_contextual_retrieval.py | 197 ++++++ .../RAG/late-chunking/img/context-problem.png | Bin 0 -> 224839 bytes LLMs/RAG/late-chunking/img/method.png | Bin 0 -> 88377 bytes LLMs/RAG/late-chunking/img/rag.png | Bin 0 -> 56072 bytes LLMs/RAG/late-chunking/pyproject.toml | 26 + LLMs/RAG/late-chunking/run_chunked_eval.py | 175 +++++ LLMs/RAG/late-chunking/tests/__init__.py | 0 LLMs/RAG/late-chunking/tests/conftest.py | 47 ++ LLMs/RAG/late-chunking/tests/test_api.py | 100 +++ .../tests/test_chunking_methods.py | 182 ++++++ LLMs/RAG/late-chunking/tests/test_v3.py | 22 + 19 files changed, 2517 insertions(+) create mode 100644 LLMs/RAG/late-chunking/.github/workflows/ci.yaml create mode 100644 LLMs/RAG/late-chunking/README.md create mode 100644 LLMs/RAG/late-chunking/chunked_pooling/__init__.py create mode 100644 LLMs/RAG/late-chunking/chunked_pooling/chunked_eval_tasks.py create mode 100644 LLMs/RAG/late-chunking/chunked_pooling/chunking.py create mode 100644 LLMs/RAG/late-chunking/chunked_pooling/mteb_chunked_eval.py create mode 100644 LLMs/RAG/late-chunking/chunked_pooling/wrappers.py create mode 100644 LLMs/RAG/late-chunking/examples.ipynb create mode 100644 LLMs/RAG/late-chunking/explanatory_contextual_retrieval.py create mode 100644 LLMs/RAG/late-chunking/img/context-problem.png create mode 100644 LLMs/RAG/late-chunking/img/method.png create mode 100644 LLMs/RAG/late-chunking/img/rag.png create mode 100644 LLMs/RAG/late-chunking/pyproject.toml create mode 100644 LLMs/RAG/late-chunking/run_chunked_eval.py create mode 100644 LLMs/RAG/late-chunking/tests/__init__.py create mode 100644 LLMs/RAG/late-chunking/tests/conftest.py create mode 100644 LLMs/RAG/late-chunking/tests/test_api.py create mode 100644 LLMs/RAG/late-chunking/tests/test_chunking_methods.py create mode 100644 LLMs/RAG/late-chunking/tests/test_v3.py diff --git a/LLMs/RAG/late-chunking/.github/workflows/ci.yaml b/LLMs/RAG/late-chunking/.github/workflows/ci.yaml new file mode 100644 index 00000000..b3dcce23 --- /dev/null +++ b/LLMs/RAG/late-chunking/.github/workflows/ci.yaml @@ -0,0 +1,31 @@ +name: Run Tests + +on: + pull_request: + types: [opened, synchronize, reopened] + push: + branches: + - main + +env: + JINA_API_TOKEN: ${{ secrets.JINA_API_TOKEN }} + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install .[dev] + + - name: Run tests + run: pytest tests diff --git a/LLMs/RAG/late-chunking/README.md b/LLMs/RAG/late-chunking/README.md new file mode 100644 index 00000000..eeabe457 --- /dev/null +++ b/LLMs/RAG/late-chunking/README.md @@ -0,0 +1,77 @@ +# Late Chunking of Short Chunks in Long-Context Embedding Models + +For many applications, encoding a whole text document into a single embedding representation is not useful. Many applications require retrieving smaller parts of the text and dense vector-based information retrieval systems often perform better with smaller text segments because of the limited information capacity of embedding vectors. + +![img.png](img/rag.png) + + +RAG (Retrieval Augmented Generations) is one of the best known applications to require splitting document collections into smaller text chunks. These chunks are typically stored in a vector database with vector representations created by a text embedding model. +At runtime, the same embedding model encodes a query text into a vector representation, which is used to identify relevant stored text chunks. These are them passed to a large language model (LLM) which synthesizes a response to the query based on the retrieved texts. + +## Context Problem + + +This simple RAG approach is not without challenges. Long distance contextual dependencies, i.e. when the relevant information is spread over multiple chunks and taking text segments out of context makes them useless, are particularly poorly handled by this approach. +![img.png](img/context-problem.png) +In the image above one can see an Wikipedia article that is split into chunks of sentences. +One can see that phrases like "its" and "the city" referencing "Berlin" which is mentioned only in the first sentence, e.g., it is harder for the embedding model to link it to the respective entity to produce a high-quality embedding representation. + + +For example, if we split a Wikipedia article into sentence-length segments, as in the example above, a RAG system might not be able to answer a query like "What is the population of Berlin?" The city name and the population never appear together in a single segment, and lacking any larger document context. +An LLM to which one of the segments is presented cannot resolve the anaphoric references like "it" or "the city". + +## Context-Sensitive Chunking + +To overcome this problem, we take advantage of the long input sequences that recent embedding models like [`jina-embeddings-v2-base-en`](https://huggingface.co/jinaai/jina-embeddings-v2-base-en) can process. +These models support much longer input texts, for example, 8192 tokens for `jina-embeddings-v2-base-en` or roughly ten standard pages of text. Text segments of this size are much less likely to have contextual dependencies that can only be resolved with a larger context. +However, we still need vector representations of much smaller chunks of text, in part because of the limited input sizes of LLMs but primarily because of the limited information capacity of short embedding vectors. + +![img.png](img/method.png) + + +The simple encoding approach (as seen on the left side of the image above) chunks texts before processing them, using sentences, paragraphs, and maximum length limits to split text _a priori_, and then applying an embedding model to the resulting chunks. +Late Chunking, instead, first applies the transformer part from the embedding model to the entire text, or the largest part of it possible. This generates a sequence of vector representations for each token that encompass textual information from the entire text. +To generate a single embedding for a text, many embedding models apply _mean pooling_ to these token representations to output a single vector. Late Chunking instead applies mean pooling to smaller segments of this sequence of token vectors, producing embeddings for each chunk that take into account the entire text. + +## The Effect of Context-Sensitive Chunking + +This has immediately measurable concrete effects on retrieval. As an example, in case of "the city" and "Berlin" in a Wikipedia article, the vectors representing "the city" contain information connecting it to the previous mention of "Berlin", making it a much better match for queries involving that city name. + +You can see that in numerical results below, which compares the embedding of the string "Berlin" to various sentences from the article about Berlin. The column "Traditional Similarity" is the similarity values using _a priori_ chunking, and "Late Chunking Similarity" is with context-sensitive chunking. + +| Text | Similarity Traditional | Similarity Late Chunking | +|---------------------------------------------------------------------------------------------------------------------------------------|------------------------|-------------------------------| +| Berlin is the capital and largest city of Germany, both by area and by population." | 0.84862185 | 0.849546 | +| Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits. | 0.7084338 | 0.82489026 | +| The city is also one of the states of Germany, and is the third smallest state in the country in terms of area. | 0.7534553 | 0.84980094 | + +As you can see the similarity scores for the first chunk that contains "Berlin" are very close to each other. +For the other two chunks they siginificantly differ, as the late chunking dramatically improves matching on sentences that do not explicitly use the word "Berlin" but have anaphoric references to it. + +## Evaluation on Retrieval Tasks + + +To verify the effectiveness of this approach beyond a few toy examples, we tested it with some of the retrieval benchmarks from [BeIR](https://github.com/beir-cellar/beir). +Those retrieval tasks consist of a query set, a corpus of text documents, and a QRels file that stores information about the IDs of documents that are relevant for each query. +To identify the relevant documents of a query, one can chunk the documents, encode them into an embedding index, and determine for each query embedding the most similar chunks (kNN). +As each chunk corresponds to a document, one can convert the kNN ranking of chunks into a kNN ranking of documents (for documents occurring multiple times in the ranking, only the first occurrence is retained). +After that, one can compare the resulting ranking with the ranking corresponding to the ground-truth QRels file and calculate retrieval metrics like nDCG@10. +We run this evaluation for various BeIR datasets with traditional chunking and our novel late chunking method. +To split texts into chunks, we choose a straightforward method, which chunks the tests into strings of 256 tokens. +Both the traditional and late chunking tests used the [jina-embeddings-v2-small-en](https://huggingface.co/jinaai/jina-embeddings-v2-small-en) model. + +| Dataset | AVG Document Length (characters) | Traditional Chunking (nDCG@10) | Late Chunking (nDCG@10) | No Chunking (nDCG@10) | +|-----------|----------------------------------|--------------------------------|--------------------------------------|-----------------------| +| SciFact | 1498.4 | 64.20% | **66.10%** | 63.89% | +| TRECCOVID | 1116.7 | 63.36% | 64.70% | **65.18%** | +| FiQA2018 | 767.2 | 33.25% | **33.84%** | 33.43% | +| NFCorpus | 1589.8 | 23.46% | 29.98% | **30.40%** | +| Quora | 62.2 | 87.19% | 87.19% | 87.19% | + +In all cases, late chunking improved the score. In some cases, it also outperforms encoding the whole document into a single embedding, while for other datasets, no chunking performs best. However, this only makes sense if one does not need to rank chunks. One can also see that the average length of the documents correlates with greater improvement in the nDCG scores through late chunking. + +To reporoduce the evaluation, you can install the dependencies with `pip install .` and run the following script for the tasks "SciFactChunked", "TRECCOVIDChunked", "FiQA2018Chunked", "NFCorpusChunked", and "QuoraChunked": + +```bash +python3 run_chunked_eval.py --task-name {TASK_NAME} +``` diff --git a/LLMs/RAG/late-chunking/chunked_pooling/__init__.py b/LLMs/RAG/late-chunking/chunked_pooling/__init__.py new file mode 100644 index 00000000..e72500d4 --- /dev/null +++ b/LLMs/RAG/late-chunking/chunked_pooling/__init__.py @@ -0,0 +1,56 @@ +def chunk_by_sentences(input_text: str, tokenizer: callable): + """ + Split the input text into sentences using the tokenizer + :param input_text: The text snippet to split into sentences + :param tokenizer: The tokenizer to use + :return: A tuple containing the list of text chunks and their corresponding token spans + """ + inputs = tokenizer(input_text, return_tensors='pt', return_offsets_mapping=True) + punctuation_mark_id = tokenizer.convert_tokens_to_ids('.') + sep_id = tokenizer.convert_tokens_to_ids('[SEP]') + token_offsets = inputs['offset_mapping'][0] + token_ids = inputs['input_ids'][0] + chunk_positions = [ + (i, int(start + 1)) + for i, (token_id, (start, end)) in enumerate(zip(token_ids, token_offsets)) + if token_id == punctuation_mark_id + and ( + token_offsets[i + 1][0] - token_offsets[i][1] > 0 + or token_ids[i + 1] == sep_id + ) + ] + chunks = [ + input_text[x[1] : y[1]] + for x, y in zip([(1, 0)] + chunk_positions[:-1], chunk_positions) + ] + span_annotations = [ + (x[0], y[0]) for (x, y) in zip([(1, 0)] + chunk_positions[:-1], chunk_positions) + ] + return chunks, span_annotations + + +def chunked_pooling( + model_output: 'BatchEncoding', span_annotation: list, max_length=None +): + token_embeddings = model_output[0] + outputs = [] + for embeddings, annotations in zip(token_embeddings, span_annotation): + if ( + max_length is not None + ): # remove annotations which go bejond the max-length of the model + annotations = [ + (start, min(end, max_length - 1)) + for (start, end) in annotations + if start < (max_length - 1) + ] + pooled_embeddings = [ + embeddings[start:end].sum(dim=0) / (end - start) + for start, end in annotations + if (end - start) >= 1 + ] + pooled_embeddings = [ + embedding.float().detach().cpu().numpy() for embedding in pooled_embeddings + ] + outputs.append(pooled_embeddings) + + return outputs diff --git a/LLMs/RAG/late-chunking/chunked_pooling/chunked_eval_tasks.py b/LLMs/RAG/late-chunking/chunked_pooling/chunked_eval_tasks.py new file mode 100644 index 00000000..8cd18fb4 --- /dev/null +++ b/LLMs/RAG/late-chunking/chunked_pooling/chunked_eval_tasks.py @@ -0,0 +1,616 @@ +import datasets +from mteb.abstasks.TaskMetadata import TaskMetadata + +from chunked_pooling.mteb_chunked_eval import AbsTaskChunkedRetrieval + + +class SciFactChunked(AbsTaskChunkedRetrieval): + metadata = TaskMetadata( + name='SciFactChunked', + dataset={ + 'path': 'mteb/scifact', + 'revision': '0228b52cf27578f30900b9e5271d331663a030d7', + 'name': 'SciFact', + }, + description=( + 'SciFact verifies scientific claims using evidence from the ' + 'research literature containing scientific paper abstracts.' + ), + reference='https://github.com/allenai/scifact', + type='Retrieval', + category='s2p', + eval_splits=['test'], + eval_langs=['eng-Latn'], + main_score='ndcg_at_10', + date=None, + form=None, + domains=None, + task_subtypes=None, + license=None, + socioeconomic_status=None, + annotations_creators=None, + dialect=None, + text_creation=None, + bibtex_citation=None, + n_samples=None, + avg_character_length=None, + ) + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + +class NarrativeQAChunked(AbsTaskChunkedRetrieval): + metadata = TaskMetadata( + name='NarrativeQAChunked', + dataset={ + 'path': 'narrativeqa', + 'revision': '2e643e7363944af1c33a652d1c87320d0871c4e4', + 'name': 'NarrativeQARetrieval', + }, + reference='https://metatext.io/datasets/narrativeqa', + description=( + 'NarrativeQA is a dataset for the task of question answering ' + 'on long narratives. It consists of realistic QA instances ' + 'collected from literature (fiction and non-fiction) ' + 'and movie scripts. ' + ), + type='Retrieval', + category='s2p', + eval_splits=['test'], + eval_langs=['eng-Latn'], + main_score='ndcg_at_10', + date=None, + form=None, + domains=None, + task_subtypes=None, + license=None, + socioeconomic_status=None, + annotations_creators=None, + dialect=None, + text_creation=None, + bibtex_citation=None, + n_samples=None, + avg_character_length=None, + ) + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + +class NFCorpusChunked(AbsTaskChunkedRetrieval): + metadata = TaskMetadata( + name="NFCorpusChunked", + dataset={ + "path": "mteb/nfcorpus", + "revision": "ec0fa4fe99da2ff19ca1214b7966684033a58814", + 'name': 'NFCorpus', + }, + description="NFCorpus: A Full-Text Learning to Rank Dataset for Medical Information Retrieval", + reference="https://www.cl.uni-heidelberg.de/statnlpgroup/nfcorpus/", + type="Retrieval", + category="s2p", + eval_splits=["test"], + eval_langs=["eng-Latn"], + main_score="ndcg_at_10", + date=None, + form=None, + domains=None, + task_subtypes=None, + license=None, + socioeconomic_status=None, + annotations_creators=None, + dialect=None, + text_creation=None, + bibtex_citation=None, + n_samples=None, + avg_character_length=None, + ) + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + +class QuoraChunked(AbsTaskChunkedRetrieval): + metadata = TaskMetadata( + name="QuoraChunked", + dataset={ + "path": "mteb/quora", + "revision": "e4e08e0b7dbe3c8700f0daef558ff32256715259", + "name": "QuoraRetrieval", + }, + description=( + "QuoraRetrieval is based on questions that are marked as duplicates on the Quora platform. Given a" + " question, find other (duplicate) questions." + ), + reference="https://quoradata.quora.com/First-Quora-Dataset-Release-Question-Pairs", + type="Retrieval", + category="s2s", + eval_splits=["dev", "test"], + eval_langs=["eng-Latn"], + main_score="ndcg_at_10", + date=None, + form=None, + domains=None, + task_subtypes=None, + license=None, + socioeconomic_status=None, + annotations_creators=None, + dialect=None, + text_creation=None, + bibtex_citation=None, + n_samples=None, + avg_character_length=None, + ) + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + +class FiQA2018Chunked(AbsTaskChunkedRetrieval): + metadata = TaskMetadata( + name="FiQA2018Chunked", + description="Financial Opinion Mining and Question Answering", + reference="https://sites.google.com/view/fiqa/", + dataset={ + "path": "mteb/fiqa", + "revision": "27a168819829fe9bcd655c2df245fb19452e8e06", + 'name': 'FiQA2018', + }, + type="Retrieval", + category="s2p", + eval_splits=["train", "dev", "test"], + eval_langs=["eng-Latn"], + main_score="ndcg_at_10", + date=None, + form=None, + domains=None, + task_subtypes=None, + license=None, + socioeconomic_status=None, + annotations_creators=None, + dialect=None, + text_creation=None, + bibtex_citation=None, + n_samples=None, + avg_character_length=None, + ) + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + +class TRECCOVIDChunked(AbsTaskChunkedRetrieval): + metadata = TaskMetadata( + name='TRECCOVIDChunked', + description=( + 'TRECCOVID is an ad-hoc search challenge based on the ' + 'COVID-19 dataset containing scientific articles ' + 'related to the COVID-19 pandemic.' + ), + reference='https://ir.nist.gov/covidSubmit/index.html', + dataset={ + 'path': 'mteb/trec-covid', + 'revision': 'bb9466bac8153a0349341eb1b22e06409e78ef4e', + 'name': 'TRECCOVID', + }, + type='Retrieval', + category='s2p', + eval_splits=['test'], + eval_langs=['eng-Latn'], + main_score='ndcg_at_10', + date=None, + form=None, + domains=None, + task_subtypes=None, + license=None, + socioeconomic_status=None, + annotations_creators=None, + dialect=None, + text_creation=None, + bibtex_citation=None, + n_samples=None, + avg_character_length=None, + ) + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + +class LEMBWikimQARetrievalChunked(AbsTaskChunkedRetrieval): + """ + modified from https://github.com/embeddings-benchmark/mteb/blob/main/mteb/tasks/Retrieval/eng/LEMBWikimQARetrieval.py + """ + + _EVAL_SPLIT = "test" + + metadata = TaskMetadata( + name="LEMBWikimQARetrievalChunked", + dataset={ + "path": "dwzhu/LongEmbed", + "revision": "10039a580487dacecf79db69166e17ace3ede392", + "name": "LEMBWikimQARetrieval", + }, + reference="https://huggingface.co/datasets/dwzhu/LongEmbed", + description=("2wikimqa subset of dwzhu/LongEmbed dataset."), + type="Retrieval", + category="s2p", + modalities=["text"], + eval_splits=[_EVAL_SPLIT], + eval_langs=["eng-Latn"], + main_score="ndcg_at_10", + date=("1950-01-01", "2019-12-31"), + domains=None, + socioeconomic_status=None, + n_samples=None, + avg_character_length=None, + form=None, + text_creation=None, + task_subtypes=["Article retrieval"], + license="not specified", + annotations_creators="derived", + dialect=[], + sample_creation="found", + bibtex_citation=""" + @inproceedings{ho2020constructing, + title={Constructing A Multi-hop QA Dataset for Comprehensive Evaluation of Reasoning Steps}, + author={Ho, Xanh and Nguyen, Anh-Khoa Duong and Sugawara, Saku and Aizawa, Akiko}, + booktitle={Proceedings of the 28th International Conference on Computational Linguistics}, + pages={6609--6625}, + year={2020} + } + """, + descriptive_stats={ + "n_samples": {_EVAL_SPLIT: 500}, + "avg_character_length": { + "test": { + "average_document_length": 37445.60333333333, + "average_query_length": 67.57, + "num_documents": 300, + "num_queries": 300, + "average_relevant_docs_per_query": 1.0, + } + }, + }, + ) + + def load_data(self, **kwargs): + if self.data_loaded: + return + + dataset_dict = {**self.metadata.dataset} + dataset_dict['name'] = '2wikimqa' + + query_list = datasets.load_dataset(**dataset_dict)["queries"] + queries = {row["qid"]: row["text"] for row in query_list} + + corpus_list = datasets.load_dataset(**dataset_dict)["corpus"] + corpus = {row["doc_id"]: {"text": row["text"]} for row in corpus_list} + + qrels_list = datasets.load_dataset(**dataset_dict)["qrels"] + qrels = {row["qid"]: {row["doc_id"]: 1} for row in qrels_list} + + self.corpus = {self._EVAL_SPLIT: corpus} + self.queries = {self._EVAL_SPLIT: queries} + self.relevant_docs = {self._EVAL_SPLIT: qrels} + + self.data_loaded = True + + +class LEMBSummScreenFDRetrievalChunked(AbsTaskChunkedRetrieval): + """ + modified from https://github.com/embeddings-benchmark/mteb/blob/main/mteb/tasks/Retrieval/eng/LEMBWikimQARetrieval.py + """ + + _EVAL_SPLIT = "test" + + metadata = TaskMetadata( + name="LEMBSummScreenFDRetrievalChunked", + dataset={ + "path": "dwzhu/LongEmbed", + "revision": "10039a580487dacecf79db69166e17ace3ede392", + "name": "LEMBSummScreenFDRetrieval", + }, + reference="https://huggingface.co/datasets/dwzhu/LongEmbed", + description=("summ_screen_fd subset of dwzhu/LongEmbed dataset."), + type="Retrieval", + category="s2p", + modalities=["text"], + eval_splits=[_EVAL_SPLIT], + eval_langs=["eng-Latn"], + main_score="ndcg_at_10", + date=("1950-01-01", "2019-12-31"), + domains=None, + socioeconomic_status=None, + n_samples=None, + avg_character_length=None, + form=None, + text_creation=None, + task_subtypes=["Article retrieval"], + license="not specified", + annotations_creators="derived", + dialect=[], + sample_creation="found", + bibtex_citation=""" + @inproceedings{ho2020constructing, + title={Constructing A Multi-hop QA Dataset for Comprehensive Evaluation of Reasoning Steps}, + author={Ho, Xanh and Nguyen, Anh-Khoa Duong and Sugawara, Saku and Aizawa, Akiko}, + booktitle={Proceedings of the 28th International Conference on Computational Linguistics}, + pages={6609--6625}, + year={2020} + } + """, + descriptive_stats={ + "n_samples": {_EVAL_SPLIT: 500}, + "avg_character_length": { + "test": { + "average_document_length": 30854.327, + "average_query_length": 591.49, + "num_documents": 300, + "num_queries": 300, + "average_relevant_docs_per_query": 1.0, + } + }, + }, + ) + + def load_data(self, **kwargs): + if self.data_loaded: + return + + dataset_dict = {**self.metadata.dataset} + dataset_dict['name'] = 'summ_screen_fd' + + query_list = datasets.load_dataset(**dataset_dict)["queries"] + queries = {row["qid"]: row["text"] for row in query_list} + + corpus_list = datasets.load_dataset(**dataset_dict)["corpus"] + corpus = {row["doc_id"]: {"text": row["text"]} for row in corpus_list} + + qrels_list = datasets.load_dataset(**dataset_dict)["qrels"] + qrels = {row["qid"]: {row["doc_id"]: 1} for row in qrels_list} + + self.corpus = {self._EVAL_SPLIT: corpus} + self.queries = {self._EVAL_SPLIT: queries} + self.relevant_docs = {self._EVAL_SPLIT: qrels} + + self.data_loaded = True + + +class LEMBQMSumRetrievalChunked(AbsTaskChunkedRetrieval): + """ + modified from https://github.com/embeddings-benchmark/mteb/blob/main/mteb/tasks/Retrieval/eng/LEMBWikimQARetrieval.py + """ + + _EVAL_SPLIT = "test" + + metadata = TaskMetadata( + name="LEMBQMSumRetrievalChunked", + dataset={ + "path": "dwzhu/LongEmbed", + "revision": "10039a580487dacecf79db69166e17ace3ede392", + "name": "LEMBQMSumRetrieval", + }, + reference="https://huggingface.co/datasets/dwzhu/LongEmbed", + description=("qmsum subset of dwzhu/LongEmbed dataset."), + type="Retrieval", + category="s2p", + modalities=["text"], + eval_splits=[_EVAL_SPLIT], + eval_langs=["eng-Latn"], + main_score="ndcg_at_10", + date=("1950-01-01", "2019-12-31"), + domains=None, + socioeconomic_status=None, + n_samples=None, + avg_character_length=None, + form=None, + text_creation=None, + task_subtypes=["Article retrieval"], + license="not specified", + annotations_creators="derived", + dialect=[], + sample_creation="found", + bibtex_citation=""" + @inproceedings{ho2020constructing, + title={Constructing A Multi-hop QA Dataset for Comprehensive Evaluation of Reasoning Steps}, + author={Ho, Xanh and Nguyen, Anh-Khoa Duong and Sugawara, Saku and Aizawa, Akiko}, + booktitle={Proceedings of the 28th International Conference on Computational Linguistics}, + pages={6609--6625}, + year={2020} + } + """, + descriptive_stats={ + "n_samples": {_EVAL_SPLIT: 500}, + "avg_character_length": { + "test": { + "average_document_length": 53335.817, + "average_query_length": 433.50, + "num_documents": 300, + "num_queries": 300, + "average_relevant_docs_per_query": 1.0, + } + }, + }, + ) + + def load_data(self, **kwargs): + if self.data_loaded: + return + + dataset_dict = {**self.metadata.dataset} + dataset_dict['name'] = 'qmsum' + + query_list = datasets.load_dataset(**dataset_dict)["queries"] + queries = {row["qid"]: row["text"] for row in query_list} + + corpus_list = datasets.load_dataset(**dataset_dict)["corpus"] + corpus = {row["doc_id"]: {"text": row["text"]} for row in corpus_list} + + qrels_list = datasets.load_dataset(**dataset_dict)["qrels"] + qrels = {row["qid"]: {row["doc_id"]: 1} for row in qrels_list} + + self.corpus = {self._EVAL_SPLIT: corpus} + self.queries = {self._EVAL_SPLIT: queries} + self.relevant_docs = {self._EVAL_SPLIT: qrels} + + self.data_loaded = True + + +class LEMBNeedleRetrievalChunked(AbsTaskChunkedRetrieval): + """ + modified from https://github.com/embeddings-benchmark/mteb/blob/main/mteb/tasks/Retrieval/eng/LEMBNeedleRetrieval.py + """ + + _EVAL_SPLIT = [ + "test_256", + "test_512", + "test_1024", + "test_2048", + "test_4096", + "test_8192", + "test_16384", + "test_32768", + ] + + metadata = TaskMetadata( + name="LEMBNeedleRetrievalChunked", + dataset={ + "path": "dwzhu/LongEmbed", + "revision": "6e346642246bfb4928c560ee08640dc84d074e8c", + "name": "needle", + }, + reference="https://huggingface.co/datasets/dwzhu/LongEmbed", + description=("needle subset of dwzhu/LongEmbed dataset."), + type="Retrieval", + category="s2p", + modalities=["text"], + eval_splits=_EVAL_SPLIT, + eval_langs=["eng-Latn"], + main_score="ndcg_at_1", + date=("2000-01-01", "2023-12-31"), + domains=["Academic", "Blog", "Written"], + task_subtypes=["Article retrieval"], + license="not specified", + annotations_creators="derived", + dialect=[], + sample_creation="found", + bibtex_citation=""" + @article{zhu2024longembed, + title={LongEmbed: Extending Embedding Models for Long Context Retrieval}, + author={Zhu, Dawei and Wang, Liang and Yang, Nan and Song, Yifan and Wu, Wenhao and Wei, Furu and Li, Sujian}, + journal={arXiv preprint arXiv:2404.12096}, + year={2024} + } + """, + descriptive_stats={ + "n_samples": { + "test_256": 150, + "test_512": 150, + "test_1024": 150, + "test_2048": 150, + "test_4096": 150, + "test_8192": 150, + "test_16384": 150, + "test_32768": 150, + }, + "avg_character_length": { + "test_256": { + "average_document_length": 1013.22, + "average_query_length": 60.48, + "num_documents": 100, + "num_queries": 50, + "average_relevant_docs_per_query": 1.0, + }, + "test_512": { + "average_document_length": 2009.96, + "average_query_length": 57.3, + "num_documents": 100, + "num_queries": 50, + "average_relevant_docs_per_query": 1.0, + }, + "test_1024": { + "average_document_length": 4069.9, + "average_query_length": 58.28, + "num_documents": 100, + "num_queries": 50, + "average_relevant_docs_per_query": 1.0, + }, + "test_2048": { + "average_document_length": 8453.82, + "average_query_length": 59.92, + "num_documents": 100, + "num_queries": 50, + "average_relevant_docs_per_query": 1.0, + }, + "test_4096": { + "average_document_length": 17395.8, + "average_query_length": 55.86, + "num_documents": 100, + "num_queries": 50, + "average_relevant_docs_per_query": 1.0, + }, + "test_8192": { + "average_document_length": 35203.82, + "average_query_length": 59.6, + "num_documents": 100, + "num_queries": 50, + "average_relevant_docs_per_query": 1.0, + }, + "test_16384": { + "average_document_length": 72054.8, + "average_query_length": 59.12, + "num_documents": 100, + "num_queries": 50, + "average_relevant_docs_per_query": 1.0, + }, + "test_32768": { + "average_document_length": 141769.8, + "average_query_length": 58.34, + "num_documents": 100, + "num_queries": 50, + "average_relevant_docs_per_query": 1.0, + }, + }, + }, + ) + + def load_data(self, **kwargs): + if self.data_loaded: + return + + self.corpus = {} + self.queries = {} + self.relevant_docs = {} + + for split in self._EVAL_SPLIT: + context_length = int(split.split("_")[1]) + query_list = datasets.load_dataset(**self.metadata_dict["dataset"])[ + "queries" + ] # dict_keys(['qid', 'text']) + query_list = query_list.filter( + lambda x: x["context_length"] == context_length + ) + queries = {row["qid"]: row["text"] for row in query_list} + + corpus_list = datasets.load_dataset(**self.metadata_dict["dataset"])[ + "corpus" + ] # dict_keys(['doc_id', 'text']) + corpus_list = corpus_list.filter( + lambda x: x["context_length"] == context_length + ) + corpus = {row["doc_id"]: {"text": row["text"]} for row in corpus_list} + + qrels_list = datasets.load_dataset(**self.metadata_dict["dataset"])[ + "qrels" + ] # dict_keys(['qid', 'doc_id']) + qrels_list = qrels_list.filter( + lambda x: x["context_length"] == context_length + ) + qrels = {row["qid"]: {row["doc_id"]: 1} for row in qrels_list} + + self.corpus[split] = corpus + self.queries[split] = queries + self.relevant_docs[split] = qrels + + self.data_loaded = True diff --git a/LLMs/RAG/late-chunking/chunked_pooling/chunking.py b/LLMs/RAG/late-chunking/chunked_pooling/chunking.py new file mode 100644 index 00000000..4585aa76 --- /dev/null +++ b/LLMs/RAG/late-chunking/chunked_pooling/chunking.py @@ -0,0 +1,159 @@ +import bisect +import logging +from typing import Dict, List, Optional, Tuple, Union + +from llama_index.core.node_parser import SemanticSplitterNodeParser +from llama_index.core.schema import Document +from llama_index.embeddings.huggingface import HuggingFaceEmbedding +from transformers import AutoTokenizer + +# Set the logging level to WARNING to suppress INFO and DEBUG messages +logging.getLogger('sentence_transformers').setLevel(logging.WARNING) + +CHUNKING_STRATEGIES = ['semantic', 'fixed', 'sentences'] + + +class Chunker: + def __init__( + self, + chunking_strategy: str, + ): + if chunking_strategy not in CHUNKING_STRATEGIES: + raise ValueError("Unsupported chunking strategy: ", chunking_strategy) + self.chunking_strategy = chunking_strategy + self.embed_model = None + self.embedding_model_name = None + + def _setup_semantic_chunking(self, embedding_model_name): + if embedding_model_name: + self.embedding_model_name = embedding_model_name + + self.embed_model = HuggingFaceEmbedding( + model_name=self.embedding_model_name, + trust_remote_code=True, + embed_batch_size=1, + ) + self.splitter = SemanticSplitterNodeParser( + embed_model=self.embed_model, + show_progress=False, + ) + + def chunk_semantically( + self, + text: str, + tokenizer: 'AutoTokenizer', + embedding_model_name: Optional[str] = None, + ) -> List[Tuple[int, int]]: + if self.embed_model is None: + self._setup_semantic_chunking(embedding_model_name) + + # Get semantic nodes + nodes = [ + (node.start_char_idx, node.end_char_idx) + for node in self.splitter.get_nodes_from_documents( + [Document(text=text)], show_progress=False + ) + ] + + # Tokenize the entire text + tokens = tokenizer.encode_plus( + text, + return_offsets_mapping=True, + add_special_tokens=False, + padding=True, + truncation=True, + ) + token_offsets = tokens.offset_mapping + + chunk_spans = [] + + for char_start, char_end in nodes: + # Convert char indices to token indices + start_chunk_index = bisect.bisect_left( + [offset[0] for offset in token_offsets], char_start + ) + end_chunk_index = bisect.bisect_right( + [offset[1] for offset in token_offsets], char_end + ) + + # Add the chunk span if it's within the tokenized text + if start_chunk_index < len(token_offsets) and end_chunk_index <= len( + token_offsets + ): + chunk_spans.append((start_chunk_index, end_chunk_index)) + else: + break + + return chunk_spans + + def chunk_by_tokens( + self, + text: str, + chunk_size: int, + tokenizer: 'AutoTokenizer', + ) -> List[Tuple[int, int, int]]: + tokens = tokenizer.encode_plus( + text, return_offsets_mapping=True, add_special_tokens=False + ) + token_offsets = tokens.offset_mapping + + chunk_spans = [] + for i in range(0, len(token_offsets), chunk_size): + chunk_end = min(i + chunk_size, len(token_offsets)) + if chunk_end - i > 0: + chunk_spans.append((i, chunk_end)) + + return chunk_spans + + def chunk_by_sentences( + self, + text: str, + n_sentences: int, + tokenizer: 'AutoTokenizer', + ) -> List[Tuple[int, int, int]]: + tokens = tokenizer.encode_plus( + text, return_offsets_mapping=True, add_special_tokens=False + ) + token_offsets = tokens.offset_mapping + + chunk_spans = [] + chunk_start = 0 + count_chunks = 0 + for i in range(0, len(token_offsets)): + if tokens.tokens(0)[i] in ('.', '!', '?') and ( + (len(tokens.tokens(0)) == i + 1) + or (tokens.token_to_chars(i).end != tokens.token_to_chars(i + 1).start) + ): + count_chunks += 1 + if count_chunks == n_sentences: + chunk_spans.append((chunk_start, i + 1)) + chunk_start = i + 1 + count_chunks = 0 + if len(tokens.tokens(0)) - chunk_start > 1: + chunk_spans.append((chunk_start, len(tokens.tokens(0)))) + return chunk_spans + + def chunk( + self, + text: str, + tokenizer: 'AutoTokenizer', + chunking_strategy: str = None, + chunk_size: Optional[int] = None, + n_sentences: Optional[int] = None, + embedding_model_name: Optional[str] = None, + ): + chunking_strategy = chunking_strategy or self.chunking_strategy + if chunking_strategy == "semantic": + return self.chunk_semantically( + text, + embedding_model_name=embedding_model_name, + tokenizer=tokenizer, + ) + elif chunking_strategy == "fixed": + if chunk_size < 4: + raise ValueError("Chunk size must be >= 4.") + return self.chunk_by_tokens(text, chunk_size, tokenizer) + elif chunking_strategy == "sentences": + return self.chunk_by_sentences(text, n_sentences, tokenizer) + else: + raise ValueError("Unsupported chunking strategy") diff --git a/LLMs/RAG/late-chunking/chunked_pooling/mteb_chunked_eval.py b/LLMs/RAG/late-chunking/chunked_pooling/mteb_chunked_eval.py new file mode 100644 index 00000000..df5beb7a --- /dev/null +++ b/LLMs/RAG/late-chunking/chunked_pooling/mteb_chunked_eval.py @@ -0,0 +1,441 @@ +import logging +from typing import Any, Optional + +import numpy as np +import torch +from mteb.abstasks import AbsTask +from mteb.evaluation.evaluators import RetrievalEvaluator +from mteb.load_results.mteb_results import ScoresDict +from mteb.tasks import Retrieval +from tqdm import tqdm + +from chunked_pooling import chunked_pooling +from chunked_pooling.chunking import Chunker + +logger = logging.getLogger(__name__) + + +class AbsTaskChunkedRetrieval(AbsTask): + def __init__( + self, + chunking_strategy: str = None, + chunked_pooling_enabled: bool = False, + tokenizer: Optional[Any] = None, + prune_size: Optional[int] = None, + chunk_size: Optional[int] = None, + n_sentences: Optional[int] = None, + model_has_instructions: bool = False, + embedding_model_name: Optional[str] = None, # for semantic chunking + truncate_max_length: Optional[int] = 8192, + long_late_chunking_embed_size: Optional[int] = 0, + long_late_chunking_overlap_size: Optional[int] = 512, + **kwargs, + ): + super().__init__(**kwargs) + try: + self.retrieval_task = getattr( + Retrieval, + self.metadata_dict['dataset'].get('name', None) + or self.metadata_dict.get('name'), + )() + except: + logger.warning('Could not initialize retrieval_task') + self.chunking_strategy = chunking_strategy + self.chunker = Chunker(self.chunking_strategy) + self.chunked_pooling_enabled = chunked_pooling_enabled + self.tokenizer = tokenizer + self.prune_size = prune_size + self.model_has_instructions = model_has_instructions + self.chunking_args = { + 'chunk_size': chunk_size, + 'n_sentences': n_sentences, + 'embedding_model_name': embedding_model_name, + } + self.truncate_max_length = ( + truncate_max_length if truncate_max_length > 0 else None + ) + + self.long_late_chunking_embed_size = long_late_chunking_embed_size + self.long_late_chunking_overlap_size = long_late_chunking_overlap_size + + def load_data(self, **kwargs): + self.retrieval_task.load_data(**kwargs) + self.corpus = self.retrieval_task.corpus + self.queries = self.retrieval_task.queries + self.relevant_docs = self.retrieval_task.relevant_docs + # prune dataset + if self.prune_size: + self.queries, self.corpus, self.relevant_docs = self._prune( + self.queries, self.corpus, self.relevant_docs, self.prune_size + ) + + def calculate_metadata_metrics(self): + self.retrieval_task.calculate_metadata_metrics() + + def evaluate( + self, model, split: str = "test", encode_kwargs: dict[str, Any] = {}, **kwargs + ) -> dict[str, ScoresDict]: + scores: dict[str, ScoresDict] = {} + hf_subsets = list(self.hf_subsets) if self.is_multilingual else ["default"] + + for hf_subset in hf_subsets: + logger.info(f"Subset: {hf_subset}") + + if hf_subset == "default": + corpus, queries, relevant_docs = ( + self.corpus[split], + self.queries[split], + self.relevant_docs[split], + ) + else: + corpus, queries, relevant_docs = ( + self.corpus[hf_subset][split], + self.queries[hf_subset][split], + self.relevant_docs[hf_subset][split], + ) + + scores[hf_subset] = self._evaluate_monolingual( + model, + corpus, + queries, + relevant_docs, + hf_subset, + encode_kwargs=encode_kwargs, + **kwargs, + ) + + return scores + + def _truncate_documents(self, corpus): + for k, v in corpus.items(): + title_tokens = 0 + if 'title' in v: + tokens = self.tokenizer( + v['title'] + ' ', + return_offsets_mapping=True, + max_length=self.truncate_max_length, + ) + title_tokens = len(tokens.input_ids) + tokens = self.tokenizer( + v['text'], + return_offsets_mapping=True, + max_length=self.truncate_max_length - title_tokens, + ) + last_token_span = tokens.offset_mapping[-2] + v['text'] = v['text'][: last_token_span[1]] + return corpus + + def _embed_with_overlap(self, model, model_inputs): + len_tokens = len(model_inputs["input_ids"][0]) + + if len_tokens > self.long_late_chunking_embed_size: + indices = [] + for i in range( + 0, + len_tokens, + self.long_late_chunking_embed_size + - self.long_late_chunking_overlap_size, + ): + start = i + end = min(i + self.long_late_chunking_embed_size, len_tokens) + indices.append((start, end)) + else: + indices = [(0, len_tokens)] + + outputs = [] + for start, end in indices: + batch_inputs = {k: v[:, start:end] for k, v in model_inputs.items()} + + with torch.no_grad(): + model_output = model(**batch_inputs) + + if start > 0: + outputs.append( + model_output[0][:, self.long_late_chunking_overlap_size :] + ) + else: + outputs.append(model_output[0]) + + return torch.cat(outputs, dim=1).to(model.device) + + def _evaluate_monolingual( + self, + model, + corpus, + queries, + relevant_docs, + lang=None, + batch_size=1, + encode_kwargs=None, + **kwargs, + ): + if self.truncate_max_length: + corpus = self._truncate_documents(corpus) + # split corpus into chunks + if not self.chunked_pooling_enabled: + corpus = self._apply_chunking(corpus, self.tokenizer) + max_chunks = max([len(x) for x in corpus.values()]) + corpus = self._flatten_chunks(corpus) + k_values = self._calculate_k_values(max_chunks) + # determine the maximum number of documents to consider in a ranking + max_k = int(max(k_values) / max_chunks) + retriever = RetrievalEvaluator( + model, + k_values=k_values, + encode_kwargs=(encode_kwargs or dict()), + **kwargs, + ) + results = retriever(corpus, queries) + else: + query_ids = list(queries.keys()) + query_texts = [queries[k] for k in query_ids] + if hasattr(model, 'encode_queries'): + query_embs = model.encode_queries(query_texts) + else: + query_embs = model.encode(query_texts) + + corpus_ids = list(corpus.keys()) + corpus_texts = [ + ( + f"{corpus[k]['title']} {corpus[k]['text']}" + if 'title' in corpus[k] + else corpus[k]['text'] + ) + for k in corpus_ids + ] + + chunk_annotations = self._calculate_annotations(model, corpus_texts) + + corpus_embs = [] + with torch.no_grad(): + for inputs in tqdm( + self._batch_inputs( + list(zip(corpus_texts, chunk_annotations)), + batch_size=batch_size, + ), + total=(len(corpus_texts) // batch_size), + ): + if self.model_has_instructions: + instr = model.get_instructions()[1] + else: + instr = '' + text_inputs = [instr + x[0] for x in inputs] + annotations = [x[1] for x in inputs] + model_inputs = self.tokenizer( + text_inputs, + return_tensors='pt', + padding=True, + truncation=self.truncate_max_length is not None, + max_length=self.truncate_max_length, + ) + if model.device.type == 'cuda': + model_inputs = { + k: v.to(model.device) for k, v in model_inputs.items() + } + + if self.long_late_chunking_embed_size > 0: + model_outputs = self._embed_with_overlap(model, model_inputs) + output_embs = chunked_pooling( + [model_outputs], annotations, max_length=None + ) + else: # truncation + model_outputs = model(**model_inputs) + output_embs = chunked_pooling( + model_outputs, + annotations, + max_length=self.truncate_max_length, + ) + corpus_embs.extend(output_embs) + + max_chunks = max([len(x) for x in corpus_embs]) + k_values = self._calculate_k_values(max_chunks) + # determine the maximum number of documents to consider in a ranking + max_k = int(max(k_values) / max_chunks) + ( + chunk_id_list, + doc_to_chunk, + flattened_corpus_embs, + ) = self.flatten_corpus_embs(corpus_embs, corpus_ids) + similarity_matrix = np.dot(query_embs, flattened_corpus_embs.T) + results = self.get_results( + chunk_id_list, k_values, query_ids, similarity_matrix + ) + + doc_results = self.get_doc_results(results) + + ndcg, _map, recall, precision, _ = RetrievalEvaluator.evaluate( + relevant_docs, + doc_results, + [k for k in k_values if k <= max_k], + ignore_identical_ids=kwargs.get('ignore_identical_ids', True), + ) + mrr, _ = RetrievalEvaluator.evaluate_custom( + relevant_docs, + doc_results, + [k for k in k_values if k <= max_k], + 'mrr', + ) + scores = { + **{f"ndcg_at_{k.split('@')[1]}": v for (k, v) in ndcg.items()}, + **{f"map_at_{k.split('@')[1]}": v for (k, v) in _map.items()}, + **{f"recall_at_{k.split('@')[1]}": v for (k, v) in recall.items()}, + **{f"precision_at_{k.split('@')[1]}": v for (k, v) in precision.items()}, + **{f"mrr_at_{k.split('@')[1]}": v for (k, v) in mrr.items()}, + } + self._add_main_score(scores) + return scores + + def _add_main_score(self, scores: ScoresDict) -> None: + scores["main_score"] = scores[self.metadata.main_score] + + def get_results(self, chunk_id_list, k_values, query_ids, similarity_matrix): + results = {} + for i, query_id in enumerate(query_ids): + query_results = {} + for idx, score in enumerate(similarity_matrix[i]): + chunk_id = chunk_id_list[idx] + query_results[chunk_id] = score + # Sort results by score and only keep the top k scores + sorted_query_results = dict( + sorted(query_results.items(), key=lambda item: item[1], reverse=True)[ + : max(k_values) + ] + ) + results[query_id] = sorted_query_results + return results + + def flatten_corpus_embs(self, corpus_embs, corpus_ids): + doc_to_chunk = {} + flattened_corpus_embs = [] + chunk_id_list = [] + for doc_id, emb in zip(corpus_ids, corpus_embs): + for i, chunk in enumerate(emb): + flattened_corpus_embs.append(chunk) + doc_to_chunk[f"{doc_id}~{i}"] = doc_id + chunk_id_list.append(f"{doc_id}~{i}") + flattened_corpus_embs = np.vstack(flattened_corpus_embs) + flattened_corpus_embs = self._normalize(flattened_corpus_embs) + return chunk_id_list, doc_to_chunk, flattened_corpus_embs + + @staticmethod + def get_doc_results(results): + doc_results = dict() + for q, result_chunks in results.items(): + docs = dict() + for c_id, score in result_chunks.items(): + d_id = '~'.join(c_id.split('~')[:-1]) + if (d_id not in docs) or (score > docs[d_id]): + docs[d_id] = float(score) + doc_results[q] = docs + return doc_results + + def _calculate_k_values(self, max_chunks): + k_values = [1, 3, 5, 10, 20] + n = 2 + while 10**n < 100 * max_chunks: + k_values.append(10**n) + n += 1 + return k_values + + def _apply_chunking(self, corpus, tokenizer): + chunked_corpus = dict() + for k, v in corpus.items(): + text = f"{v['title']} {v['text']}" if 'title' in v else v['text'] + current_doc = [] + chunk_annotations = self.chunker.chunk( + text, + tokenizer, + chunking_strategy=self.chunking_strategy, + **self.chunking_args, + ) + tokens = tokenizer.encode_plus(text, add_special_tokens=False) + for start_token_idx, end_token_idx in chunk_annotations: + text_chunk = tokenizer.decode( + tokens.encodings[0].ids[start_token_idx:end_token_idx] + ) + current_doc.append({'text': text_chunk}) + chunked_corpus[k] = current_doc + return chunked_corpus + + def _calculate_annotations(self, model, corpus_texts): + if self.model_has_instructions: + instr = model.get_instructions()[1] + instr_tokens = self.tokenizer(instr, add_special_tokens=False) + n_instruction_tokens = len(instr_tokens[0]) + else: + n_instruction_tokens = 0 + chunk_annotations = [ + self._extend_special_tokens( + self.chunker.chunk( + text, + self.tokenizer, + chunking_strategy=self.chunking_strategy, + **self.chunking_args, + ), + n_instruction_tokens=n_instruction_tokens, + ) + for text in corpus_texts + ] + return chunk_annotations + + @staticmethod + def _flatten_chunks(chunked_corpus): + flattened_corpus = dict() + for k, li in chunked_corpus.items(): + for i, c in enumerate(li): + flattened_corpus[f'{k}~{i}'] = c + + return flattened_corpus + + @staticmethod + def _normalize(x): + return x / np.linalg.norm(x, axis=1)[:, None] + + @staticmethod + def _batch_inputs(li, batch_size): + for i in range(0, len(li), batch_size): + yield li[i : i + batch_size] + + @staticmethod + def _extend_special_tokens( + annotations, n_instruction_tokens=0, include_prefix=True, include_sep=True + ): + """Extends the spans because of additional special tokens, e.g. the CLS token + which are not considered by the chunker. + """ + new_annotations = [] + for i in range(len(annotations)): + add_left_offset = 1 if (not include_prefix) or int(i > 0) else 0 + left_offset = 1 + n_instruction_tokens + left = ( + annotations[i][0] + add_left_offset * left_offset + ) # move everything by one for [CLS] + + add_sep = 1 if include_sep and ((i + 1) == len(annotations)) else 0 + right_offset = left_offset + add_sep + right = ( + annotations[i][1] + right_offset + ) # move everything by one for [CLS] and the last one for [SEP] + + new_annotations.append((left, right)) + return new_annotations + + @staticmethod + def _prune(queries, corpus, relevant_docs, prune_size): + new_queries = {'test': {}} + new_corpus = {'test': {}} + new_relevant_docs = {'test': {}} + for i, key in enumerate(relevant_docs['test']): + if i >= prune_size: + break + new_relevant_docs['test'][key] = relevant_docs['test'][key] + for x in relevant_docs['test'][key]: + new_corpus['test'][x] = corpus['test'][x] + new_queries['test'][key] = queries['test'][key] + return new_queries, new_corpus, new_relevant_docs + + def _calculate_metrics_from_split(*args, **kwargs): + pass + + def _evaluate_subset(*args, **kwargs): + pass diff --git a/LLMs/RAG/late-chunking/chunked_pooling/wrappers.py b/LLMs/RAG/late-chunking/chunked_pooling/wrappers.py new file mode 100644 index 00000000..e1ec46f4 --- /dev/null +++ b/LLMs/RAG/late-chunking/chunked_pooling/wrappers.py @@ -0,0 +1,167 @@ +import os +from typing import List, Optional, Union + +import torch +import torch.nn as nn +from sentence_transformers import SentenceTransformer +from transformers import AutoModel +from transformers.modeling_outputs import BaseModelOutputWithPooling + + +def construct_document(doc): + if isinstance(doc, str): + return doc + elif 'title' in doc: + return f'{doc["title"]} {doc["text"].strip()}' + else: + return doc['text'].strip() + + +class JinaEmbeddingsV3Wrapper(nn.Module): + def __init__( + self, model_name, tasks=['retrieval.query', 'retrieval.passage'], **model_kwargs + ): + super().__init__() + self._model = AutoModel.from_pretrained( + model_name, trust_remote_code=True, **model_kwargs + ) + self.tasks = tasks + + def encode_queries( + self, + sentences: Union[str, List[str]], + *args, + task: Optional[str] = None, + **kwargs, + ): + return self._model.encode(sentences, *args, task=self.tasks[0], **kwargs) + + def encode_corpus( + self, + sentences: Union[str, List[str]], + *args, + **kwargs, + ): + _sentences = [construct_document(sentence) for sentence in sentences] + return self._model.encode(_sentences, *args, task=self.tasks[1], **kwargs) + + def get_instructions(self): + return [self._model._task_instructions[x] for x in self.tasks] + + def forward(self, *args, **kwargs): + task_id = self._model._adaptation_map[self.tasks[1]] + num_examples = kwargs['input_ids'].shape[0] + adapter_mask = torch.full( + (num_examples,), task_id, dtype=torch.int32, device=self._model.device + ) + return self._model.forward(*args, adapter_mask=adapter_mask, **kwargs) + + @property + def device(self): + return self._model.device + + @staticmethod + def has_instructions(): + return True + + +class NomicAIWrapper(nn.Module): + def __init__(self, model_name, **model_kwargs): + super().__init__() + self._model = SentenceTransformer( + model_name, trust_remote_code=True, **model_kwargs + ) + self.instructions = ['search_query: ', 'search_document: '] + + def get_instructions(self): + return self.instructions + + def forward(self, *args, **kwargs): + model_output = self._model.forward(kwargs) + base_model_output = BaseModelOutputWithPooling( + last_hidden_state=model_output['token_embeddings'], + pooler_output=model_output['sentence_embedding'], + attentions=model_output['attention_mask'], + ) + return base_model_output + + def encode_queries( + self, + sentences: Union[str, List[str]], + *args, + **kwargs, + ): + return self._model.encode( + [self.instructions[0] + s for s in sentences], *args, **kwargs + ) + + def encode_corpus( + self, + sentences: Union[str, List[str]], + *args, + **kwargs, + ): + return self._model.encode( + [self.instructions[1] + construct_document(s) for s in sentences], + *args, + **kwargs, + ) + + @property + def device(self): + return self._model.device + + @staticmethod + def has_instructions(): + return True + + +MODEL_WRAPPERS = { + 'jinaai/jina-embeddings-v3': JinaEmbeddingsV3Wrapper, + 'sentence-transformers/all-MiniLM-L6-v2': SentenceTransformer, + 'nomic-ai/nomic-embed-text-v1': NomicAIWrapper, +} + +MODELS_WITHOUT_PROMPT_NAME_ARG = [ + 'jinaai/jina-embeddings-v2-small-en', + 'jinaai/jina-embeddings-v2-base-en', + 'jinaai/jina-embeddings-v3', +] + + +def remove_unsupported_kwargs(original_encode): + def wrapper(self, *args, **kwargs): + # Remove 'prompt_name' from kwargs if present + kwargs.pop('prompt_name', None) + kwargs.pop('request_qid', None) + return original_encode(self, *args, **kwargs) + + return wrapper + + +def load_model(model_name, model_weights=None, **model_kwargs): + if model_name in MODEL_WRAPPERS: + model = MODEL_WRAPPERS[model_name](model_name, **model_kwargs) + if hasattr(MODEL_WRAPPERS[model_name], 'has_instructions'): + has_instructions = MODEL_WRAPPERS[model_name].has_instructions() + else: + has_instructions = False + else: + model = AutoModel.from_pretrained(model_name, trust_remote_code=True) + has_instructions = False + + if model_weights and os.path.exists(model_weights): + model._model.load_state_dict(torch.load(model_weights, device=model.device)) + + # encode functions of various models do not support all sentence transformers kwargs parameter + if model_name in MODELS_WITHOUT_PROMPT_NAME_ARG: + ENCODE_FUNC_NAMES = ['encode', 'encode_queries', 'encode_corpus'] + for func_name in ENCODE_FUNC_NAMES: + if hasattr(model, func_name): + setattr( + model, + func_name, + remove_unsupported_kwargs(getattr(model, func_name)), + ) + + return model, has_instructions diff --git a/LLMs/RAG/late-chunking/examples.ipynb b/LLMs/RAG/late-chunking/examples.ipynb new file mode 100644 index 00000000..78923d11 --- /dev/null +++ b/LLMs/RAG/late-chunking/examples.ipynb @@ -0,0 +1,221 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e1173893c4f0ea56", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "# Chunked Pooling\n", + "This notebooks explains how the chunked pooling can be implemented. First you need to install the requirements: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d02a920f-cde0-4035-9834-49b087aab5cc", + "metadata": { + "is_executing": true + }, + "outputs": [], + "source": [ + "!pip install -r requirements.txt" + ] + }, + { + "cell_type": "markdown", + "id": "58a8fbc1e477db48", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "Then we load a model which we want to use for the embedding. We choose `jinaai/jina-embeddings-v2-base-en` but any other model which supports mean pooling is possible. However, models with a large maximum context-length are preferred." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "1380abf7acde9517", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/michael/workspace/chunked-pooling/venv/lib/python3.10/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" + ] + } + ], + "source": [ + "from transformers import AutoModel\n", + "from transformers import AutoTokenizer\n", + "\n", + "from chunked_pooling import chunked_pooling, chunk_by_sentences\n", + "\n", + "# load model and tokenizer\n", + "tokenizer = AutoTokenizer.from_pretrained('jinaai/jina-embeddings-v2-base-en', trust_remote_code=True)\n", + "model = AutoModel.from_pretrained('jinaai/jina-embeddings-v2-base-en', trust_remote_code=True)" + ] + }, + { + "cell_type": "markdown", + "id": "2cc0c1162797ffb0", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "Now we define the text which we want to encode and split it into chunks. The `chunk_by_sentences` function also returns the span annotations. Those specify the number of tokens per chunk which is needed for the chunked pooling." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "8ef392f3437ef82e", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Chunks:\n", + "- \"Berlin is the capital and largest city of Germany, both by area and by population.\"\n", + "- \" Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits.\"\n", + "- \" The city is also one of the states of Germany, and is the third smallest state in the country in terms of area.\"\n" + ] + } + ], + "source": [ + "input_text = \"Berlin is the capital and largest city of Germany, both by area and by population. Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits. The city is also one of the states of Germany, and is the third smallest state in the country in terms of area.\"\n", + "\n", + "# determine chunks\n", + "chunks, span_annotations = chunk_by_sentences(input_text, tokenizer)\n", + "print('Chunks:\\n- \"' + '\"\\n- \"'.join(chunks) + '\"')\n" + ] + }, + { + "cell_type": "markdown", + "id": "9ac41fd1f0560da7", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "Now we encode the chunks with the traditional and the context-sensitive chunked pooling method:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "abe3d93b9e6609b9", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "# chunk before\n", + "embeddings_traditional_chunking = model.encode(chunks)\n", + "\n", + "# chunk afterwards (context-sensitive chunked pooling)\n", + "inputs = tokenizer(input_text, return_tensors='pt')\n", + "model_output = model(**inputs)\n", + "embeddings = chunked_pooling(model_output, [span_annotations])[0]" + ] + }, + { + "cell_type": "markdown", + "id": "e84b1b9d48cb6367", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "Finally, we compare the similarity of the word \"Berlin\" with the chunks. The similarity should be higher for the context-sensitive chunked pooling method:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "da0cec59a3ece76", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "similarity_new(\"Berlin\", \"Berlin is the capital and largest city of Germany, both by area and by population.\"): 0.849546\n", + "similarity_trad(\"Berlin\", \"Berlin is the capital and largest city of Germany, both by area and by population.\"): 0.84862185\n", + "similarity_new(\"Berlin\", \" Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits.\"): 0.82489026\n", + "similarity_trad(\"Berlin\", \" Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits.\"): 0.7084338\n", + "similarity_new(\"Berlin\", \" The city is also one of the states of Germany, and is the third smallest state in the country in terms of area.\"): 0.84980094\n", + "similarity_trad(\"Berlin\", \" The city is also one of the states of Germany, and is the third smallest state in the country in terms of area.\"): 0.7534553\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "cos_sim = lambda x, y: np.dot(x, y) / (np.linalg.norm(x) * np.linalg.norm(y))\n", + "\n", + "berlin_embedding = model.encode('Berlin')\n", + "\n", + "for chunk, new_embedding, trad_embeddings in zip(chunks, embeddings, embeddings_traditional_chunking):\n", + " print(f'similarity_new(\"Berlin\", \"{chunk}\"):', cos_sim(berlin_embedding, new_embedding))\n", + " print(f'similarity_trad(\"Berlin\", \"{chunk}\"):', cos_sim(berlin_embedding, trad_embeddings))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/LLMs/RAG/late-chunking/explanatory_contextual_retrieval.py b/LLMs/RAG/late-chunking/explanatory_contextual_retrieval.py new file mode 100644 index 00000000..269b5181 --- /dev/null +++ b/LLMs/RAG/late-chunking/explanatory_contextual_retrieval.py @@ -0,0 +1,197 @@ +# experiments/explanatory_contextual_retrieval.py +# +# a simple example with a trivial piece of text to showcase the late chunking method against +# contextual retrieval method. contextual retrieval manually inserts context to each +# chunk, i.e. forces context to be around each chunk. so works as a good comparison +# to late chunking to see if the similarities are similar (which they appear to be) + +from chunked_pooling.wrappers import load_model +from transformers import AutoModel, AutoTokenizer, pipeline, AutoModelForCausalLM +import torch +import numpy as np + +import chunked_pooling +from chunked_pooling import chunked_pooling +from chunked_pooling.chunking import Chunker + +from typing import List, Tuple +from transformers import AutoModel, AutoTokenizer, pipeline + +import requests +import os + +def request_anthropic_api(prompt: str): + url = "https://api.anthropic.com/v1/messages" + headers = { + "x-api-key": os.getenv("ANTHROPIC_API_KEY"), + "anthropic-version": "2023-06-01", + "content-type": "application/json" + } + data = { + "model": "claude-3-haiku-20240307", + "max_tokens": 2048, + "messages": [ + {"role": "user", "content": prompt} + ] + } + response = requests.post(url, headers=headers, json=data) + return response.json()["content"][0]["text"] + +def setup_local_llm(llm_name): + + model = AutoModelForCausalLM.from_pretrained(llm_name, trust_remote_code=True) + tokenizer = AutoTokenizer.from_pretrained(llm_name, trust_remote_code=True) + + def llm(prompt): + messages = [{"role": "user", "content": prompt}] + inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt") + inputs = inputs.to(model.device) + outputs = model.generate(inputs, max_new_tokens=512) + text_output = tokenizer.batch_decode(outputs)[0] + if "<|assistant|>" in text_output: + text_output = text_output.split("<|assistant|>")[1].strip() + return text_output + + return llm + +def cosine_similarity(vector1, vector2): + vector1_norm = vector1 / np.linalg.norm(vector1) + vector2_norm = vector2 / np.linalg.norm(vector2) + return np.dot(vector1_norm, vector2_norm) + +class LateChunkingEmbedder: + + def __init__(self, + model: AutoModel, + tokenizer: AutoTokenizer, + chunking_strategy: str = "sentences", + n_sentences: int = 1 + ): + + self.model = model + self.tokenizer = tokenizer + + self.chunker = Chunker(chunking_strategy = chunking_strategy) + self.n_sentences = n_sentences + + + def run(self, document: str): + annotations = [self.chunker.chunk(text=document, tokenizer=self.tokenizer, n_sentences=self.n_sentences)] + model_inputs = self.tokenizer( + document, + return_tensors='pt', + padding=True, + truncation=True, + max_length=8192, + ) + model_outputs = self.model(**model_inputs) + self.output_embs = chunked_pooling( + model_outputs, annotations, max_length=8192, + )[0] + return self.output_embs + + def query(self, query: str): + if "output_embs" not in dir(self): + raise ValueError("no embeddings calculated, use .run(document) to create chunk embeddings") + query_embedding = self.model.encode(query) + similarities = [] + for emb in self.output_embs: + similarities.append(cosine_similarity(query_embedding, emb)) + + return similarities + + +class ContextualRetrievalEmbedder(): + def __init__(self, + model: AutoModel, + tokenizer: AutoTokenizer, + llm_name: str = "microsoft/Phi-3.5-mini-instruct", + chunking_strategy: str = "fixed" + ): + + self.llm = setup_local_llm(llm_name) + # self.llm = request_anthropic_api + + self.prompt = """ + + {{WHOLE_DOCUMENT}} + + Here is the chunk we want to situate within the whole document + + {{CHUNK_CONTENT}} + + Please give a short succinct context to situate this chunk within the overall document for the purposes of improving search retrieval of the chunk. Answer only with the succinct context and nothing else. + """.strip() + + self.model = model + self.tokenizer = tokenizer + + self.chunker = Chunker(chunking_strategy = chunking_strategy) + + + def _add_context(self, chunk: str, document: str): + prompt = self.prompt.replace("{{WHOLE_DOCUMENT}}", document).replace("{{CHUNK_CONTENT}}", chunk) + extra_context = self.llm(prompt) + return extra_context + " " + chunk + + def _tokens_to_text(self, text: str, annotations: List[Tuple[int, int]]): + tokens = self.tokenizer.encode_plus( + text, return_offsets_mapping=True, add_special_tokens=False + ) + token_offsets = tokens.offset_mapping + chunks = [] + for start, end in annotations: + chunk = text[token_offsets[start][0]:token_offsets[end-1][1]] + chunks.append(chunk) + return chunks + + def run(self, document: str): + annotations = [self.chunker.chunk(text=document, tokenizer=self.tokenizer, n_sentences=1)] + self.chunks = self._tokens_to_text(text=document, annotations=annotations[0]) + self.chunks = [self._add_context(chunk, document) for chunk in self.chunks] + + model_outputs = self.model.encode(self.chunks) + self.output_embs = [model_outputs[i, :] for i in range(len(self.chunks))] + return self.output_embs + + def query(self, query: str): + if "output_embs" not in dir(self): + raise ValueError("no embeddings calculated, use .run(document) to create chunk embeddings") + query_embedding = self.model.encode(query) + similarities = [] + for emb in self.output_embs: + similarities.append(cosine_similarity(query_embedding, emb)) + + return similarities + + + +if __name__ == "__main__": + + text = """ + The recent SEC filing provided insights into ACME Corp's performance for Q2 2023. + It highlighted a 3% revenue growth over the previous quarter. + The company, which had a revenue of $314 million in the prior quarter, showed steady progress. + They attributed this growth to strategic initiatives and operational efficiencies. + The report emphasized the company's resilience and ability to navigate market challenges, reflecting positively on their financial health and future prospects. + """.strip().replace("\n", "") + + llm_model_name = "microsoft/Phi-3.5-mini-instruct" + embedding_model_name = "jinaai/jina-embeddings-v2-small-en" + + embedding_model, has_instructions = load_model(embedding_model_name) + embedding_tokenizer = AutoTokenizer.from_pretrained(embedding_model_name, trust_remote_code=True) + + cr = ContextualRetrievalEmbedder(embedding_model, embedding_tokenizer, llm_model_name, chunking_strategy="sentences") + cr.run(text); + cr_cosine_similarities = cr.query("What is ACME Corp's revenue growth for Q2 2023?") + + lc = LateChunkingEmbedder(embedding_model, embedding_tokenizer) + lc.run(text) + lc_cosine_similarities = lc.query("What is ACME Corp's revenue growth for Q2 2023?") + + # import pandas as pd + for i, (cr_similarity, lc_similarity) in enumerate(zip(cr_cosine_similarities, lc_cosine_similarities)): + print(f"{text.split('.')[:-1][i].strip()}") + print(f"Similarities: Contextual Retrieval: {cr_similarity:.4f} | Late Chunking: {lc_similarity:.4f}") + print("") \ No newline at end of file diff --git a/LLMs/RAG/late-chunking/img/context-problem.png b/LLMs/RAG/late-chunking/img/context-problem.png new file mode 100644 index 0000000000000000000000000000000000000000..c3139c67ffeb376ccada7efa876ffc1fc3e85a4a GIT binary patch literal 224839 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 CXVta< literal 0 HcmV?d00001 diff --git a/LLMs/RAG/late-chunking/img/method.png b/LLMs/RAG/late-chunking/img/method.png new file mode 100644 index 0000000000000000000000000000000000000000..9749cf618312dbf4334595095b7c5ad1a69e8d36 GIT binary patch literal 88377 zcmeFZcT|(x);=0U!NL{`B8mhQl?c+Mcab6pNbg0e5a}d9=%OOMgLI`xC(=6srB|t; zqf|)@Erb%>@_CEJ~cZ_@QKi?R?;}~FkUGFNh&$*tNz^BS`f1JI376bzQ@mT(m z8VE!|0RoXfI1T&;IWQ-1fk3{X$B(2m+>Cxs`MkJ6NI7y;3^bLxrR6&-dofh?Y}_S2 zt*2&^XLZg5X{xoH?9dvxtDG}WW#u5H?`KiHNLoTld3`N!DcHnWLv%ycdlXkSr z2yo%O`Ng9a;&n3MW7ho9;p$Pr9f#?t%BDu2!zG{2`T5(xe>{zPd$iFeaj5E%0{qKY zt;q!V3$#YJZcIl7e0U$jO-FhlD!YG`f*kk&v7jO`7!-c-2-q<2N8y@3X@N$wW}jyO z&w(jgO@P1tH%=jGaPG5kBR1_CC%)F{1uBZbHb(CawXPS-S{j6x}S6LwjSw@05%K=2<@ z$ICt6WLnV)jyy*}e!4(Ib$Y)XX?>3A(&$AH=Ye7r4g|vAZgdnul`kLfGBm&bMQTd*-nv`Ra+bc9&1~J6l=E9r->oR;k?=nJU>joJZjfX|3HfQE8vUK$0KE zXcv~8^)pJwJiHrq_IefY_gAp5ZNvHR9@f9%3+S~p_}7Y61g70lN+OxqX^=z)<>U91 zO$OX_k|xzx7CabHii_+z_wvEQOxU!au{k}q1r;q?itb}4ay@tI;D*IAwMiDcJ;9j; z1^2%v-ccKix#3WU(Bl{Pl(bnjw%(_=k0;FZuOdG&gPuOGkl8)Q?lkyP#z|c|xWK1M zz2c8$Y;?v|VT&G|qWN^){J4O9q=9j*-1Xjx$%-GnU2y>dowG6)Jje>At&fK2$*H^8 zZF=n1z$qugFM%O@B=Y=HUpuk(7h8UtOdu}a?-;3&^4(>zlKr`JnJ?D8N`!1p6sccU zn{xR!IEedL|<-$@toc{oyJco#kG8Lu&2KuvL}w{u)YEyfJ~OPePV5!Y79m!&`^tq%wN z>$sVclC-*D0tGP(X?nNt_x=4&A}(};{mD*hCodL6h-ex4pFYLKF}w~ouB zujB0822b6MtrY0|xVgNEtuI-;d~SZc&qc*pR`qBo#NtX3 zTjCS<6>qUEgjv1mwk|*gZQx7h5-yii<9!QsYaeymPebS_2a2*uYdpNN(7%Mp`cSJr zV*l6^23M-|8LJS6CuQcA`ngLI`{mCQG{i>Pd&WjK(gBhB z%yf9ppKR0-E9Ep!Ip7a!On!x=d`6X^sl;qMS3x2UqIF=*}MGP8qpcRu{htRqX zu2-Su)VnPp=7u0T0g?so%7yq4J{8os2O3m9_)b*8b>IwAq?at@T!S^H>LiN{JsMez z=PdrdWSQ6dHvpR!Sv|#0`;*a70J0LNueu^kM<>V>i@qO$wV#2oNklu<8u%zB7*rC$ zy5(6)6}qc)#XZ}ck?xB0SvLvx=_DE^2W_DHIv3?8GC3AHi~`3Cbd|TjHFBL-3u4Oq zmeE%jNz)&Dl`wtkbR2o%4?t{tKcoEtjy?O6YeoKkcoy@6BFpMIzXwY67J;fU#wd8w zWO3zSX~$X|r8Xek0-cLPs*gV295e7Cmk|OPcjQ9)G+i_9AC4+i&y96=WwauSf;L1v zRbzO8iGSHcz&aKEl9N(EPN*oJ()}`t)l()WZC|z@Ti{Zc(??j*$o16K7(VD~)Ue9= z%&F~H1%>s7T4D%(T!~TcltXQSCj^&Y2~V|-%o7plB&z2gP2UZ^dOxCtU|V8gBENM$ zCEiwrzcWfc!NApLdow_lW&tG1pPlZRqrdVLy8K~Yk7$!!u&7SRYSWSWk_Sw( zLM-Wr5I_IqE&MIl$F?f7sLDF7m^wzW)0W}C6uFX~>c#FP&prK^1^tuNv^2Z=W>SS)*H&>f>9-a}%vqPdX`F3F0fI?W~~^dR>$x+!|Qz0SSM zyoc91UTg}2?x~g1Vo<96Ic8fjI%+u_%|9V;Hf8+oC5=}`ZUl%#6d81rA+ zzfnTHNe0+5Z&~W7F!0IJHXzzs(29xgG+|;RQG`uL6)aD)@J{TvQKC7PX)xe#<)~kd znf>-ob$3e4afT&z-yO!ap^A-?*#)}x`?W*bQ?yTG$k)QmR2v#0%G&hUA)@8jjT~k> zODn|}8TXO(hP3&3F7+5Q+TY$KYMNw`*3KXzNS@>h$vQv*NB8Q5=Z3?>?d3AYAFO23 zRu;~fnXUOVW8c>bPs2}w&h}J5DvMO%**78FJ$)|9IA{KpPEolBKm;j8$_75ojr+%J zh<_#8XHb%TyZDc}&y(Kot$@f;jF`^9{4>&RX4n%0y_Th(4J)UsCRxRFAlM-VD5^2F zK+ya@hPL;CSoY^>5Y2U&YLWj=_y3M|1)J#xII4Z7@riuH#XBUfu-8KZ#D0^pEnKYq zs&eWO2maE(F-PIbg2OR)GJ~9|NIA{#^oSIbJ_XVvAZ&a=N5%BXdozPEL4+LT_OrNc z-j5Rem1A4a-X7_>)hO<5P2 z#Ifd`Y&yqTXR^g4akw5{js<~Q2B)Vv{QdpM7ktxz6n0~t^Kh24JKaFZybw(W3Yr6! zcwJ5F>f-VoP3C=^+@5~P>9wr5=)Kw;czGNK@|~^n+%2i5&9|r0L6Yx>G=U;0F{e|8 zb|=#NbKqj2_kzkP!hGf6qb}5bFkI}L_Az-->N6V3I6Qo1@*bntW+a>*B>A1Ny{%H% zw%V{)L>fj#;VUZWy}vW0EV=ug+9zj<0`%0)W9w&vUa+y}x(p7{h&)zX@9j`~Pv#8D z-NS7Z@^}zt`;;2AShyvL0E_{$b7vOmBPxc4SAZp(M(II!5q?C;{o8#t!26ywYGK%kA)eB*<>>XnbmH)E7jHhK^qjrJsh zul>jfw+Z&CDYfde*(L+cqmkYOHroTG?ae_I=r-B@aZ3M9JK#LSz!q#-IZeE9iV_rI zd|YBUWX-+lC%lkE5ci$oq61kzK6sx6qckb^Ir7GNgM9aiz-bB#QOkfT+&mT?iAI%Q zg0Q(#yQ++v`5E?9)3o>w8e`Iw7VXDv=csF z1C>i5_8^QKRRDUGu5J4qZI8cPy?s5@W}6Z;-et{?-wt3@45p!m>w+3Gb}>e;@f)4*5?^2Yl)j3s3pTX6BcvA)Ekc;gI8 z-_N6^R^b&}!q@2NzOGR3{3>_YH>`)+Ki}gQ$pya}{6Qx9Omy?B^!PaTQOb#4gij+U zur=Pz?*WX7a^G~W?!Bm~sVT#OK#P{<=8yF4OWo%q<;rY9-p4*}E$LXA8rYMvQxOUi z6d)5jZ{lE@4c3+)L*p<43%K)*rT*Vq6)l`hsR0HLr3Wi4N zUwqu~XWW;Z$X<9!+LL#RsJogzbSg)^Nw<=GhYZleH$)=wMV9yJf{YC5TIKKPA7o5E zckkYH63)&Z7C`MP+3Nc;{u0;basA92f)0(7Cn&HyNeeG+qmJr55AkVe z1eE|r1K1#$ccTfYJ=&}-EaBWCy?xyWzgC^w2Xoud6lNwQzQ zOh1;Fxwk!lf)~jI?$tKLnK|65>?s$d4Yo%2`#1Ih^m7M_P@uYPeA>~ZK`?56 zffM@MjGh4Mgx~6o4>#f$^*ql8^lmA`ve-B|jm;9;4Bl`RM8-+Y~K2c1E% z2j)hX8rH(C(WhEopSxOyCeI2d8Nbi3!ObE*1Z|(JdNAnoy&SQ2vv4uXBCE8c{iSm3 z%a`EW$v~~tb?9X#?GRA4egAgI*?a4!E{*`Ypgi)Cq2-I-4P}x9Uf|ednts|>jaVr} zQu;cSjI=<&hzJKj8fP9~S*Yzxjs!}#?@z;FuwrIV#7#}6ymGphCcPVWf4$t2oeCu+ z^U{GL9#X4$ZZdrbD&`H+sz#nY#(UR+itjZwnQBu$A&JY77Er?);GY9NGl(%yy93 z1ximJpLBLo1>40F$oVT1c$l!O1`$;_AR)|~KzLaL{=PBKL}u5S(mZz8uT89Ev4iY@ zNF_aRVdD981!j=FWC4aHWW7!oog}#)CW9YRL4Y*{<-Y`~Ce{r7{;%kPz)-mXAdP{&E5)GArOGAR3NOuZusAm4*#|MXG*HmgfXJfT;8;T8XxmI+o zz3Msm2JFCn+pG0@@{X_hG|P57KbEj;#5aPYk7E32;2i$KoXhvpab*3SB<7?_%_h?+ z^-theHw&2oeF4rrbI(Opd{v#^VxcYcNPqa}j^9v)A)CeYOZ`ln1NL5#mmkQ+oXV6& zB!+I4Q!_+_PG#RoT#(LxespGR=LcEtRIQxNc4fy$D@t=Dy!PhU`jg5R-b5GEmtrnj z*HbmNxer^v1Y~`Gebcsf_d;`%wLKOs-zLJp?Vtbh%EDA& zQzMK~-?RW(*`8=+YZp!9wa;-c&DGza@?8^1f$_KUdPFdtr}!bY2-E|{XbLEw$z$Jw zZ%>k}%~|7^%Jx?Fu8>pS2?g%0D{!E4YdHsJOUznv-jZ=ItJP(dh)ZTNE|u?$j$YbG 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

IOSDOLp-bUz@-Eja(OBlrr-c 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 0): + truncate_max_length = None + print( + f'Truncation is disabled because Long Late Chunking algorithm is enabled.' + ) + + model, has_instructions = load_model(model_name, model_weights) + + tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) + + chunking_args = { + 'chunk_size': chunk_size, + 'n_sentences': n_sentences, + 'chunking_strategy': strategy, + 'model_has_instructions': has_instructions, + 'embedding_model_name': chunking_model if chunking_model else model_name, + } + + if torch.cuda.is_available(): + model = model.cuda() + + model.eval() + + # Evaluate with late chunking + tasks = [ + task_cls( + chunked_pooling_enabled=True, + tokenizer=tokenizer, + prune_size=None, + truncate_max_length=truncate_max_length, + long_late_chunking_embed_size=long_late_chunking_embed_size, + long_late_chunking_overlap_size=long_late_chunking_overlap_size, + **chunking_args, + ) + ] + + evaluation = MTEB( + tasks=tasks, + chunked_pooling_enabled=True, + tokenizer=tokenizer, + prune_size=None, + **chunking_args, + ) + evaluation.run( + model, + output_folder='results-chunked-pooling', + eval_splits=[eval_split], + overwrite_results=True, + batch_size=BATCH_SIZE, + encode_kwargs={'batch_size': BATCH_SIZE}, + ) + + # Encode without late chunking + tasks = [ + task_cls( + chunked_pooling_enabled=False, + tokenizer=tokenizer, + prune_size=None, + truncate_max_length=truncate_max_length, + **chunking_args, + ) + ] + + evaluation = MTEB( + tasks=tasks, + chunked_pooling_enabled=False, + tokenizer=tokenizer, + prune_size=None, + **chunking_args, + ) + evaluation.run( + model, + output_folder='results-normal-pooling', + eval_splits=[eval_split], + overwrite_results=True, + batch_size=BATCH_SIZE, + encode_kwargs={'batch_size': BATCH_SIZE}, + ) + + +if __name__ == '__main__': + main() diff --git a/LLMs/RAG/late-chunking/tests/__init__.py b/LLMs/RAG/late-chunking/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/LLMs/RAG/late-chunking/tests/conftest.py b/LLMs/RAG/late-chunking/tests/conftest.py new file mode 100644 index 00000000..ce76ce78 --- /dev/null +++ b/LLMs/RAG/late-chunking/tests/conftest.py @@ -0,0 +1,47 @@ +import pytest +from mteb.abstasks.TaskMetadata import TaskMetadata + +from chunked_pooling.mteb_chunked_eval import AbsTaskChunkedRetrieval + + +class DummyTask(AbsTaskChunkedRetrieval): + metadata = TaskMetadata( + dataset={ + 'path': '~', + 'revision': '', + }, + name='dummy', + description='', + type='Retrieval', + category='s2p', + reference=None, + eval_splits=[], + eval_langs=[], + main_score='ndcg_at_10', + date=None, + form=None, + domains=None, + task_subtypes=None, + license=None, + socioeconomic_status=None, + annotations_creators=None, + dialect=None, + text_creation=None, + bibtex_citation=None, + n_samples=None, + avg_character_length=None, + ) + + def load_data(): + pass + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + +@pytest.fixture() +def dummy_task_factory(): + def _create_dummy_task(*args, **kwargs): + return DummyTask(*args, **kwargs) + + return _create_dummy_task diff --git a/LLMs/RAG/late-chunking/tests/test_api.py b/LLMs/RAG/late-chunking/tests/test_api.py new file mode 100644 index 00000000..30962a16 --- /dev/null +++ b/LLMs/RAG/late-chunking/tests/test_api.py @@ -0,0 +1,100 @@ +import os +import numpy as np +from transformers import AutoModel, AutoTokenizer + +from chunked_pooling import chunked_pooling +from chunked_pooling.wrappers import load_model +from chunked_pooling.mteb_chunked_eval import AbsTaskChunkedRetrieval + +MODEL_NAME = 'jinaai/jina-embeddings-v3' + +# Define Text and Chunk +CHUNKS = ["Organic skincare", "for sensitive skin", "with aloe vera and chamomile"] +FULL_TEXT = ' '.join(CHUNKS) + + +def load_api_results(): + import requests + + url = 'https://api.jina.ai/v1/embeddings' + headers = { + 'Content-Type': 'application/json', + 'Authorization': f'Bearer {os.environ["JINA_API_TOKEN"]}', + } + data = { + "model": "jina-embeddings-v3", + "task": "retrieval.passage", + "dimensions": 1024, + "late_chunking": True, + "embedding_type": "float", + "input": CHUNKS, + } + response = requests.post(url, headers=headers, json=data) + data = response.json() + return [np.array(x['embedding']) for x in data['data']] + + +def calculate_annotations(model, boundary_cues, model_has_instructions, tokenizer): + if model_has_instructions: + instr = model.get_instructions()[1] + instr_tokens = tokenizer(instr, add_special_tokens=False) + n_instruction_tokens = len(instr_tokens[0]) + else: + n_instruction_tokens = 0 + chunk_annotations = [ + AbsTaskChunkedRetrieval._extend_special_tokens( + annotations, + n_instruction_tokens=n_instruction_tokens, + include_prefix=True, + include_sep=True, + ) + for annotations in boundary_cues + ] + return chunk_annotations + + +def test_compare_v3_api_embeddings(): + # Load Model + model, has_instr = load_model(MODEL_NAME, use_flash_attn=False) + tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) + + # Determine Boundary Cues + tokenization = tokenizer( + FULL_TEXT, return_offsets_mapping=True, add_special_tokens=False + ) + boundary_cues = [] + chunk_i = 0 + last_cue = 0 + last_end = 0 + for i, (start, end) in enumerate(tokenization.offset_mapping): + if end >= (last_end + len(CHUNKS[chunk_i])): + boundary_cues.append((last_cue, i + 1)) + chunk_i += 1 + last_cue = i + 1 + last_end = end + extended_boundary_cues = calculate_annotations( + model, [boundary_cues], has_instr, tokenizer + ) + + # Append Instruction for Retrieval Task + instr = model.get_instructions()[1] + text_inputs = [instr + FULL_TEXT] + model_inputs = tokenizer( + text_inputs, + return_tensors='pt', + padding=True, + truncation=True, + max_length=8192, + ) + model_outputs = model(**model_inputs) + + # Apply Late Chunking + output_embs = chunked_pooling( + model_outputs, extended_boundary_cues, max_length=8192 + )[0] + api_embs = load_api_results() + for local_emb, api_emb in zip(output_embs, api_embs): + local_emb_norm = local_emb / np.linalg.norm(local_emb) + api_emb_norm = api_emb / np.linalg.norm(api_emb) + assert np.allclose(local_emb_norm, api_emb_norm, rtol=1e-02, atol=1e-02) + assert 1.0 - np.dot(local_emb_norm, api_emb_norm) < 1e-3 diff --git a/LLMs/RAG/late-chunking/tests/test_chunking_methods.py b/LLMs/RAG/late-chunking/tests/test_chunking_methods.py new file mode 100644 index 00000000..02c3e17b --- /dev/null +++ b/LLMs/RAG/late-chunking/tests/test_chunking_methods.py @@ -0,0 +1,182 @@ +import pytest +from transformers import AutoTokenizer + +from chunked_pooling.chunking import CHUNKING_STRATEGIES, Chunker +from chunked_pooling.mteb_chunked_eval import AbsTaskChunkedRetrieval + +EXAMPLE_TEXT_1 = "Berlin is the capital and largest city of Germany, both by area and by population. Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits. The city is also one of the states of Germany, and is the third smallest state in the country in terms of area." +PUNCTATIONS = ('.', '!', '?') + + +@pytest.mark.parametrize("n_sentences", [1, 2, 3, 4]) +def test_chunk_by_sentences(n_sentences): + strategy = 'sentences' + model_name = 'jinaai/jina-embeddings-v2-small-en' + chunker = Chunker(chunking_strategy=strategy) + tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) + boundary_cues = chunker.chunk( + text=EXAMPLE_TEXT_1, + tokenizer=tokenizer, + chunking_strategy=strategy, + n_sentences=n_sentences, + ) + extended_boundary_cues = AbsTaskChunkedRetrieval._extend_special_tokens( + boundary_cues + ) + model_inputs = tokenizer( + EXAMPLE_TEXT_1, + return_tensors='pt', + padding=True, + truncation=True, + max_length=8192, + ) + + # check that the cues start with 0 and end with the last token + assert extended_boundary_cues[0][0] == 0 + assert len(model_inputs.tokens()) == extended_boundary_cues[-1][1] + + # check that all chunks but the last one end with a punctuation + assert all( + model_inputs.tokens()[x:y][-1] in PUNCTATIONS + for (x, y) in extended_boundary_cues[:-1] + ) + + # check that the last chunk ends with a "[SEP]" token + last_cue = extended_boundary_cues[-1] + assert model_inputs.tokens()[last_cue[0] : last_cue[1]][-1] == "[SEP]" + + # check that the boundary cues are continuous (no token is missing) + assert all( + [ + extended_boundary_cues[i][1] == extended_boundary_cues[i + 1][0] + for i in range(len(extended_boundary_cues) - 1) + ] + ) + + +@pytest.mark.parametrize( + "boundary_cues", [[(0, 17), (17, 44), (44, 69)], [(0, 44), (44, 69)]] +) +def test_token_equivalence(boundary_cues): + model_name = 'jinaai/jina-embeddings-v2-small-en' + tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) + tokens = tokenizer.encode_plus( + EXAMPLE_TEXT_1, add_special_tokens=False, return_offsets_mapping=True + ) + for start_token_idx, end_token_idx in boundary_cues: + decoded_text_chunk = tokenizer.decode( + tokens.input_ids[start_token_idx:end_token_idx] + ) + + original_text_chunk = EXAMPLE_TEXT_1[ + tokens.offset_mapping[start_token_idx][0] : tokens.offset_mapping[ + end_token_idx - 1 + ][1] + ] + chunk_tokens_original = tokenizer.encode_plus(original_text_chunk) + chunk_tokens_decoded = tokenizer.encode_plus(decoded_text_chunk) + assert chunk_tokens_original == chunk_tokens_decoded + + +def test_chunker_initialization(): + for strategy in CHUNKING_STRATEGIES: + chunker = Chunker(chunking_strategy=strategy) + assert chunker.chunking_strategy == strategy + + +def test_invalid_chunking_strategy(): + with pytest.raises(ValueError): + Chunker(chunking_strategy="invalid") + + +def test_chunk_by_tokens(): + chunker = Chunker(chunking_strategy="fixed") + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + chunks = chunker.chunk(EXAMPLE_TEXT_1, tokenizer=tokenizer, chunk_size=10) + assert len(chunks) > 1 + for start, end in chunks: + assert end - start <= 10 + + +@pytest.mark.parametrize( + 'model_name', + ['jinaai/jina-embeddings-v2-small-en', 'sentence-transformers/all-MiniLM-L6-v2'], +) +def test_chunk_semantically(model_name): + chunker = Chunker(chunking_strategy="semantic") + tokenizer = AutoTokenizer.from_pretrained(model_name) + tokens = tokenizer.encode_plus( + EXAMPLE_TEXT_1, add_special_tokens=False, return_offsets_mapping=True + ) + boundary_cues = chunker.chunk( + EXAMPLE_TEXT_1, + tokenizer=tokenizer, + chunking_strategy='semantic', + embedding_model_name=model_name, + ) + + # check if it returns boundary cues + assert len(boundary_cues) > 0 + + # test if bounaries are at the end of sentences + for start_token_idx, end_token_idx in boundary_cues: + assert ( + EXAMPLE_TEXT_1[tokens.offset_mapping[end_token_idx - 1][0]] in PUNCTATIONS + ) + decoded_text_chunk = tokenizer.decode( + tokens.input_ids[start_token_idx:end_token_idx] + ) + + # check that the boundary cues are continuous (no token is missing) + assert all( + [ + boundary_cues[i][1] == boundary_cues[i + 1][0] + for i in range(len(boundary_cues) - 1) + ] + ) + + +def test_empty_input(): + chunker = Chunker(chunking_strategy="fixed") + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + chunks = chunker.chunk("", tokenizer=tokenizer, chunk_size=10) + assert len(chunks) == 0 + + +def test_input_shorter_than_chunk_size(): + short_text = "Short text." + chunker = Chunker(chunking_strategy="fixed") + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + chunks = chunker.chunk(short_text, tokenizer=tokenizer, chunk_size=20) + assert len(chunks) == 1 + + +@pytest.mark.parametrize("chunk_size", [10, 20, 50]) +def test_various_chunk_sizes(chunk_size): + chunker = Chunker(chunking_strategy="fixed") + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + chunks = chunker.chunk(EXAMPLE_TEXT_1, tokenizer=tokenizer, chunk_size=chunk_size) + assert len(chunks) > 0 + for start, end in chunks: + assert end - start <= chunk_size + + +def test_chunk_method_with_different_strategies(): + chunker = Chunker(chunking_strategy="fixed") + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + fixed_chunks = chunker.chunk(EXAMPLE_TEXT_1, tokenizer=tokenizer, chunk_size=10) + semantic_chunks = chunker.chunk( + EXAMPLE_TEXT_1, + tokenizer=tokenizer, + chunking_strategy="semantic", + embedding_model_name='jinaai/jina-embeddings-v2-small-en', + ) + assert fixed_chunks != semantic_chunks + + +def test_chunk_by_sentences_different_n(): + chunker = Chunker(chunking_strategy="sentences") + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + chunks_1 = chunker.chunk(EXAMPLE_TEXT_1, tokenizer=tokenizer, n_sentences=1) + chunks_2 = chunker.chunk(EXAMPLE_TEXT_1, tokenizer=tokenizer, n_sentences=2) + assert len(chunks_1) > len(chunks_2) diff --git a/LLMs/RAG/late-chunking/tests/test_v3.py b/LLMs/RAG/late-chunking/tests/test_v3.py new file mode 100644 index 00000000..0038f2b2 --- /dev/null +++ b/LLMs/RAG/late-chunking/tests/test_v3.py @@ -0,0 +1,22 @@ +from transformers import AutoTokenizer + +from run_chunked_eval import DEFAULT_CHUNK_SIZE, load_model + +MODEL_NAME = 'jinaai/jina-embeddings-v3' + + +def test_instruction_handling(dummy_task_factory): + model, has_instructions = load_model(MODEL_NAME) + tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, trust_remote_code=True) + task = dummy_task_factory( + chunking_strategy='fixed', + chunk_size=DEFAULT_CHUNK_SIZE, + tokenizer=tokenizer, + model_has_instructions=has_instructions, + ) + n_instruction_tokens = len( + tokenizer(model.get_instructions()[1], add_special_tokens=False)['input_ids'] + ) + annotations_one_token = task._calculate_annotations(model, ['A'])[0] + assert len(annotations_one_token) == 1 + assert annotations_one_token[0] == (0, n_instruction_tokens + 3)