Aplicación web Demo LLM (RAG Pipeline) que se ejecuta localmente usando Docker-Compose. Los modelos LLM y la incrustación se consumen como servicios de OpenAI.
El objetivo principal es permitir a los usuarios hacer preguntas relacionadas con la cirugía LASIK, como "¿Existe una contraindicación para que los programadores de computadoras obtengan LASIK?"
La tubería de generación aumentada de recuperación (RAG) recupera la información más actualizada del conjunto de datos para proporcionar respuestas precisas y relevantes a las consultas de los usuarios.
La arquitectura de la aplicación se presenta a continuación:

Diagrama de secuencia:
secuencediagram
Usuario->> API de Langserve: consulta
Nota Derecho del usuario: ¿Existe una contraindicación <br/> para que los programadores de computadoras <br/> obtengan LASIK?
API de Langserve->> incrustaciones de OpenAI: consulta de usuario
Incrustaciones de Operai->> API de Langserve: incrustación
API de Langserve->> MILVUSDB: Recuperación de documentos (búsqueda vectorial)
MILVUSDB->> API de Langserve: documentos relevantes
Nota Derecho de Langserve API: indicador <br/> Ingeniería ...
API de Langserve->> OpenAI LLM: aviso enriquecido
OPERAI LLM->> Langserve API: respuesta generada
UX:

Creación de la imagen de la aplicación Docker:
make app-buildEstablezca su tecla API OpenAI como variable de entorno
export OPENAI_API_KEY= < your-api-key >Gira Milvus DB:
make db-upPopular DB con el conjunto de datos de complicaciones de la cirugía ocular Lasik:
make db-populate
API de spin-up:
make app-run
El chatbot ahora está disponible en http: // localhost: 8000/lasik_complications/parqueador/
Muestre todos los comandos disponibles con:
make help 
Limpiar
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
Obtenido de complicaciones de Lasik (cirugía ocular láser) (Kaggle)

Milvus es un motor de base de datos vectorial de código abierto desarrollado por Zilliz, diseñado para almacenar y administrar datos vectoriales a gran escala, como incrustaciones, características y datos de alta dimensión. Proporciona capacidades eficientes de almacenamiento, indexación y recuperación para tareas de búsqueda de similitud vectorial .

Langchain es una herramienta de orquestación LLM, es muy útil cuando necesita crear aplicaciones LLM conscientes de contexto.
Para proporcionar el contexto a la LLM, tenemos que envolver la pregunta original en una plantilla rápida

Puede verificar qué aviso realmente recibió el LLM haciendo clic en "Pasos intermedios" en el UX

Langserve ayuda a los desarrolladores a implementar Langchain Runnables y cadenas como API REST. Esta biblioteca está integrada con Fastapi.
El chatbot no puede responder preguntas relacionadas con las estadísticas, por ejemplo , "¿Hay tendencias recientes en las complicaciones de la cirugía de LASIK?" , debe haber otro modelo que inferja la ventana de tiempo relevante a considerar para recuperar los documentos y luego enriquecer el aviso final con esta ventana de tiempo.
Comentarios algorítmicos con Langsmith. Esto permitiría probar la robustez de la cadena LLM de manera automatizada.