Giới thiệu
Mỗi dự án lớn đều bắt đầu từ một tia sáng tò mò. Đối với chúng tôi, mọi thứ bắt đầu với câu hỏi: "Chúng ta có thể tạo ra AI mạnh mẽ trên thiết bị dễ dàng và tiếp cận như việc duyệt web không?"
Hãy thử nghiệm ngay: Demo Trực Tiếp
Chúng tôi đã khám phá những công cụ tuyệt vời như Ollama và LM Studio. Sức mạnh của việc chạy các mô hình lớn tại chỗ thật ấn tượng, nhưng nó đi kèm với một cái giá: sự phức tạp của các terminal, trình cài đặt và cấu hình. Điều này hoàn toàn khác biệt so với trải nghiệm liền mạch của các công cụ AI dựa trên web.
Chúng tôi nhận thấy một khoảng trống và một cơ hội. Đây là câu chuyện về cách chúng tôi xây dựng Gemma Web, một không gian làm việc AI hoàn toàn riêng tư, chạy trên thiết bị của bạn và sống hoàn toàn trong trình duyệt.
Cảm hứng từ Figma
Suy nghĩ dẫn dắt chúng tôi là: nếu một ứng dụng đồ họa nặng như Figma có thể chạy hoàn toàn ở phía khách hàng, thì điều gì ngăn cản chúng tôi làm điều tương tự với một mô hình ngôn ngữ? Điều này đã dẫn chúng tôi đến con đường của WebAssembly (Wasm), công nghệ sẽ trở thành nền tảng của dự án của chúng tôi.
Hành trình tìm kiếm công cụ phù hợp
Cuộc khám phá ban đầu của chúng tôi vào các mô-đun AI JavaScript hiện có là một trải nghiệm hỗn hợp. Mặc dù đầy hứa hẹn, nhưng chúng thường cảm thấy chậm và không thể cung cấp trải nghiệm không độ trễ mà chúng tôi đang hướng tới. Chúng tôi biết rằng mình cần một cái gì đó có thể tận dụng phần cứng một cách trực tiếp hơn.
Bước đột phá đến khi chúng tôi tìm thấy hai công nghệ quan trọng từ Google:
- Gemma Models: Một gia đình mô hình mở mới được tối ưu hóa đặc biệt cho hiệu suất chạy trên thiết bị.
- MediaPipe LLM Task API: Một thư viện (khi đó đang trong giai đoạn preview) được thiết kế để chạy các mô hình này một cách hiệu quả bằng cách sử dụng backend Wasm.
Chúng tôi đã tìm thấy con đường phát triển của mình.
Kiến trúc kỹ thuật của chúng tôi
Dưới đây là một phân tích về các thành phần cốt lõi mà chúng tôi đã phát triển:
1. Động cơ suy diễn trên thiết bị
Trái tim của ứng dụng là một động cơ suy diễn không có máy chủ, ưu tiên chạy cục bộ. Chúng tôi đã sử dụng WebAssembly và MediaPipe LLM Task API để triển khai các mô hình Gemma của Google trực tiếp trong trình duyệt. Cách tiếp cận này cho phép chúng tôi đạt được suy diễn gần như không độ trễ với 100% quyền riêng tư dữ liệu và khả năng hoạt động ngoại tuyến hoàn toàn.
2. Quy trình RAG phía khách hàng
Để AI thực sự hữu ích, nó cần hiểu bối cảnh cụ thể của người dùng. Chúng tôi đã triển khai một quy trình Retrieval-Augmented Generation (RAG) hoàn chỉnh chạy hoàn toàn ở phía khách hàng. Để tránh làm đông đúc ứng dụng trong khi xử lý các tệp lớn, chúng tôi đã tận dụng một Web Worker để xử lý công việc nặng. Worker này xử lý các PDF và TXT được người dùng tải lên một cách bất đồng bộ, chuyển đổi chúng thành các vector embeddings bằng cách sử dụng TensorFlow.js cho các cuộc hội thoại có ý thức về bối cảnh.
3. Lưu trữ cục bộ mạnh mẽ với IndexedDB
Để đạt được chức năng ngoại tuyến thực sự, chúng tôi cần một cách để lưu trữ mọi thứ cục bộ. Chúng tôi đã thiết kế một giải pháp mạnh mẽ ở phía khách hàng sử dụng IndexedDB. Điều này cho phép chúng tôi lưu trữ các mô hình AI nhiều gigabyte, lịch sử cuộc hội thoại và các embedding tài liệu. Lưu trữ mạnh mẽ này cũng là điều cho phép Gemma Web hoạt động như một Progressive Web App (PWA) liền mạch, có thể cài đặt.
Kết quả: Một loại không gian làm việc AI mới
Cao trào của hành trình này là Gemma Web, một công cụ mà chúng tôi tin rằng đại diện cho một bước tiến tới tương lai của AI cá nhân, riêng tư.
Dự án này là một chuyến đi sâu vào tương lai của các ứng dụng gốc trên web. Nó đã dạy chúng tôi rằng trình duyệt hoàn toàn có khả năng xử lý các tác vụ phức tạp và nặng về tính toán mà trước đây chỉ dành cho máy chủ.
Chúng tôi rất muốn bạn kiểm tra và chia sẻ ý kiến của bạn trong phần bình luận bên dưới! Cảm ơn bạn đã đọc.