Demo LLM(RAG Pipeline)使用Docker-Compose在本地运行的Web应用程序。 LLM和嵌入模型被用作OpenAI的服务。
主要目的是使用户能够提出与LASIK手术有关的问题,例如“计算机程序员有lasik的禁忌症吗?”
检索增强生成(RAG)管道从数据集检索最新信息,以提供对用户查询的准确和相关的响应。
应用程序架构如下:

序列图:
测序图
用户 - >> Langserve API:查询
注意用户的权利:是否有禁忌症<br/>供计算机程序员<br/>获得LASIK?
Langserve API- >> OpenAI嵌入:用户查询
OpenAI嵌入 - >> Langserve API:嵌入
Langserve API- >> MILVUSDB:文档检索(向量搜索)
MILVUSDB - >> Langserve API:相关文件
注意Langserve API的右:提示<br/>工程...
Langserve API- >> OpenAi LLM:富集提示
Openai LLM- >> Langserve API:生成的答案
ux:

构建应用Docker映像:
make app-build将OpenAI API密钥设置为环境变量
export OPENAI_API_KEY= < your-api-key >旋转Milvus DB:
make db-up带有LASIK眼科手术并发症数据集的DB填充DB:
make db-populate
旋转API:
make app-run
现在可以通过http:// localhost提供聊天机器人:8000/lasik_complications/playground/
显示所有可用命令:
make help 
清理
make clean ├── .github
│ ├── workflow
│ │ └── cicd.yml <- CI pipeline definition
├── data
│ └── laser_eye_surgery_complications.csv <- Kaggle dataset
|
├── docs
│ ├── diagrams <- Folder containing diagram definitions
│ └── img <- Folder containing screenshots
│
├── src
│ ├── config.py <- Config file with service host/ports or models to be used
│ ├── populate_vector_db.py <- Scripts that converts texts to embeddings and populates Milvus DB
│ └── server.py <- FastAPI/Langserve/Langchain
│
├── .gitignore
├── .pre-commit-config.yaml <- ruff linter pre-commit hook
├── docker-compose.yml <- container orchestration
├── Dockerfile <- App image definition
├── Makefile <- Makefile with commands like `make app-build`
├── poetry.lock <- Pinned dependencies
├── pyproject.toml <- Dependencies requirements
├── README.md <- The top-level README for developers using this project.
└── ruff.toml <- Linter config
来自LASIK(激光眼科手术)并发症(Kaggle)

Milvus是由Zilliz开发的开源矢量数据库引擎,旨在存储和管理大规模矢量数据,例如嵌入,功能和高维数据。它为向量相似性搜索任务提供有效的存储,索引和检索功能。

Langchain是LLM编排工具,当您需要构建上下文感知的LLM应用程序时,它非常有用。
为了向LLM提供上下文,我们必须将原始问题包裹在及时的模板中

您可以通过单击UX中的“中间步骤”来检查LLM实际收到的提示

Langserve帮助开发人员将Langchain Runnables和链条作为REST API部署。该库与FastApi集成在一起。
聊天机器人无法回答与统计数据有关的问题,例如“ Lasik手术并发症最近是否有任何趋势?” ,应该有另一种模型来渗透相关的时间窗口,以考虑检索文档,然后用这个时间窗口丰富最终提示。
Langsmith的算法反馈。这将允许以自动化方式测试LLM链的鲁棒性。