Package: selective-context
Selective Context for LLMsSelective Context compresses your prompt and context to allows LLMs (such as ChatGPT) to process 2x more content. It is especially useful in dealing with long documents and maintaining long conversations without compromising their performance on various tasks!This repository contains the code and data for the paper:Compressing Context to Enhance Inference Efficiency of Large Language Models.Updates!!Oct 9 2023: This work has been accepted for the main proceedings ofEMNLP 2023:partying_face:. The paper link above is the latest conference version. If you are looking for the previous arxiv version of the paper: :point_right:Unlocking Context Constraints of LLMs.May 6 2023: Try our demo onHuggingface Space.Key FeaturesEfficient Context Management: Selective Context maximizes the utility of fixed context length in LLMs, allowing them to process long documents and extended conversations more efficiently.Informativeness Evaluation: Our method employs a base language model to compute self-information for lexical units (sentences, phrases, or tokens) in a context and use it to evaluate their informativeness.Extensive Evaluation: We provide extensive evaluations of Selective Context on three data sources (arxiv papers, BBC news articles, and conversation transcripts) and four different NLP tasks (summarization, question answering, original context reconstruction, and conversation).Getting StartedTo get started, follow these steps:Installselective-contextvia Pypi:pip install selective-contextImportSelectiveContext:from selective_context import SelectiveContextCompress your prompt and context. Thecontextcontains the compressed context:sc = SelectiveContext(model_type='gpt2', lang='en')
context, reduced_content = sc(text)You can also adjust the reduce ratio:context, reduced_content = sc(text, reduce_ratio = 0.5)If you prefer to try with web interface, try our streamlit app:streamlit run app/app.pyOr directly visit ourSpaceon Hugging Face Hub.Code Structureselective_context.py: A demo for performing context reduction using Selective Context.context_manager.py: The main module for managing context and implementing the Selective Context algorithm.main.py: The main script for running experiments and evaluating the effectiveness of Selective Context.qa_manager.py: A helper module for managing question answering tasks during the experiments.ExperimentsTo reproduce the experiments from the paper, run the following command:python main.pyThis will run the experiments on arxiv papers, BBC news articles, and conversation transcripts with four different NLP tasks: summarization, question answering, original context reconstruction, and conversation.Dataset in the paperThe dataset used in the paper can be found at:Arxiv:HF HubBBC News:HF HubShareGPT.com:HF HubThe datasets are created by ourselves so if you need citation just use the citation of this tool.CitationIf you find this repository helpful or use our method in your research, please consider citing our paper:@misc{li2023compressing,
      title={Compressing Context to Enhance Inference Efficiency of Large Language Models}, 
      author={Yucheng Li and Bo Dong and Chenghua Lin and Frank Guerin},
      year={2023},
      eprint={2310.06201},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}The previous version:@misc{li2023unlocking,
      title={Unlocking Context Constraints of LLMs: Enhancing Context Efficiency of LLMs with Self-Information-Based Content Filtering}, 
      author={Yucheng Li},
      year={2023},
      eprint={2304.12102},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}LicenseThis project is licensed under theMIT License.