Decker-Compose를 사용하여 로컬로 실행하는 Demo LLM (Rag Pipeline) 웹 앱. LLM 및 임베딩 모델은 OpenAI의 서비스로 소비됩니다.
주요 목표는 사용자가 "컴퓨터 프로그래머가 LASIK를 얻는 데 금기 사항이 있습니까?" 와 같은 LASIK 수술과 관련된 질문을 할 수 있도록하는 것입니다.
검색 증강 생성 (RAG) 파이프 라인은 데이터 세트에서 최신 정보를 검색하여 사용자 쿼리에 대한 정확하고 관련성있는 응답을 제공합니다.
앱 아키텍처는 다음과 같습니다.

시퀀스 다이어그램 :
시퀀스 인디 아그램
사용자->> langserve API : 쿼리
사용자의 권리에 주목하십시오 : 컴퓨터 프로그래머 <br/>에 대한 금기 사항 <br/>가 있습니까?
Langserve API- >> OpenAi 임베딩 : 사용자 쿼리
Openai Embeddings- >> langserve API : 포함
langserve api- >> milvusdb : 문서 검색 (벡터 검색)
MILVUSDB- >> LANGSERVE API : 관련 문서
Langserve API의 오른쪽 참고 : 프롬프트 <br/> 엔지니어링 ...
Langserve API- >> Openai LLM : 풍부한 프롬프트
Openai LLM- >> langserve API : 생성 된 답변
UX :

App Docker 이미지 빌드 :
make app-buildOpenAI API 키를 환경 변수로 설정하십시오
export OPENAI_API_KEY= < your-api-key >스핀 업 밀버 DB :
make db-upLasik 눈 수술 합병증 데이터 세트로 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 (Laser Eye Surgery)에서 출처 합병증 (Kaggle)

Milvus는 Zilliz가 개발 한 오픈 소스 벡터 데이터베이스 엔진으로, 임베딩, 기능 및 고차원 데이터와 같은 대규모 벡터 데이터를 저장하고 관리하도록 설계되었습니다. 벡터 유사성 검색 작업을 위한 효율적인 스토리지, 인덱싱 및 검색 기능을 제공합니다.

Langchain은 LLM 오케스트레이션 도구이며 컨텍스트 인식 LLM 앱을 구축해야 할 때 매우 유용합니다.
LLM에 대한 컨텍스트를 제공하려면 프롬프트 템플릿으로 원본 질문을 래핑해야합니다.

UX에서 "중간 단계"를 클릭하여 LLM이 실제로받은 프롬프트를 확인할 수 있습니다.

Langserve는 개발자가 Langchain Runnables 및 체인을 REST API로 배치하도록 도와줍니다. 이 라이브러리는 Fastapi와 통합되어 있습니다.
챗봇은 통계와 관련된 질문에 대답 할 수 없습니다. 예를 들어 "Lasik 수술 합병증의 최근 트렌드가 있습니까?" , 문서를 검색하기 위해 고려해야 할 관련 시간 창을 유추 하고이 시간 창으로 최종 프롬프트를 풍부하게하는 다른 모델이 있어야합니다.
Langsmith와의 알고리즘 피드백. 이를 통해 LLM 체인의 견고성을 자동화 된 방식으로 테스트 할 수 있습니다.