OpenWebUI là một nền tảng truyền thông toàn diện bao gồm một bộ công cụ AI: OpenAI, Ollama, Automation1111, ComfyUI, Whisper API, đào tạo mô hình tùy chỉnh, RAG dựa trên Langchain với ChromaDB, tìm kiếm trên web/BM25 lai, v.v.
Mặc dù tất cả những điều này đã có sẵn một thời gian, được ghi lại và có thể triển khai bằng kiến thức lập trình Python, OpenWebUI mang đến cơ hội duy nhất để xây dựng các chatbot hấp dẫn và hữu ích ngay cả khi không có nhiều kinh nghiệm viết mã.
Trong bài viết này, chúng tôi sẽ chia sẻ hành trình tạo một chatbot hỗ trợ kỹ thuật được thiết kế để hỗ trợ nhóm tuyến đầu của chúng tôi bằng cách trả lời các câu hỏi của người dùng (và cuối cùng trở thành một phần trong nhóm của chúng tôi).
Thuê máy chủ GPU triển khai ngay lập tức hoặc máy chủ có cấu hình tùy chỉnh với thẻ NVIDIA Tesla A100 / H100 80Gb hoặc A5000 / A4000 cấp chuyên nghiệp. Máy chủ GPU với thẻ RTX4090 chơi game cũng có sẵn.
Chúng tôi có tài liệu người dùng được xây dựng bằng Tài liệu cho MkDocs. Điều này dẫn đến cấu trúc thư mục chứa các tệp .md có định dạng Markdown. Chúng tôi cũng đã triển khai thiết lập OpenWebUI và Ollama với mô hình hướng dẫn llama3-8b.
Mục đích của dự án:
Nỗ lực ban đầu của chúng tôi chỉ đơn giản là tải tài liệu hiện có ở định dạng Markdown ban đầu và sử dụng mô hình llama3 mà không có bất kỳ sửa đổi nào. Nói một cách nhẹ nhàng thì kết quả thật đáng thất vọng:
Đầu tiên: Tệp Markdown của chúng tôi chứa nhiều thành phần khác nhau như thẻ hình ảnh, chú thích cuối trang, khối mã, định dạng in đậm và in nghiêng, liên kết bên trong và bên ngoài, biểu tượng và thậm chí cả cấu trúc " ** " cho các nút. Tất cả "tiếng ồn" bổ sung này tạo ra vấn đề khi chia tài liệu thành nhiều phần để xử lý.
Thứ hai: Mô hình chuyển đổi câu/all-MiniLM-L6-v2 mà OpenWebUI sử dụng theo mặc định để biểu diễn các câu và đoạn văn trong không gian vectơ 384 chiều (cần thiết cho các tác vụ RAG như phân cụm và tìm kiếm ngữ nghĩa), chủ yếu được đào tạo bằng tiếng Anh . Chúng tôi muốn bot của mình cuối cùng cũng hỗ trợ các ngôn ngữ khác.
Thứ ba: Mặc dù llama3 là một mô hình hướng dẫn nhưng nó vẫn có thể được hướng vào các cuộc thảo luận ngoài chủ đề thay vì tập trung vào việc trả lời các truy vấn của người dùng. Model 70b có thể phù hợp hơn nhưng nó yêu cầu GPU có bộ nhớ video 40GB, trong khi llama3-8b có thể chạy trên GPU chỉ có 8GB.
Mặc dù vấn đề thứ ba có thể được giải quyết bằng cách tạo một mô hình tùy chỉnh (tác nhân theo thuật ngữ OpenAI), nhưng hai vấn đề đầu tiên yêu cầu các giải pháp quan trọng hơn. Đây là những gì chúng tôi đã nghĩ ra cho đến nay.
Trước tiên, chúng tôi sẽ chuyển đổi tài liệu sang định dạng phù hợp để tải vào hệ thống RAG (Thế hệ tăng cường truy xuất) của chúng tôi. Chúng tôi đã tạo một tập lệnh bash mạnh mẽ có tên ai_text_generator để tự động hóa quy trình này.
Tập lệnh duyệt qua tất cả các thư mục tài liệu và sử dụng các biểu thức chính quy trong sed, awk và Perl để xóa và thay thế đánh dấu Markdown mà RAG không cần. Cuối cùng, nó thêm một liên kết đến tài liệu gốc được lưu trữ tại https://hostkey.com/documentation ở cuối mỗi tài liệu.
Tập lệnh này chuẩn bị tỉ mỉ tài liệu của bạn để sử dụng với hệ thống RAG trong OpenWebUI. Dưới đây là tóm tắt từng bước về hành động của nó:
Sau khi chạy tập lệnh, thư mục ai_data sẽ chứa một tập hợp các tệp sẵn sàng để tải vào hệ thống RAG của OpenWebUI.
Tiếp theo, chúng ta cần thêm một mô hình mới vào OpenWebUI để làm việc với cơ sở dữ liệu vectơ tài liệu của chúng ta và Ollama LLM. Mô hình này phải hỗ trợ giọng điệu 'bạn' (ты) giản dị hơn, không chỉ bằng tiếng Anh. Chúng tôi dự định bổ sung thêm hỗ trợ cho các ngôn ngữ khác như tiếng Thổ Nhĩ Kỳ trong tương lai.
Để bắt đầu, chúng ta sẽ vào Bảng quản trị - Cài đặt - Tài liệu . Trong trường Mô hình nhúng , chúng tôi sẽ chọn bộ biến đổi câu/all-MiniLM-L12-v2 . Chúng tôi đã thử nghiệm tất cả các mô hình được đề xuất từ danh sách này (https://www.sbert.net/docs/sentence_transformer/pretraining_models.html) và nhận thấy mô hình này phù hợp nhất.
Chúng tôi sẽ nhấp vào biểu tượng tải xuống bên cạnh trường Mô hình nhúng để tải xuống và cài đặt nó.
Ngay bây giờ chúng ta sẽ thiết lập các thông số RAG:
• Top K = 10: Điều này có nghĩa là hệ thống sẽ xem xét top 10 tài liệu phù hợp nhất khi tạo phản hồi.
• Chunk Size = 1024: Tài liệu sẽ được chia thành từng chunk 1024 token để xử lý.
• Chunk Overlap = 100: Sẽ có sự chồng chéo 100 token giữa các chunk liên tiếp.
Sau đó, bạn có thể đi tới phần Không gian làm việc - Tài liệu và tải tài liệu của chúng tôi lên. Bạn nên cung cấp cho nó một thẻ bộ sưu tập cụ thể (trong trường hợp của chúng tôi là hostingkey_en) để giúp kết nối với mô hình hoặc yêu cầu API sau này dễ dàng hơn.
Tiếp theo, chúng ta sẽ tạo một mô hình tùy chỉnh cho chatbot của mình. Để thực hiện việc này, chúng ta sẽ quay lại Workspace - Models và nhấp vào biểu tượng dấu cộng.
Chúng tôi sẽ đặt tên cho chatbot của mình và chọn mô hình cơ sở (trong trường hợp của chúng tôi là llama3-mới nhất).
Sau đó, chúng tôi sẽ xác định Dấu nhắc hệ thống. Đây là những gì cho chatbot biết cách tự nhìn nhận và hành xử. Nó phác thảo vai trò, những hạn chế và kết quả mong muốn của chúng tôi.
Đây là Lời nhắc hệ thống mà chúng tôi đã thiết kế cho chatbot hỗ trợ kỹ thuật của mình:
You are HOSTKEY an IT Support Assistant Bot, focused on providing users with IT support based on the content from knowledge base. Stay in character and maintain your focus on IT support, avoiding unrelated activities such as creative writing or engaging in non-IT discussions.
If you cannot find relevant information in the knowledge base or if the user asks non-related questions that are not part of the knowledge base, do not attempt to answer and inform the user that you are unable to assist and print text "Visit https://hostkey.com/documentation for more information" at the end.
Provide short step-by-step instructions and external links
Provide a link to relevant doc page about user question started with 'See more information here:'Add text "Visit https://hostkey.com/documentation for more information" at the end.
Example of answer: " User: How can I cancel my server?
Bot:
You can cancel your server at any time. To do this, you need to access the Invapi control panel and follow these steps:
- Go to the "Billing" tab in the specific server management menu.
- Click the [Cancel service] button.
- Describe the reason for the cancellation and select its type.
- Click the [Confirm termination] button.
Please note that for immediate cancellation, we will not refund the hours of actual server usage, including the time to provision the server itself, order software, and process the cancellation request (up to 12 hours). The unused balance will be returned to your credit balance. Withdrawal of funds from the credit balance will be made in accordance with our refund policy.
You can cancel the service cancellation request in the Billing tab using the [Revoke] button.
Additionally, if you need to cancel a service that includes an OS/software license or has a customized/non-standard configuration, please contact us via a ticketing system for manual refund processing.
See more information here: https://hostkey.com/documentation/billing/services_cancellation/ "
Tiếp theo, chúng ta sẽ kết nối bộ sưu tập tài liệu cần thiết. Trong phần Kiến thức , chúng ta sẽ nhấp vào nút Chọn Tài liệu và chọn bộ sưu tập mà chúng ta cần dựa trên thẻ của nó.
Thuê máy chủ GPU triển khai ngay lập tức hoặc máy chủ có cấu hình tùy chỉnh với thẻ NVIDIA Tesla A100 / H100 80Gb hoặc A5000 / A4000 cấp chuyên nghiệp. Máy chủ GPU với thẻ RTX4090 chơi game cũng có sẵn.
Chúng tôi cũng cần định cấu hình một số tham số bổ sung ẩn trong tab Thông số nâng cao . Nhấp vào Hiển thị sẽ hiển thị các cài đặt này. Chúng tôi sẽ đặt Nhiệt độ thành 0,3 và Độ dài bối cảnh thành 4089.
Cuối cùng, chúng tôi nhấp vào Lưu & Cập nhật để tạo mô hình chatbot hỗ trợ kỹ thuật tùy chỉnh.
Và bạn có nó rồi đấy! Chatbot của chúng tôi sẵn sàng hoạt động và xử lý các yêu cầu của người dùng. Đó là lịch sự, kiên nhẫn và sẵn sàng 24/7.
Dưới đây là một số lời khuyên quan trọng cần ghi nhớ:
Bây giờ chúng tôi đã thử nghiệm chatbot, bước tiếp theo là tích hợp nó vào hệ thống trò chuyện hiện có của công ty chúng tôi. OpenWebUI cung cấp API và có thể hoạt động như một proxy cho Ollama, bổ sung thêm các tính năng độc đáo của riêng nó. Tuy nhiên, tài liệu vẫn còn thiếu, khiến việc tích hợp gặp một chút thách thức.
Bằng cách kiểm tra mã và lịch sử cam kết, chúng tôi đã thu thập được một số thông tin chi tiết về cách cấu trúc các yêu cầu API, nhưng nó vẫn chưa hoạt động hoàn toàn như mong đợi. Chúng tôi đã cố gắng gọi mô hình tùy chỉnh nhưng không có chức năng RAG.
Chúng tôi háo hức chờ đợi các tính năng đã hứa của nhà phát triển trong các bản phát hành sắp tới, bao gồm RAG, tìm kiếm trên web cũng như các ví dụ và mô tả chi tiết.
Quá trình thử nghiệm cũng tiết lộ một số điểm mâu thuẫn và dư thừa trong tài liệu của chúng tôi. Điều này mang đến cơ hội vừa nâng cao hiệu suất của chatbot vừa cải thiện tính rõ ràng và chính xác tổng thể của tài liệu của chúng tôi.
Thuê máy chủ GPU triển khai ngay lập tức hoặc máy chủ có cấu hình tùy chỉnh với thẻ NVIDIA Tesla A100 / H100 80Gb hoặc A5000 / A4000 cấp chuyên nghiệp. Máy chủ GPU với thẻ RTX4090 chơi game cũng có sẵn.