Knowledge-QA-LLM: 基于本地知识库+LLM的开源问答系统

⚠️注意:后续更新,请移步README

Knowledge QA LLM

SemVer2.0

  • 基于本地知识库+LLM的问答系统。该项目的思路是由langchain-ChatGLM启发而来。
  • 缘由:
  • 优势:
    • 整个项目为模块化配置,不依赖lanchain库,各部分可轻易替换,代码简单易懂。
    • 除需要单独部署大模型接口外,其他部分用CPU即可。
    • 支持常见格式文档,包括txt、md、pdf, docx, pptx, excel等等。当然,也可自定义支持其他类型文档。
TODO
  • 完善解析office文档接口及单元测试
  • 完善PDF提取接口及单元测试
  • 完善图像内容提取接口及单元测试
  • 完善LLM接口
  • 完善UI
  • 合并基于关键词搜索和基于向量搜索两种方法
整体流程
  • 解析文档并存入数据库
    ExtractText
    Embedding
    Store
    文档
    sentences
    Embeddings
    DataBase
  • 检索并回答问题
    Embedding
    Search
    Query
    Embeddings
    Database
    Context
    Prompt
    LLM
    Answer
使用
  1. 下载和部署模型

    1. 下载moka-ai/m3e-small模型,放到assets/models/m3e-small目录下,用于向量化文本内容。
    2. 单独配置好chatglm2-6b的接口,接口启动参考:ChatGLM2-6B API。具体使用方式可参考:knowledge_qa_llm/llm/chatglm2_6b.py
    3. 将部署好的llm_api写到配置文件knowledge_qa_llm/config.yaml中的llm_api_url字段下。
  2. 安装运行环境

    pip install -r requirements.txt --no-cache-dir
    
  3. 运行

    streamlit run webui.py
    
  4. UI Demo

  5. CLI Demo

🛠 所用工具
📂 文件结构
.
├── assets
│   ├── db                  # 存放向量数据库
│   ├── models              # 放置提取embedding的模型
│   └── raw_upload_files
├── knowledge_qa_llm
│   ├── __init__.py
│   ├── config.yaml         # 配置文件
│   ├── file_loader         # 处理各种格式的文档
│   ├── llm                 # 大模型接口,大模型需要单独部署,以接口方式调用
│   ├── utils
│   └── vector_utils        # embedding的存取和搜索
├── LICENSE
├── README.md
├── requirements.txt
├── tests
├── cli.py
└── webui.py                # 基于streamlit的UI实现
更新日志
  • 2023-07-29 v0.0.4 update:
    • 基于streamlit==1.25.0优化UI
    • 优化代码
    • 录制UI GIF demo
  • 2023-07-28 v0.0.3 update:
    • 完成文件解析部分
  • 2023-07-25 v0.0.2 update:
    • 规范现有目录结构,更加紧凑,提取部分变量到config.yaml
    • 完善说明文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值