OpenScholar:华盛顿大学联合艾伦研究所开源的学术搜索工具

223 阅读4分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

功能:检索大量科学文献并综合相关信息回答用户查询。
技术:基于专门的检索器和重排器,提高检索效率和准确性。
应用:适用于多个科学领域,包括计算机科学、生物医学、物理学和神经科学等。

正文(附运行示例)

OpenScholar 是什么

公众号: 蚝油菜花 - OpenScholar

OpenScholar是由华盛顿大学和艾伦AI研究所共同推出的检索增强型语言模型(LM),旨在帮助科学家基于检索和综合科学文献中的相关论文回答问题。该系统利用大规模的科学论文数据库,通过定制的检索器和重排器,以及一个优化的8B参数语言模型,生成基于实际文献的、准确的回答。

OpenScholar在提供事实性回答和准确引用方面超越了现有的专有和开源模型。在ScholarQABench上,OpenScholar-8B在正确性方面比GPT-4o高出5%,比PaperQA2高出7%。所有相关代码和数据均已开源,支持和加速科学研究。

OpenScholar 的主要功能

  • 文献检索与合成:检索大量的科学文献,并综合相关信息回答用户查询。
  • 生成基于引用的回答:生成的回答包含准确的引用,提高回答的可靠性和透明度。
  • 跨学科应用:适用于多个科学领域,包括计算机科学、生物医学、物理学和神经科学等。
  • 提高检索效率:基于专门的检索器和重排器,提高检索相关科学文献的效率和准确性。
  • 自我反馈迭代:通过自我反馈机制迭代改进回答,提高回答质量和引用的完整性。

OpenScholar 的技术原理

  • 数据存储(OpenScholar Datastore):包含超过4500万篇科学论文及其对应的2.37亿段落嵌入,为检索提供基础数据。
  • 专门化的检索器和重排器:针对科学文献数据存储训练的检索器和重排器,用于识别和排序相关文献段落。
  • 8B参数语言模型:一个为科学文献合成任务优化的8B参数大型语言模型,平衡性能和计算效率。
  • 自我反馈生成:在推理时,基于自然语言反馈迭代细化模型输出,每次迭代可能涉及额外的文献检索,改善回答质量并填补引用空白。
  • 迭代检索增强:在生成初始回答后,模型生成反馈,指导进一步的检索,以迭代方式改进回答,直到所有反馈都被处理。

如何运行 OpenScholar

安装环境

首先,确保所有必要的库已安装:

conda create -n os_env python=3.10.0
conda activate os_env
pip install -r requirements.txt
python -m spacy download en_core_web_sm

设置API密钥:

export S2_API_KEY=YOUR_S2_API_KEY
export YOUR_API_KEY=YOUR_YOU_COM_API_KEY

运行推理

使用OpenScholar进行推理的示例代码如下:

python run.py \
    --input_file YOUR_INPUT_FILE \
    --model_name OpenScholar/Llama-3.1_OpenScholar-8B \
    --use_contexts \
    --output_file OUTPUT_FILE_PATH \
    --top_n 10 --llama3 --zero_shot

详细配置

  • top_n:输入到基础语言模型的段落数量,默认使用10个段落。
  • feedback:如果希望在生成过程中使用自我反馈循环,设置为true。
  • posthoc_at:如果希望运行事后引用归属,设置为true。
  • zero_shot:如果希望以零样本方式运行推理,设置为true。
  • ranking_ce:使用重排序模型对top_n段落进行重排序;如果未设置为true,则从提供的输入文件中的ctxs中获取top_n段落。
  • reranker:指定重排序模型文件的路径(本地或HF hub)。如果使用OpenScholar重排序器,设置为OpenScholar/OpenScholar_Reranker
  • min_citation:可以设置最小引用数。如果给定一个整数,我们将排除引用数低于min_citation的论文。默认设置为None,所有论文均被考虑,无论其引用数。
  • ss_retriever:在反馈生成循环中使用语义学者API来增强反馈结果。
  • use_abstract:考虑摘要以增强重排序结果。
  • max_per_paper:设置在推理时从同一篇论文中使用的最大段落数。
  • task_name:指定任务名称,当运行单篇论文任务时。对于SciFact、PubmedQA和QASA,相应的任务名称分别是claim_fullboolean_question_fullsingle_qa

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦