- 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 src
và 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