概述:
该RAG对话机器人可利用Rag技术对使用者的提问生成答案,可以文字的形式回答提问者。同时,该机器人采用微软phi-3-small-128k-instruct的模型,其具有高性能,低延迟,低成本的特点。
模型选择:
此机器人采用微软的phi-3-small-128k-instruct模型,Phi-3模型支持不同长度的上下文窗口,其中Phi-3-mini是同类模型中首个支持最多128K令牌上下文窗口的模型。 该模型在Azure AI上利用部署-评估-微调工具链,以及在Ollama上提供本地运行支持。经过优化,支持跨平台的ONNX Runtime,并可在GPU、CPU甚至移动硬件上运行。 作为NVIDIA NIM微服务提供,具有标准API接口,可在任何地方部署,并针对NVIDIA GPU进行了优化
数据的构建:
数据向量化的意义在于它实现了一种可计算的表示方式来表达非结构化数据的语义信息。将非结构化数据映射到固定维度的向量空间中,使得机器可以“理解”这些数据的内在关联,并进行运算。例如,在向量空间中,语义相关的词语对应的向量之间距离较近,不相关词语距离较远。
数据向量化的详细过程请前往“代码实现”部分
实施步骤:
1.环境搭建
首先要安装Miniconda或Anaconda(点击跳转至官网),随后在Anaconda Powershell中依次输入并运行以下代码:
conda create --name ai_endpoint python=3.8
conda activate ai_endpoint
pip install langchain-nvidia-ai-endpoints
pip install jupyterlab
pip install langchain_core
pip install langchain
pip install matplotlib
pip install numpy
pip install faiss-cpu==1.7.2
pip install openai
jupyter-lab
2.代码实现
1.登录NVIDA NIAPI-Key,获取API-Key(不是无限次的,不要泄露给他人)
2.部分代码截图:
在NVAPI Key处输入你刚才获得的Key
接下来,程序会运行这段代码,然后列出可供选择的模型名称,您可以尝试不同的模型
列表中的部分模型:
这里,我们选用的是phi-3-small-128k-instruct模型,接下来,我们需要初始化SLM
运行完这段代码,它会对我们的问题(你是谁)做出回答
其他相关部分:
成果展示:
问题与分析:
问题:在准备环境时,因为各种原因,容易导致安装失败
措施:大部分的安装失败都与网络有关,建议大家使用清华的国内镜像网站进行下载,或者挂上梯子(梯子有风险,且不够稳定)
项目评估与未来:
此机器人虽然已经可以实现基本的文字问答,但功能还不够丰富,下一步可以继续引进Agent、语音问答等功能,或为其设计更加简洁,逻辑更加清晰的UI界面,使其拥有更高的实用价值
参考资料:
SLMs之Phi-3:Phi-3的简介、安装和使用方法、案例应用之详细攻略