- Python 3.8 trở lên, khuyến nghị version 3.8.18 (Tải tại: https://www.python.org/downloads/)
 - Docker Desktop (Tải tại: https://www.docker.com/products/docker-desktop/)
 - OpenAI API key (Đăng ký tại: https://platform.openai.com/api-keys)
 - Khoảng 4GB RAM trống
 
- Khuyến nghị dùng python version 3.8.18.
 - Nên dùng conda, setup environment qua câu lệnh: conda create -n myenv python=3.8.18
 - Sau đó active enviroment qua câu lệnh: conda activate myenv
 - Mở Terminal/Command Prompt và chạy lệnh sau:
- pip install -r requirements.txt
 
 
- Truy cập: https://ollama.com/download
 - Chọn phiên bản phù hợp với hệ điều hành
 - Cài đặt theo hướng dẫn
 - Chạy lệnh: ollama run llama2
 
- Khởi động Docker Desktop
 - Mở Terminal/Command Prompt, chạy lệnh: docker compose up --build
 
Option: Cài đặt attu để view data đã seed vào Milvus:
- Chạy lệnh: docker run -p 8000:3000 -e MILVUS_URL={milvus server IP}:19530 zilliz/attu:v2.4
 - 2 Thay "milvus server IP" bằng IP internet local, cách lấy IP local:
- Chạy lệnh: ipconfig hoặc tương tự với các hệ điều hành khác
 
 
- Tạo file 
.env - Truy cập OpenAI để lấy OPENAI_API_KEY:https://platform.openai.com/api-keys
 - Thêm API key vào file .env:
 
- OPENAI_API_KEY=sk-your-api-key-here
 
Options: Cấu hình Langsmith:
- Truy cập langsmith để lấy LANGCHAIN_API_KEY: https://smith.langchain.com/
 - Thêm 4 dòng sau vào .env:
 
- LANGCHAIN_TRACING_V2=true
 - LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
 - LANGCHAIN_API_KEY="your-langchain-api-key-here"
 - LANGCHAIN_PROJECT="project-name"
 
- Crawl data về local
Mở Terminal/Command Prompt, di chuyển vào thư mục src  
cd srcvà chạy: 
python crawl.py- Seed data vào Milvus:
 
python seed_data.py(Kiểm tra data đã aào Milvus chưa bằng cách truy cập: http://localhost:8000/#/databases/default/colletions
<Nhớ để ý docker run -p 8000:3000 -e MILVUS_URL={milvus server IP}:19530 zilliz/attu:v2.4 để chắc chắn Milvus đang hoạt động >)
3. Run ứng dụng:
streamlit run main.py- Đảm bảo Docker Desktop đang chạy
 - Đảm bảo Ollama đang chạy với mô hình llama2
 - Mở Terminal/Command Prompt, di chuyển vào thư mục src
 - Chạy lệnh: 
streamlit run main.py 
Cách 1: Từ file JSON local
- Chọn tab "File Local" ở thanh bên
 - Nhập đường dẫn thư mục chứa file JSON (mặc định: data)
 - Nhập tên file JSON (mặc định: stack.json)
 - Nhấn "Tải dữ liệu từ file"
 - Đợi hệ thống xử lý và thông báo thành công
 
Cách 2: Từ URL
- Chọn tab "URL trực tiếp" ở thanh bên
 - Nhập URL cần crawl dữ liệu
 - Nhấn "Crawl dữ liệu"
 - Đợi hệ thống crawl và xử lý dữ liệu
 
- Nhập câu hỏi vào ô chat ở phần dưới màn hình
 - Nhấn Enter hoặc nút gửi để gửi câu hỏi
 - Chatbot sẽ:
- Tìm kiếm thông tin liên quan trong cơ sở dữ liệu
 - Kết hợp kết quả từ nhiều nguồn
 - Tạo câu trả lời dựa trên ngữ cảnh
 
 - Lịch sử chat sẽ được hiển thị ở phần chính của màn hình
 
- Theo dõi trạng thái kết nối Milvus ở thanh bên
 - Kiểm tra số lượng documents đã được tải
 - Xem thông tin về mô hình đang sử dụng
 
- Lỗi: 
ModuleNotFoundError - Cách xử lý: Chạy lại lệnh pip install cho thư viện bị thiếu
 
- Lỗi: Không kết nối được Milvus
 - Cách xử lý:
- Kiểm tra Docker Desktop đang chạy
 - Chạy lệnh: 
docker compose down - Chạy lại: 
docker compose up --build 
 
- Lỗi: Invalid API key
 - Cách xử lý:
- Kiểm tra file .env đúng định dạng
 - Xác nhận API key còn hiệu lực
 - Kiểm tra kết nối internet
 
 
- Lỗi: Không tải được dữ liệu
 - Cách xử lý:
- Kiểm tra đường dẫn file/URL
 - Xác nhận file JSON đúng định dạng
 - Kiểm tra quyền truy cập thư mục
 
 
- Docker Desktop phải luôn chạy khi sử dụng ứng dụng
 - Không chia sẻ OpenAI API key với người khác
 - Nên tải dữ liệu trước khi bắt đầu chat
 - AI có thể mất vài giây để xử lý câu trả lời
 - Nếu ứng dụng bị lỗi, thử refresh trang web
 
Nếu gặp vấn đề:
- Chụp màn hình lỗi
 - Mô tả các bước dẫn đến lỗi
 - Tạo issue trên GitHub
 
- LangChain: https://python.langchain.com/docs/introduction/
- Agents: https://python.langchain.com/docs/tutorials/qa_chat_history/#tying-it-together-1
 - BM25: https://python.langchain.com/docs/integrations/retrievers/bm25/#create-a-new-retriever-with-documents
 - How to combine results from multiple retrievers: https://python.langchain.com/docs/how_to/ensemble_retriever/
 - Langchain Milvus: https://python.langchain.com/docs/integrations/vectorstores/milvus/#initialization
 - Recursive URL: https://python.langchain.com/docs/integrations/document_loaders/recursive_url/#overview
 - Langchain Streamlit: https://python.langchain.com/docs/integrations/callbacks/streamlit/#installation-and-setup
 - Langchain Streamlit: https://python.langchain.com/docs/integrations/providers/streamlit/#memory
 
 - Milvus Standalone: https://milvus.io/docs/v2.0.x/install_standalone-docker.md
 - Streamlit Documentation: https://docs.streamlit.io/
 - OpenAI API: https://platform.openai.com/docs