当前位置: 首页 > java >正文

【NLP实践】三、LLM搭建中文知识库:提供RestfulAPI服务

目录

  • 前言
    • 准备工作
    • 使用
      • 结构目录
      • 启动
    • 验证
    • 使用方式二:调用API方式

前言

使用场景:因为在公司中,甲方都是同公司的其他部门,或者是大领导单线提出,在需求管理、型号配置、功能配置等等数据都非常多、杂,难以维护。我们无法要求甲方/领导提供完整的零散需求的需求文档,只能由项目经理或者开发来共同维护。这些数据只能以内网知识库的形式提供给适配人员或者相关人员去查询。
使用模型:
1、编码器:moka-ai/m3e-large
2、向量数据库:FAISS
3、LLM:Qwen/Qwen2-1.5B(本机使用,如果GPU服务器,那么你可以选个性能高的,改个名就行)
如果有问题提issue

准备工作

请确保你已经安装并配置好了conda

下载项目

git clone https://github.com/zpskt/MultiModelNLP.git
cd MultiModelNLP

创建conda环境

conda create -n llm-faiss --override-channels -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ python=3.9

安装依赖

conda activate sentiment
pip install -r src/llm/requirements.txt
#pip install -r src/llm/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

配置环境变量访问镜像huggingface模型
Linux/Mac

export HF_ENDPOINT=https://hf-mirror.com

你也可以添加到bash中

vim ~/.zshrc  # linux为 vim ~/.bashrc

在这里插入图片描述

使用

结构目录

你需要了解每个文件和文件夹都是做什么的,这样才能后续调试。


│   ├── llm
│   │   ├── api.py
│   │   ├── document_loader.py
│   │   ├── main.py
│   │   ├── qa_system.py
│   │   └── processed_files.json

README.md - 项目说明文档
document_loader.py - 文档加载和处理模块
main.py - 主程序入口
qa_system.py - 问答系统实现模块
api.py - api服务模块
processed_files.json - 已处理的文件列表
doc_file: 这里放知识库源文档
faiss_index: 向量保存路径
在这里插入图片描述

启动

执行主函数,生成文档向量

python main.py

在这里插入图片描述
执行main函数后,会将doc_file文档下的所有文件加载到faiss中,并且会在命令行中提供一个演示对话框,演示问答。
在这里插入图片描述
可以看到问答系统已经知道我们的意思并且答出相应的问题了。

启动RestfulAPI服务(必须faiss已经生成向量后)

cd src/llm
python api.py

启动后正常应该如下图所示
在这里插入图片描述

在这里插入图片描述

验证

python test/test_app.py

在这里插入图片描述
可以看到接口已经调用成功

使用方式二:调用API方式

阿里云提供了api形式调用API,
使用方式如下:
在文件QASystem的初始化方式用,设置use_api为True,
ApiKey要去https://dashscope.console.aliyun.com/overview 获取。
获取完后,加入到环境变量,或者在代码中明写出来。
在这里插入图片描述
这样就可以通过访问api的形式使用大模型了,文档索引还是保存本地,依然能够保证数据的安全。

http://www.xdnf.cn/news/16452.html

相关文章:

  • 解决GoLand运行go程序报错:Error: Cannot find package xxx 问题
  • 3.JDK+JRE组件构成与协作
  • Qt 窗口 工具栏QToolBar、状态栏StatusBar
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现标签条码一维码的检测(C#代码,UI界面版)
  • 基于Django的天气数据可视化分析预测系统
  • 背包DP之多重背包
  • python 阿里云 安装 dashscope的简介、安装
  • 【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
  • 算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现
  • bash的特性-bash中的引号
  • 力扣131:分割回文串
  • 智能化设备健康管理:中讯烛龙预测性维护系统引领行业变革
  • 零基础,如何入手学习SAP?
  • ASP.NET Core 高并发万字攻防战:架构设计、性能优化与生产实践
  • OpenLayers 综合案例-地图绘制
  • 使用低级上位画图法理解在对磁盘空间进行容量分配时【低级单位上位至高级单位的换算】
  • 【论文阅读】ON THE ROLE OF ATTENTION HEADS IN LARGE LANGUAGE MODEL SAFETY
  • Flutter开发实战之CI/CD与发布流程
  • Unity SMAA
  • 结合Golang语言说明对多线程编程以及 select/epoll等网络模型的使用
  • 携带参数的表单文件上传 axios, SpringBoot
  • 从零开始:Coze Studio开源版部署全记录(win11)
  • 设计模式(六)创建型:单例模式详解
  • C#中Visual Studio平台按照OfficeOpenXml步骤
  • HAProxy 实验指南:从零开始搭建高可用负载均衡系统
  • Reeden:跨平台 AI 电子书阅读器
  • C 与 C++ 的区别:发展、特性及优缺点详解
  • 使用Netty搭建一个网络聊天室
  • VS Code + LaTeX 绘制电气图完全指南(含 PlantUML 样式参考)
  • 2025年全国青少年信息素养大赛Scratch算法创意实践挑战赛 小低组 初赛 真题