Các nút Gaia với kiến thức dài hạn
Ứng dụng LLM yêu cầu cả trí nhớ dài hạn và ngắn hạn. Trí nhớ dài hạn bao gồm kiến thức thực tế, sự kiện lịch sử, câu chuyện nền, v.v. Chúng được thêm vào ngữ cảnh tốt nhất dưới dạng các chương hoàn chỉnh thay vì các đoạn văn bản nhỏ để duy trì tính nhất quán bên trong của kiến thức.
GIẺ là một kỹ thuật quan trọng để đưa kiến thức theo ngữ cảnh vào ứng dụng LLM. Nó cải thiện độ chính xác và giảm ảo giác của LLM. Một ứng dụng RAG hiệu quả kết hợp bộ nhớ ngắn hạn (khối) thời gian thực và dành riêng cho người dùng với bộ nhớ dài hạn ổn định (chương) trong ngữ cảnh nhắc.
Vì bộ nhớ dài hạn của ứng dụng ổn định (thậm chí bất biến), chúng tôi đóng gói nó trong một cơ sở dữ liệu vector kết hợp chặt chẽ với LLM. Ứng dụng khách lắp ráp bộ nhớ ngắn hạn trong lời nhắc và được bổ sung bộ nhớ dài hạn trên máy chủ LLM. Chúng tôi gọi cách tiếp cận là "RAG phía máy chủ".
Độ dài ngữ cảnh dài được hỗ trợ bởi các LLM hiện đại đặc biệt phù hợp với kiến thức dài hạn được thể hiện tốt nhất bằng các chương văn bản.
Nút Gaia là dịch vụ LLM tương thích với OpenAI được xây dựng dựa trên kiến thức lâu dài ở phía máy chủ. Ứng dụng khách hàng có thể chỉ cần trò chuyện với nó hoặc cung cấp bộ nhớ thời gian thực/ngắn hạn vì LLM đã biết về miền hoặc nền tảng.
Ví dụ, nếu bạn hỏi ChatGPT câu hỏi Layer 2 là gì, câu trả lời là Layer 2 là một khái niệm từ mạng máy tính. Tuy nhiên, nếu bạn hỏi một người blockchain, họ trả lời rằng Lớp 2 là một cách để mở rộng quy mô mạng Ethereum ban đầu. Đó là sự khác biệt giữa LLM chung và LLM bổ sung kiến thức.
Chúng tôi sẽ đề cập đến việc chuẩn bị kiến thức bên ngoài và cách một LLM bổ sung kiến thức hoàn thành một cuộc trò chuyện. Nếu bạn đã tìm hiểu cách ứng dụng RAG hoạt động, hãy truy cập Xây dựng ứng dụng RAG với Gaia để bắt đầu xây dựng một ứng dụng.
- Tạo nhúng cho kiến thức của riêng bạn như bộ nhớ dài hạn.
- Vòng đời của truy vấn người dùng trên LLM bổ sung kiến thức.
Đối với giải pháp này, chúng tôi sẽ sử dụng
- một mô hình trò chuyện như Llama-3-8B để tạo phản hồi cho người dùng.
- Một mô hình nhúng văn bản như nomic-embed-text để tạo và truy xuất các embeddings.
- một Vector DB như Qdrant để lưu trữ nhúng.
Quy trình làm việc để tạo nhúng kiến thức
Bước đầu tiên là tạo nhúng cho cơ sở kiến thức của chúng ta và lưu trữ các nhúng trong một vector DB.
Trước hết, chúng tôi chia văn bản dài thành các phần (tức là các đoạn). Tất cả các LLM đều có độ dài ngữ cảnh tối đa. Mô hình không thể đọc ngữ cảnh nếu văn bản quá dài. Quy tắc được sử dụng nhiều nhất cho nút Gaia là đặt nội dung trong một chương lại với nhau. Hãy nhớ rằng, chèn một dòng trống giữa hai khối. Bạn cũng có thể sử dụng các thuật toán khác để chia nhỏ văn bản của mình.
Sau khi chia nhỏ tài liệu, chúng ta có thể chuyển đổi các khối này thành các nhúng tận dụng mô hình nhúng. Mô hình nhúng được đào tạo để tạo nhúng dựa trên văn bản và tìm kiếm các nhúng tương tự. Chúng ta sẽ sử dụng hàm sau trong quá trình truy vấn người dùng.
Ngoài ra, chúng ta sẽ cần một vector DB để lưu trữ các embeddings để chúng ta có thể truy xuất các embeddings này một cách nhanh chóng bất cứ lúc nào.
Trên một nút Gaia, chúng ta sẽ nhận được một ảnh chụp nhanh cơ sở dữ liệu với các nhúng để sử dụng cuối cùng. Kiểm tra cách tạo nhúng của bạn bằng công cụ web Gaia, từ tệp văn bản thuần túy và từ tệp đánh dấu.
Vòng đời của truy vấn người dùng trên LLM bổ sung kiến thức
Tiếp theo, chúng ta hãy tìm hiểu vòng đời của truy vấn người dùng trên LLM bổ sung kiến thức. Chúng ta sẽ lấy một Gaia Node với kiến thức Gaia làm ví dụ.
Đặt câu hỏi
Khi bạn gửi câu hỏi bằng ngôn ngữ con người đến nút, mô hình nhúng trước tiên sẽ chuyển đổi câu hỏi của bạn thành nhúng.
Truy xuất các nhúng tương tự
Sau đó, mô hình nhúng sẽ tìm kiếm tất cả các nhúng được lưu trữ trong Qdrant vector DB và truy xuất các nhúng tương tự như nhúng câu hỏi.
Trả lời truy vấn của người dùng
Nút nhúng sẽ trả về các nhúng đã truy xuất cho mô hình trò chuyện. Mô hình trò chuyện sẽ sử dụng các nhúng được truy xuất cộng với các câu hỏi đầu vào của bạn làm ngữ cảnh để trả lời các truy vấn của bạn cuối cùng.