ReadReview / README.md
root
add_function_pmids_retrieval_and_ref_ench_sent
73386d5
|
raw
history blame
8.21 kB
metadata
title: 文献综述助手 (又名不想看文献)
emoji: 📚
colorFrom: blue
colorTo: indigo
python_version: 3.10.13
sdk: gradio
sdk_version: 4.25.0
app_file: app.py
pinned: false

MedicalReviewAgent 不想看文献

项目概述

  • 整一个帮我写综述的Agent,希望他能完成文献内容的收集,文本分类和总结,科学事实对比,撰写综述等功能
  • 计划用到RAG, function calling等技术
  • 还在不断摸索中,欢迎大佬指导!
  • huggingface 体验链接, zeroGPUs 比较吝啬 我把本地推理给阉割了 不要用本地模型哈 用API 用本地模型会报错

流程图

基本上就是在上海AIlab的茴香豆上面改的 这里主要讲解使用流程 架构和茴香豆一样 茴香豆架构

文献库和知识库构建

image

人机合作写文章

image

功能

  1. 模型服务配置

    • 远程模型选择:允许用户选择使用远程大模型或本地模型。提供多种大模型提供商选择,如kimi、deepseek、zhipuai、gpt。
  2. 文献查找+数据库生成

    • 文献查找
      • 用户可以输入感兴趣的关键词,设置查找数量,并进行PubMed PMC文献查找。
      • 支持用户上传已有的PDF文献文件,可处理复杂PDF结构。
    • 文献库管理
      • 支持删除现有文献库。
      • 提供文献库概况的实时更新。
    • 数据库生成
      • 用户可以设置块大小用于构建数据库
      • 用户可以设置聚类数量用于文本聚类
    • 数据库管理
      • 支持生成新的数据库,删除现有数据库,并查看数据库概况。
  3. 写综述

    • 抽样标注文章聚类
      • 用户可以选择特定的块大小和聚类数,设置抽样标注比例,并开始标注过程。
    • 获取灵感
      • 基于标注的文章聚类,大模型提供灵感,帮助用户生成综述所需的问题框架。
    • 综述生成
      • 用户可以输入想写的内容或主题,点击生成综述按钮,系统将自动生成综述文本并提供参考文献。

亮点

  1. 高效的文献查找和管理

    • 通过关键词快速查找相关文献,支持上传已有PDF文献,方便文献库的构建和管理。
  2. 灵活的数据库生成

    • 提供灵活的数据库生成参数设置,支持多次生成和更新数据库,保证数据的及时性和准确性。
  3. 智能的综述生成

    • 基于先进的大模型技术,提供自动化的文章聚类标注和灵感生成功能,帮助用户快速生成高质量的综述文本。
  4. 用户友好界面

    • 直观的操作界面和详细的使用指导,让用户能够轻松上手和使用各项功能。
  5. 远程和本地模型支持

    • 支持多种大模型提供商的选择,满足不同用户的需求,无论是本地模型还是远程大模型,都能灵活配置和使用。

安装运行

新建conda环境

conda create --name ReviewAgent python=3.10.14
conda activate ReviewAgent

拉取github仓库

git clone https://github.com/jabberwockyang/MedicalReviewAgent.git
cd MedicalReviewAgent
pip install -r requirements.txt

huggingface-cli下载模型(optional, 第一次调用的时候hf会下载,但是可能有墙)

cd /root && mkdir models
cd /root/models
# login required
huggingface-cli download Qwen/Qwen1.5-7B-Chat --local-dir /root/models/Qwen1.5-7B-Chat
huggingface-cli download maidalun1020/bce-embedding-base_v1 --local-dir /root/models/bce-embedding-base_v1
huggingface-cli download maidalun1020/bce-reranker-base_v1 --local-dir /root/models/bce-reranker-base_v1

启动服务

conda activate ReviewAgent
cd MedicalReviewAgent
python3 app.py --model_downloaded True # 如果已经在/root/models下载了模型 这个参数会换一个配置文件,里面的modelpath是本地路径不是hf的仓库路径 自己显卡跑跑用这个
python3 app.py # 如果不打算用本地/root/models储存的模型 这是hf的spaces的构建配置

gradio在本地7860端口运行

技术要点

基于茴香豆加了几个功能

  1. 本地和远程模型灵活配置

    • 本地模型是qwen1.5 7b chat
    • 用户也可以在前端界面填写自己的API,本地远程模型任意切换
  2. 文献搜索和文本清洗

    • 用户键入文献检索关键词,自动从PubMed公开数据库上搜索并下载文献全文
    • xml到txt的文本清洗,去除reference 等无关信息
  3. 基于Ragflow的deepdoc库的PDF识别

    • 输出文献中的文字和表格,其中文字存储为 txt, 表格存储为图片,json, html三个格式
    • 目前工作流中仅利用文字,表格数据的利用开发中
  4. chunk size可调的数据库生成

    • default 1024 ref
  5. 嵌入kmeans聚类

    • 基于Faiss库
    • k可调
  6. 基于LLM的聚类内容标注

    • 为节省算力,可以抽样标注
    • 标注后本地储存避免重复标注
  7. 基于LLM的子问题生成

    • 聚类标注内容作为context,生成对应的子问题
  8. 基于LLM的综述生成

    • 输入可以是用户自己的问题,也可以参考之前llm生成的子问题
    • 为了比较同一个科学问题的不同来源的观点,修改了一部分茴香豆的Retriever逻辑
      • retreiver 优化 ref
      • 返回topk =10的分段
      • 由于LLM捞针能力在头尾两端较靠谱,用langchain_community.document_transformers.LongContextReorder 将相关性较高的文本分布在头尾两端
  9. gradio前端

TODO

  1. 自然语言到文献搜索参数的functional call功能
    • 比如:
      • 输入:帮我搜索近五年特应性皮炎相关的孟德尔随机化文章,不要综述
      • 输出:
           {"keywords":["atopic dermatitis","mendelian randomisation"],
            "min-year":2019,
            "max-year":2024,
            "include-type":null,
            "exclude-type":"review"
            }
        
  2. 摸索适用于不同需求的chunk size和 k值
    • 比方说用来找某个实验方法用多大浓度的试剂,和总结某研究领域的前沿进展所用到的chunksize应该是不一样的吧🤔
    • 后者的大小其实取决于前者叭🤔
  3. 表格数据利用

感谢

  1. 茴香豆
  2. E-utilities
  3. Ragflow
  4. Advanced RAG pipeline