📚🤖 S2QA:基于Semantic Scholar的研究论文问答系统
你是否曾想知道研究论文对你的疑问有何见解?Semantic Scholar问答系统结合GPT-4为你解答!🙌
这个Python脚本允许你输入问题,并利用Semantic Scholar和OpenAI的强大功能,基于顶级研究论文的内容生成答案。🤖🔍
🚀 最新更新!
- 支持Ollama。查看笔记本
- S2QA现已支持llama-index!在llama hub查看数据加载器
- 更新后的UI带有聊天界面:
- 保持上下文
- 仅显示使用的参考文献
- 每个研究领域只需索引一次;向量和索引会被缓存
- 全文支持!
💻 演示链接:
https://shauryr.github.io/s2qa-demo/
👏 致谢
本项目与Semantic Scholar团队合作开发。感谢他们的支持和反馈。
📘 笔记本
- ollama.ipynb ⭐ Ollama支持演示
- chat_qa.ipynb ⭐ 将上下文发送给ChatGPT(使用revChatGPT)以生成答案。这能得到最佳答案且免费。似乎比本仓库中其他管道更不容易产生幻觉。
- utils.py - 包含搜索和GPT-3提示所需的所有函数
- s2qa_sources_langchain.ipynb - 使用langchain mapreduce获得更好的答案,但成本很高。容易产生幻觉。
- s2qa_nb.ipynb - 第一个笔记本。非常基础的问答。容易产生幻觉。
🚨 警告 ⚠️
在使用生成式AI处理科学文本时应谨慎,因为此类模型生成的输出可能未经严格事实核查或同行评审,因此可能包含错误或不准确信息,可能误导研究人员和读者。请负责任地谨慎使用此工具。
🤖 示例
❓ 问题
Transformer对语言有什么影响?
🤖 ChatGPT回答:
Transformer在多个方面对语言产生了重大影响。其中最突出的领域是自然语言处理(NLP),Transformer基础语言模型的开发彻底revolutionized了这一领域。这些模型已被用于各种NLP任务,包括机器翻译[1]、代码摘要[2]、检测恩施和高傲的语言[3]以及口语理解任务[4]。 此外,基于变换器的模型已被证明在双向变换器的领域适应方面非常有效,多模态变换器模型已被用于图像描述任务,而预训练目标则被用于软件工程领域以提高代码相关任务的性能。另外,变换器还被用于将文档时间戳信息整合到语言模型中,这对下游分类任务和掩码语言建模产生了积极影响。
总的来说,变换器对语言领域产生了重大影响,特别是在自然语言处理领域,基于变换器的模型已被成功应用于多种任务。它们还被探索应用于软件工程和图像描述等其他领域,展示了这项技术的多功能性。
[1] 《从符号自然语言处理到双向编码器表示变换器的自然语言处理模型演变研究》 - 国际计算机科学工程与信息技术科学研究杂志,2021年
[2] 《代码摘要:变换器真的理解代码吗?》 - 2022年
[3] 《PALI-NLP在SemEval-2022任务4中的应用:使用变换器的判别性微调进行屈尊与居高临下语言检测》 - 国际语义评估研讨会,2022年
[4] 《法语口语理解任务中基于变换器模型的基准测试》 - Interspeech会议,2022年
[5] 《使用变换器对短文本文档分类进行时间语言建模》 - 计算机科学与信息系统会议,2022年
[6] 《通过变换器实现代码相关任务自动化:预训练的影响》 - ArXiv,2023年
[7] 《利用辅助数据和双向变换器进行攻击性语言检测》 - WOAH,2021年
[8] 《语言与视觉变换器看到了什么:语义信息对视觉表示的影响》 - 人工智能前沿,2021年
🤖 使用源文献和langchain mapreduce的回答
🧰 要求
- OpenAI API密钥(如果使用langchain)
- Semantic Scholar学术图谱API密钥 - https://www.semanticscholar.org/product/api
这些可以添加到constants.py中
主要的第三方包要求是tiktoken、openai、transformers和langchain。
要安装所有必需的包,请运行:
pip install -r requirements.txt
📍 流程
1️⃣ 搜索:我们首先搜索Semantic Scholar庞大且不断增长的数据库,以找到与您问题最相关和最新的论文和文章。 2️⃣ "重新排序":然后我们使用 SPECTER 对这些论文进行嵌入,并重新排序搜索结果,确保最具信息量和相关性的文章出现在搜索结果的顶部。
3️⃣ "回答":最后,我们利用 GPT-3 强大的自然语言处理能力,使用自定义提示生成对您问题的信息丰富且准确的答案,以确保最佳结果。
🖊️ 可定制
-
尝试在 huggingface 上使用其他开放嵌入方法,以获得更好的重新排序结果。
-
尝试其他提示或改进当前提示,以获得更好的回答。