Skip to content

Latest commit

 

History

History
166 lines (121 loc) · 5.08 KB

README.md

File metadata and controls

166 lines (121 loc) · 5.08 KB

OmniThink

Expanding Knowledge Boundaries in Machine Writing through Thinking

Table of Contents

🔔News

  • 2025-02-20, We have added the evaluation methods from the paper to OmniThink, and in the future, we will integrate more evaluation methods.
  • 2025-01-28, We have provided support for the deepseek-reasoner model. You can try running ./examples/deepseekr1.py to test OmniThink's performance within deepseek-reasoner.
Previous News
  • 2025-01-18, we open-sourced OmniThink, a machine writing framework.

🌻Acknowledgement

📖 Quick Start

  • 🌏 The Online Demo is avaiable at ModelScope now!

📌 Introduction

Welcome to OmniThink, an innovative machine writing framework designed to replicate the human cognitive process of iterative expansion and reflection in generating insightful long-form articles.

  • Iterative Expansion and Reflection: OmniThink uses a unique mechanism that simulates human cognitive behaviors to deepen the understanding of complex topics.
  • Enhanced Knowledge Density: OmniThink focuses on expanding knowledge boundaries, resulting in articles that are rich in information and insights.
  • Comprehensive Article Generation: OmniThink constructs outlines and generates articles, delivering high-quality content that is both coherent and contextually robust.

🛠 Dependencies

conda create -n OmniThink python=3.11
git clone https://github.com/zjunlp/OmniThink.git
cd OmniThink
# Install requirements
pip install -r requirements.txt

🔑 Before running, please export the LM API key and SEARCH key as an environment variable:

export LM_KEY=YOUR_API_KEY
export SEARCHKEY=YOUR_SEARCHKEY

You can define your own LM API and SEARCH API

Note that the output of the LM should be a LIST.

Results in OmniThink

The preformance of OmniThink is shown below:

Generate Article in OmniThink

Just one command required

sh run.sh

You can find your Article, Outline and mindmap in ./results/

🔍 Evaluation

We provide convenient scripts for evaluating your method. The evaluation is divided into three categories: Rubric_Grading, Knowledge_Density, and Information_Diversity.

We use the factscore library. Please run the following code before starting the evaluation.

cd eval
git clone https://github.com/shmsw25/FActScore.git

For Rubric Grading

python Rubric_Grading.py \
 --articlepath articlepath \
 --modelpath modelpath

For Information Diversity

python Information_Diversity.py \
 --mappath mappath \
 --model_path model_path

For Knowledge_Density

python Knowledge_Density.py \
 --articlepath articlepath \
 --api_path api_path \
 --threads threads

Citation

If you find our repo useful in your research, please kindly consider cite:

@misc{xi2025omnithinkexpandingknowledgeboundaries,
      title={OmniThink: Expanding Knowledge Boundaries in Machine Writing through Thinking}, 
      author={Zekun Xi and Wenbiao Yin and Jizhan Fang and Jialong Wu and Runnan Fang and Ningyu Zhang and Jiang Yong and Pengjun Xie and Fei Huang and Huajun Chen},
      year={2025},
      eprint={2501.09751},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2501.09751}, 
}