Demo LLM (RAG Pipeline) แอปพลิเคชันเว็บที่ทำงานในพื้นที่โดยใช้ Docker-compose รุ่น LLM และการฝังจะใช้เป็นบริการจาก OpenAI
วัตถุประสงค์หลักคือเพื่อให้ผู้ใช้สามารถถามคำถามที่เกี่ยวข้องกับการผ่าตัดเลสิคเช่น "มีข้อห้ามสำหรับโปรแกรมเมอร์คอมพิวเตอร์เพื่อรับเลสิคหรือไม่"
การเรียกคืนการเพิ่มขึ้นไปป์ไลน์ (RAG) จะดึงข้อมูลที่ทันสมัยที่สุดจากชุดข้อมูลเพื่อให้การตอบกลับที่ถูกต้องและเกี่ยวข้องกับการสืบค้นผู้ใช้
สถาปัตยกรรมแอพนำเสนอด้านล่าง:

แผนภาพลำดับ:
ลำดับ
ผู้ใช้->> Langserve API: Query
หมายเหตุด้านขวาของผู้ใช้: มีข้อห้าม <br/> สำหรับโปรแกรมเมอร์คอมพิวเตอร์ <br/> เพื่อรับเลสิคหรือไม่?
Langserve API->> openai embeddings: ผู้ใช้แบบสอบถาม
Openai Embeddings->> Langserve API: Embedding
Langserve API->> milvusdb: การดึงเอกสาร (ค้นหาเวกเตอร์)
MILVUSDB->> Langserve API: เอกสารที่เกี่ยวข้อง
หมายเหตุด้านขวาของ Langserve API: Pretp <br/> วิศวกรรม ...
langserve api->> openai llm: พรอมต์เสริม
openai llm->> langserve api: คำตอบที่สร้างขึ้น
UX:

สร้างภาพแอพ Docker Image:
make app-buildตั้งค่าคีย์ OpenAI API ของคุณเป็นตัวแปรสภาพแวดล้อม
export OPENAI_API_KEY= < your-api-key >หมุน Milvus DB:
make db-upเติมฐานข้อมูลด้วยชุดข้อมูลภาวะแทรกซ้อนของการผ่าตัดตาด้วยเลสิค: ชุดข้อมูล:
make db-populate
Spin-up API:
make app-run
ตอนนี้ chatbot มีให้ที่ 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
มาจากภาวะแทรกซ้อนจากเลสิค (เลเซอร์ตา) (Kaggle)

Milvus เป็นเครื่องมือฐานข้อมูลเวกเตอร์โอเพ่นซอร์สที่พัฒนาโดย Zilz ซึ่งออกแบบมาเพื่อจัดเก็บและจัดการข้อมูลเวกเตอร์ขนาดใหญ่เช่น Embeddings คุณสมบัติและข้อมูลมิติสูง ให้ความสามารถในการจัดเก็บข้อมูลการจัดทำดัชนีและการดึงข้อมูลที่มีประสิทธิภาพสำหรับ งานค้นหาที่คล้ายคลึงกันของเวกเตอร์

Langchain เป็นเครื่องมือ orchestration LLM มันมีประโยชน์มากเมื่อคุณต้องการสร้างแอพ LLM ที่รับรู้บริบท
เพื่อให้บริบทกับ LLM เราต้องสรุปคำถามดั้งเดิมในเทมเพลตพรอมต์

คุณสามารถตรวจสอบสิ่งที่พรอมต์ LLM ได้รับจริงโดยคลิกที่ "ขั้นตอนกลาง" ใน UX

Langserve ช่วยให้นักพัฒนาปรับใช้ Langchain Runnables และโซ่เป็น REST API ห้องสมุดนี้รวมเข้ากับ fastapi
chatbot ไม่สามารถตอบคำถามที่เกี่ยวข้องกับสถิติได้เช่น "มีแนวโน้มล่าสุดในภาวะแทรกซ้อนการผ่าตัดด้วยวิธีการผ่าตัดด้วยวิธีการผ่าตัดด้วยวิธีการผ่าตัดด้วยวิธีการผ่าตัดด้วยวิธี ควรมีรูปแบบอื่นที่ทำให้หน้าต่างเวลาที่เกี่ยวข้องพิจารณาสำหรับการเรียกคืนเอกสารแล้วเสริมสร้างพรอมต์สุดท้ายด้วยหน้าต่างเวลานี้
ข้อเสนอแนะอัลกอริทึมกับ Langsmith สิ่งนี้จะช่วยให้สามารถทดสอบความทนทานของห่วงโซ่ LLM ในแบบอัตโนมัติ