InduQuest: 基于大语言模型与RAG技术的工业基础知识问答助手
InduQuest: 基于大语言模型与RAG技术的工业基础知识问答助手
在工业领域,知识的获取和应用至关重要。为了提高技术人员和工程师在日常工作中获取准确信息的效率,我们开发了一个名为 InduQuest 的工业基础知识问答助手。该系统创新性地将大语言模型(LLM)与检索增强生成(RAG)技术相结合,旨在提供高效、精准的工业知识问答服务。
项目概述
InduQuest 结合了大语言模型的自然语言处理能力和RAG技术的高效检索功能,专注于处理复杂的工业技术内容。通过这一技术融合,InduQuest 不仅提升了对工业知识的解析能力,还极大地提高了从海量文献中提取关键信息的效率。这一工具为工业领域的知识获取和应用提供了全新的方法和视角。
技术方案与实施步骤
模型选择
我们选择了Phi-3-mini模型,这一模型因其参数较少而具备更强的可部署性和更快的推理速度,适合在不同端侧设备上运行。该模型可以通过Ollama、LM Studio、LlamaEdge等工具进行调用,并且支持在CPU、NPU、GPU等多种加速设备上进行运算。此外,我们还结合了RAG技术,进一步增强了检索结果的准确性。
数据的构建
为了实现高效的工业知识问答功能,我们从大量工业文献中收集了丰富的文本数据。经过清洗和分词处理,确保数据的质量和一致性。接着,我们使用预训练语言模型(如BERT或GPT)将文本转化为高维向量,以捕捉其语义信息,并构建了一个基于向量检索的高效数据库(如FAISS)。这一数据库可以快速检索和查询最相关的工业知识段落,确保生成模块能够提供符合实际需求的高质量回答。
实施步骤
环境搭建
- 注册 NIM:访问 https://build.nvidia.com/explore/discover 并完成注册。
- 安装 Python 3.10.x+:下载 Anaconda(https://www.anaconda.com/products/distribution)。
- 配置环境变量:在系统中添加 Anaconda 安装目录下的 Scripts 文件夹路径至PATH变量中。
- 检查安装:在Terminal中输入
conda --version
检查 Conda 是否正确安装。 - 建立并激活虚拟环境:运行
conda create -n ai-agent
创建虚拟环境,并使用conda activate ai-agent
激活。 - 安装 .NET 8:下载并安装 .NET 8(https://dotnet.microsoft.com/)。
- 安装 Visual Studio Code 及其插件:包括.NET Extension Pack、Python、Jupyter等。
- 安装 Python 库 Jupyter Notebook:运行
pip install jupyter
并在终端中输入jupyter notebook
启动。 - 安装 NVIDIA 的 AI Foundation Endpoints 库:运行
pip install --upgrade --quiet langchain-nvidia-ai-endpoints
安装。
代码实现
关键代码实现步骤如下:
# 使用Nvidia Api Key
import getpass
import os
if os.environ.get("NVIDIA_API_KEY", "").startswith("nvapi-"):
print("Valid NVIDIA_API_KEY already in environment. Delete to reset")
else:
nvapi_key = getpass.getpass("NVAPI Key (starts with nvapi-): ")
assert nvapi_key.startswith("nvapi-"), f"{nvapi_key[:5]}... is not a valid key"
os.environ["NVIDIA_API_KEY"] = nvapi_key
from langchain_nvidia_ai_endpoints import ChatNVIDIA
ChatNVIDIA.get_available_models()
# 初始化SLM, 使用phi-3-small-128k-instruct
llm = ChatNVIDIA(model="ai-phi-3-small-128k-instruct", nvidia_api_key=nvapi_key, max_tokens=512)
result = llm.invoke("Describe the key differences between AC and DC motors.")
print(result.content)
# 初始化Embedding Model, 使用ai-embed-qa-4向量模型
from langchain_nvidia_ai_endpoints import NVIDIAEmbeddings
embedder = NVIDIAEmbeddings(model="ai-embed-qa-4")
# 获取文本数据集
import os
from tqdm import tqdm
from pathlib import Path
ps = os.listdir("./industrial_data/")
data = []
sources = []
for p in ps:
if p.endswith('.pdf'):
path2file="./industrial_data/"+p
with open(path2file, encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
if len(line) >= 1:
data.append(line)
sources.append(path2file)
# 后处理
documents = [d for d in data if d != '\n']
len(data), len(documents), data[0]
# 测试与调优
我们通过设计和执行多个测试用例,确保系统在不同的使用场景下都能表现出色。性能调优也在测试过程中进行,以提升响应速度和准确性。
# 集成与部署
说明各模块的集成方法及如何将系统部署到实际运行环境中。
# 项目成果与展示
## 应用场景展示(必写)
InduQuest 系统可应用于多个场景:
1. **技术支持**:帮助工程师或技术人员快速获取关于工业设备、工艺流程和技术标准的准确信息,支持快速且准确的决策。
2. **员工培训**:在企业培训中作为知识问答助手,帮助新员工快速了解行业基础知识和企业规范,提高培训效率。
3. **客户服务**:集成到客户支持平台中,为客户提供即时的技术咨询,帮助解决产品或技术中的常见问题。
## 功能演示
系统能够通过用户输入的查询,快速检索和整合相关工业文献,生成准确的技术知识回答。用户输入关于某种设备操作步骤的问题,系统将提供详细且准确的操作指南。功能演示将附上用户查询界面和系统回答的截图,展示从输入问题到生成回答的完整过程。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/034aa1a4867e4d7cafb87d5e9723209b.png#pic_center)
# 项目总结
InduQuest 是一款高效、精准的工业基础知识问答助手,凭借其先进的技术,能够极大提升工业领域知识获取的效率和质量。期待通过该工具,推动工业技术人员的知识应用和决策过程迈上新的台阶。